3个不稳定版本

0.2.1 2023年12月15日
0.2.0 2023年5月13日
0.1.0 2022年5月27日

#670 in 网络编程

Download history 76/week @ 2024-04-22 121/week @ 2024-04-29 66/week @ 2024-05-06 32/week @ 2024-05-13 50/week @ 2024-05-20 36/week @ 2024-05-27 40/week @ 2024-06-03 24/week @ 2024-06-10 28/week @ 2024-06-17 32/week @ 2024-06-24 4/week @ 2024-07-01 42/week @ 2024-07-08 105/week @ 2024-07-15 100/week @ 2024-07-22 30/week @ 2024-07-29 20/week @ 2024-08-05

每月257次下载
用于 2 crates

MIT 和可能 GPL-3.0

59KB
1K SLoC

remotefs SMB

变更日志 · 开始使用 · 文档

~ Remotefs SMB客户端 ~

@veeso 开发

当前版本:0.2.1 (15/12/2023)

License-MIT Repo stars Downloads counter Latest version Ko-fi

Linux CI MacOS CI Windows CI Coveralls Docs


关于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并且感谢我所做的工作,请考虑小小的捐赠 🥳

您可以通过以下平台之一进行捐赠

ko-fi PayPal


贡献和问题 🤝🏻

欢迎贡献、错误报告、新功能和建议!😉 如果您有任何问题或疑虑,或者您想建议一个新功能,或者只是想改进remotefs,请随时打开一个issue或PR。

请遵循我们的贡献指南


变更日志 ⏳

查看remotefs的变更日志 这里


由 💪

remotefs-smb由以下出色的项目提供支持


许可证 📃

remotefs-smb根据MIT许可证授权。

您可以在这里阅读整个许可证。

依赖项

~1–11MB
~103K SLoC