1、关于
介绍
Rclone 是一个开源、多线程、命令行界面的电脑程序,可用于管理云存储。 其功能包括文件同步、文档传输、加密、缓存和挂载。
Rclone支持包括 Amazon S3 和 Google 云端硬盘在内的共五十多种云存储服务。
——Wikipedia
详细介绍可以查看 Rclone 官网:https://rclone.org/。
功能
Rclone 支持以下功能:
- 将文件备份(和加密)到云存储
- 从云存储恢复(和解密)文件
- 将云数据镜像到其他云服务或本地
- 将数据迁移到云端,或在云存储供应商之间迁移
- 将多个、加密、缓存或多样化的云存储挂载为磁盘
- 使用
lsf
、ljson
、size
、ncdu
分析和说明云存储上保存的数据 - 联合文件系统一起呈现多个本地和/或云文件系统作为一个
特性
Rclone 具有以下特性:
- 接送服务
- 始终检查 MD5、SHA1 哈希值以确保文件完整性
- 时间戳保留在文件中
- 可以随时重新启动操作
- 可以进出网络,例如两个不同的云提供商
- 可以使用多线程下载到本地磁盘
- 将新文件或更改的文件复制到云存储
- 同步(一种方式)使目录相同
- 验证后将文件移动到云存储删除本地
- 检查哈希和丢失/额外的文件
- 将您的云存储挂载为网络磁盘
- 通过 HTTP / WebDav / FTP / SFTP / DLNA 服务本地或远程文件
- 实验性基于 Web 的 GUI
2、安装
Rclone 是单文件程序,可以直接下载最新 Release,设置环境变量后即可使用。
1 | curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip unzip rclone-current-linux-amd64.zip cd rclone-*-linux-amd64 sudo cp rclone /usr/bin/ sudo chown root:root /usr/bin/rclone sudo chmod 755 /usr/bin/rclone |
如果服务器是 ARM 或其它架构,可以自行查询官网并替换下载链接。
完成后执行:
1 | rclone version |
可以查看到版本号等信息即安装成功:
1 | rclone v1.54.1 - os/arch: linux/amd64 - go version: go1.15.8 |
3、配置
配置有两种方法:
- 编辑
/root/.config/rclone/rclone.conf
,追加新的内容。 - 执行
rclone config
,使用交互式配置。
交互式配置非常简单易用,不过如果没有特殊需求注意跳过长长的“高级设置(Advanced options)”,这里面的配置可能会多达几十项,配置错误可能导致无法使用,一般保持默认就好。
配置完成后可以直接复制配置文件,在另一台服务器上就可以立即使用。
4、命令行操作
4.1、基本语法
1 | # 本地到云端 rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数] # 云端到本地 rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数] # 云端到云端 rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数] |
4.2、常用指令
使用 rclone --help
可查看所有命令,这里列出常用命令,其他的命令参考官方文档。
命令 | 说明 |
---|---|
rclone copy | 复制 |
rclone move | 移动;如果要在移动后删除空源目录,加上 --delete-empty-src-dirs 参数 |
rclone mount | 挂载 |
rclone sync | (单向)同步:将源目录同步到目标目录,只更改目标目录 |
rclone size | 查看云端文件占用大小 |
rclone delete | 删除路径下的文件内容 |
rclone purge | 删除路径及其所有文件内容 |
rclone mkdir | 创建目录 |
rclone rmdir | 删除目录 |
rclone rmdirs | 删除指定环境下的空目录;如果加上 --leave-root 参数,则不会删除根目录 |
rclone check | 检查源和目的地址数据是否匹配 |
rclone ls | 列出指定路径下的所有的文件以及文件大小和路径 |
rclone lsl | 比上面多一个显示上传时间 |
rclone lsd | 列出指定路径下的目录 |
rclone lsf | 列出指定路径下的目录和文件 |
4.3、常用参数
运行
命令 | 说明 |
---|---|
-n = --dry-run | 测试运行,查看 Rclone 在实际运行中会进行哪些操作 |
-P = --progress | 显示实时传输进度,500ms 刷新一次(如不指定默认1分钟刷新一次) |
--cache-chunk-size 5M | 块的大小,默认 5M,越大上传越快,占用内存越多,太大可能会导致进程中断 |
--onedrive-chunk-size 100M | 提高 OneDrive 上传速度,适用于大带宽服务器 |
--drive-chunk-size 64M | 提高 Google Drive 上传速度,适用于大带宽服务器 |
--cache-chunk-total-size SizeSuffix | 块可以在本地磁盘上占用的总大小 |
--transfers=N | 并行文件数,默认为4。在比较小的内存的服务器上建议调小这个参数,比如 128M 的小鸡上使用建议设置为1。 |
--config <path> | 指定<path> 为配置文件路径 |
--ignore-errors | 跳过错误 |
--size-only | 根据文件大小校验,不校验哈希值 |
--drive-server-side-across-configs | 服务端对服务端传输 |
日志
rclone 有 4 个级别的日志记录, ERROR
, NOTICE
, INFO
和 DEBUG
。默认情况下,rclone 将生成 ERROR
和 NOTICE
级别消息。
参数 | 说明 |
---|---|
-q | rclone 将仅生成 ERROR 消息 |
-v | rclone 将生成 ERROR,NOTICE 和 INFO 消息,推荐此项 |
-vv | rclone 将生成 ERROR,NOTICE,INFO 和 DEBUG 消息 |
--log-level LEVEL | 标志控制日志级别 |
过滤
同步时有些文件不需要同步,可以使用过滤规则排除。
命令 | 说明 |
---|---|
--exclude-from | 排除文件或目录列表来自某个文件指定 |
--include-from | 包含文件或目录来自某个文件指定 |
--filter-from | 文件过滤规则来自某个文件指定 |
--exclude | 排除文件或目录 |
--include | 包含文件或目录 |
--filter | 文件过滤规则。 包含规则以 + 开头,排除规则以- 开头 |
目录过滤
目录过滤需要在目录名称后面加上 /
,否则会被当做文件进行匹配。以 /
开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。
命令 | 说明 |
---|---|
--exclude ".git/" | 排除所有目录下的 .git 目录 |
--exclude "/.git/" | 只排除根目录下的 .git 目录 |
--exclude "{Video,Software}/" | 排除所有目录下的 Video 和 Software 目录 |
--exclude "/{Video,Software}/" | 只排除根目录下的 Video 和 Software 目录 |
--include "/{Video,Software}/**" | 仅包含根目录下的 Video 和 Software 目录的所有内容 |
大小过滤
默认大小单位为 kBytes
,但可以使用 k
, M
或 G
后缀。
命令 | 说明 |
---|---|
--min-size | 过滤小于指定大小的文件。比如 --min-size 50 表示不会传输小于 50k 的文件。 |
--max-size | 过滤大于指定大小的文件。比如 --max-size 1G 表示不会传输大于 1G 的文件。 |
使用配置文件过滤
命令 | 说明 |
---|---|
--exclude-from <规则文件> | 从文件添加包含规则 |
--include-from <规则文件> | 从文件添加删除规则 |
--filter-from <规则文件> | 从文件添加包含 / 排除规则。比如 --filter-from filter-file.txt |
示例:
1 | - secret*.jpg + *.jpg + *.png + file2.avi - /dir/Trash/** + /dir/** - * |
4.4、环境变量
Rclone 中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除 --
前缀,更改 -
为 _
,大写并添加前缀 RCLONE_
。
环境变量的优先级低于命令行选项,即通过命令行追加的选项会覆盖环境变量的设置。
命令 | 说明 |
---|---|
RCLONE_CONFIG | 自定义配置文件路径 |
RCLONE_CONFIG_PASS | 若 Rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件 |
RCLONE_RETRIES | 上传失败重试次数,默认 3 次 |
RCLONE_RETRIES_SLEEP | 上传失败重试等待时间,默认禁用,单位s 、m 、h 分别代表秒、分钟、小时 |
CLONE_TRANSFERS | 并行上传文件数 |
RCLONE_CACHE_CHUNK_SIZE | 块的大小 |
RCLONE_CACHE_CHUNK_TOTAL_SIZE | 块可以在本地磁盘上占用的总大小 |
RCLONE_IGNORE_ERRORS=true | 跳过错误 |
5、挂载
当时捣鼓 Rclone 挂载,好多文章给出的指令都是不能用的,或者只能挂载 1 个盘,挂载第二个就报错。
格式:
1 | rclone mount <云端名称>:<云端目录> <本地目录> |
例如挂载 BackBlaze 的test-bucket
到/mnt/b2/tb/
,可以执行:
1 | mkdir /mnt/b2/tb/ # 只能挂载于已存在且为空的目录下 rclone mount backblaze:/test-bucket /mnt/b2/tb/ --allow-other --allow-non-empty --vfs-cache-mode writes & |
如果没有报错就代表挂载成功,可以执行df -h
查看已挂载的文件系统。
该指令在 Windows 上通用,不过会提示有无效参数,不影响使用。
如果需要卸载,直接执行:
1 | umount /mnt/b2/tb # 改成需要卸载的目录 |
可能会提示:
1 | umount: /mnt/b2/tb: target is busy |
这是因为有进程正在占用此目录,可以尝试:
1 | umount -f /mnt/b2/tb # 强制卸载 fuser -cu /mnt/usb # 查看挂载文件进程 fuser -mv /dev/sdb # 或者查看挂载点进程 fuser -ck /mnt/usb # 结束进程 fuser -mk /dev/sdb # 使用挂载点结束进程 umount -l /mnt/usb # 自动结束进程并卸载 |
Rclone 使用教程
评论