3个不稳定版本
0.2.1 | 2023年12月15日 |
---|---|
0.2.0 | 2023年5月13日 |
0.1.0 | 2022年5月27日 |
#670 in 网络编程
每月257次下载
用于 2 crates
59KB
1K SLoC
remotefs SMB
~ Remotefs SMB客户端 ~
由 @veeso 开发
当前版本:0.2.1 (15/12/2023)
关于remotefs-smb ☁️
remotefs-smb是remotefs的客户端实现,提供对SMB协议的支持。
开始 🚀
首先,将remotefs-smb
添加到您的项目依赖项
remotefs-smb = "^0.2"
以下功能受支持
find
: 启用客户端上的find()
方法(默认启用)no-log
: 禁用日志。默认情况下,此库将通过log
crate进行日志记录。
安装依赖项(仅限基于UNIX的系统)
remotefs-smb依赖于pavao
,它需要libsmbclient
库,可以使用以下说明进行安装
MacOS 🍎
使用brew安装samba
brew install samba
基于Debian的系统 🐧
使用apt安装libsmbclient
apt install -y libsmbclient-dev libsmbclient
⚠️ 仅在构建应用程序的机器上需要libsmbclient-dev
基于RedHat的系统 🐧
使用dnf安装libsmbclient
dnf install libsmbclient-devel libsmbclient
⚠️ 仅在构建应用程序的机器上需要libsmbclient-devel
从源码构建 📁
从源码安装libsmbclient
wget -O samba.tar.gz https://github.com/samba-team/samba/archive/refs/tags/samba-4.16.1.tar.gz
mkdir -p samba/
tar xzvf samba.tar.gz -C samba/ --strip-components=1
rm samba.tar.gz
cd samba/
./configure
make
make install
cd ..
rm -rf samba/
客户端实现
UNIX客户端
// import remotefs trait and client
use remotefs::{RemoteFs, fs::UnixPex};
use remotefs_smb::{SmbFs, SmbOptions, SmbCredentials};
use std::path::Path;
let mut client = SmbFs::try_new(
SmbCredentials::default()
.server("smb://127.0.0.1:3445")
.share("/temp")
.username("test")
.password("test")
.workgroup("pavao"),
SmbOptions::default()
.case_sensitive(true)
.one_share_per_server(true),
)
.unwrap();
// connect
assert!(client.connect().is_ok());
// get working directory
println!("Wrkdir: {}", client.pwd().ok().unwrap().display());
// make directory
assert!(client.create_dir(Path::new("/cargo"), UnixPex::from(0o755)).is_ok());
// change working directory
assert!(client.change_dir(Path::new("/cargo")).is_ok());
// disconnect
assert!(client.disconnect().is_ok());
Windows客户端
// import remotefs trait and client
use remotefs::{RemoteFs, fs::UnixPex};
use remotefs_smb::{SmbFs, SmbCredentials};
use std::path::Path;
let mut client = SmbFs::new(
SmbCredentials::new("localhost:3445", "temp")
.username("test")
.password("test")
);
// connect
assert!(client.connect().is_ok());
// get working directory
println!("Wrkdir: {}", client.pwd().ok().unwrap().display());
// make directory
assert!(client.create_dir(Path::new("\\cargo"), UnixPex::from(0o755)).is_ok());
// change working directory
assert!(client.change_dir(Path::new("\\cargo")).is_ok());
// disconnect
assert!(client.disconnect().is_ok());
客户端兼容性表 ✔️
以下表格说明了客户端和远程文件系统trait方法的兼容性。
注意:connect()
、disconnect()
和 is_connected()
必须始终受支持,因此在表中省略。
客户端/方法 | 支持(UNIX) | 支持(Win) |
---|---|---|
append_file | 是 | 是 |
append | 否 | 是 |
change_dir | 是 | 是 |
copy | 否 | 是 |
create_dir | 是 | 是 |
create_file | 是 | 是 |
create | 否 | 是 |
exec | 否 | 否 |
exists | 是 | 是 |
list_dir | 是 | 是 |
mov | 是 | 是 |
open_file | 是 | 是 |
open | 否 | 是 |
pwd | 是 | 是 |
remove_dir_all | 是 | 是 |
remove_dir | 是 | 是 |
remove_file | 是 | 是 |
setstat | 否 | 是 |
stat | 是 | 是 |
symlink | 是 | 是 |
支持开发者 ☕
如果您喜欢remotefs-smb并且感谢我所做的工作,请考虑小小的捐赠 🥳
您可以通过以下平台之一进行捐赠
贡献和问题 🤝🏻
欢迎贡献、错误报告、新功能和建议!😉 如果您有任何问题或疑虑,或者您想建议一个新功能,或者只是想改进remotefs,请随时打开一个issue或PR。
请遵循我们的贡献指南
变更日志 ⏳
查看remotefs的变更日志 这里
由 💪
remotefs-smb由以下出色的项目提供支持
许可证 📃
remotefs-smb根据MIT许可证授权。
您可以在这里阅读整个许可证。
依赖项
~1–11MB
~103K SLoC