rclone最新官方版本是1.69.0版,linux可以直接用下面的命令一键安装
curl https://rclone.org/install.sh | sudo bash
概述
Rclone 是一个命令行程序,用于管理云存储上的文件。它是云供应商的网络存储接口的一个功能丰富的替代品。超过 40 种云存储产品支持 rclone,包括 S3 对象存储、企业和消费者文件存储服务以及标准传输协议。
用户称 Rclone 为“云存储的瑞士军刀”、 “无异于魔法的科技”。
Rclone 具有强大的云等同于 unix 命令 rsync、cp、mv、mount、ls、ncdu、tree、rm 和 cat。Rclone 熟悉的语法包括 shell 管道支持和--dry-run保护。它在命令行、脚本或通过其API 使用。
Rclone多种文件传输协议,支持SFTP,HTTP,WebDAV,FTP和DLNA。Rclone是一个成熟的开源软件,最初受rsync的启发并采用Golang编写。其文档和社区也都非常好,提供广泛和友好的使用用例。
功能
Rclone支持但不仅限于下面列出功能:
将文件备份(和加密)到云存储
从云存储恢复(和解密)文件
将云数据镜像到其他云服务或本地
将数据迁移到云端,或在云存储供应商之间迁移
将多个、加密、缓存或多样化的云存储挂载为磁盘
使用lsf、ljson、size、ncdu分析和说明云存储上保存的数据
联合文件系统一起呈现多个本地和/或云文件系统作为一个
特性
接送服务
始终检查 MD5、SHA1 哈希值以确保文件完整性
时间戳保留在文件中
可以随时重新启动操作
可以进出网络,例如两个不同的云提供商
可以使用多线程下载到本地磁盘
将新文件或更改的文件复制到云存储
同步(一种方式)使目录相同
验证后将文件移动到云存储删除本地
检查哈希和丢失/额外的文件
将您的云存储挂载为网络磁盘
通过HTTP / WebDav / FTP / SFTP / DLNA服务本地或远程文件
实验性基于 Web 的 GUI
使用
官方文档写得非常详细,这里主要用写几个应用场景看如何使用。
直接执行 rclone version 可以查看到版本号即安装成功。
配置
配置可以直接添加配置文件的方式或者通过进入交互式配置会话命令一步步的完成配置。
默认配置完成的后配置文件都保存在:/root/.config/rclone/rclone.conf 目录下。
语法
# 本地到网盘
rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数]
# 网盘到本地
rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数]
# 网盘到网盘
rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数]
# [参数]为可选项
命令列表
使用 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 | 列出指定路径下的目录和文件 |
常用参数
命令 | 说明 |
---|---|
-n = --dry-run | 测试运行,查看 rclone 在实际运行中会进行哪些操作 |
-P = --progress | 显示实时传输进度,500 ms刷新一次,否则默认1分钟刷新一次 |
--cache-chunk-size 5M | 块的大小,默认 5M 越大上传越快,占用内存越多,太大可能会导致进程中断 |
--onedrive-chunk-size 100M | 提高 OneDrive 上传速度适用于G口宽带服务器 |
--drive-chunk-size 64M | 提高 Google Drive 上传速度适用于G口宽带服务器 |
--cache-chunk-total-size SizeSuffix | 块可以在本地磁盘上占用的总大小 |
--transfers=N | 并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如 128M 的小鸡上使用建议设置为1。 |
--config string | 指定配置文件路径,string为配置文件路径 |
--ignore-errors | 跳过错误 |
--size-only | 根据文件大小校验,不校验hash |
--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 ".bak",表示排除所有 .bak 结尾的文件,也可以写作 --filter "- .bak"
比如 --include ".{png,jpg}",包含所有 png 和 jpg 文件,排除其他文件,也可以写作 --filter "+ .{png,jpg}"
--delete-excluded 删除排除的文件。需配合过滤参数使用,否则无效。
目录过滤
目录过滤需要在目录名称后面加上 /,否则会被当做文件进行匹配。以 / 开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。
--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。
filter-file.txt 示例:
- secret*.jpg
+ *.jpg
+ *.png
+ file2.avi
- /dir/Trash/**
+ /dir/**
- *
最佳实践
备份本地 /data/file 目录到腾讯云cos存储中,并设置定时任务每晚自动同步,这样可以达到定时备份重要文件上云的效果。
1)目录 /data/file 下创建 excludes.txt ,里面填写需要排除的文件列表。
logs/** # 排除logs下所有文件
*.bak # 排除.bak结尾的文件
*.zip # 排除.zip结尾的文件
2)直接编写 rclone 命令,测试执行是否同步。
rclone sync -v /data/file 123pan:/www/backup --exclude-from '/data/file/excludes.txt' >> /root/rclone.log 2>&1
手动执行一把,然后查看 tail -f /root/rclone.log 是否输出日志了,只要没报错则成功。
3) 配置定时任务,每天自动执行
执行 crontab -e # 打开定时任务列表,跳到最后新起一行添加步骤2.成功的命令并保存,内容如下:(表示每晚3点30分进行同步)
30 4 * * * rclone sync -v /data/file 123pan:/www/backup --exclude-from '/data/file/excludes.txt' >> /root/rclone.log 2>&1
执行systemctl restart cron.service 重启定时任务生效
达到执行时间后检查 /root/rclone.log 下的日志保证没问题。
总结
使用 Rclone 可以轻松实现备份同步文件到各大网盘,简化了备份方案,也可以用来迁移2个不同的网盘程序文件,甚至可以直接挂载网盘到本地用来扩充磁盘食用,更多的食用请详细参考官方文档。
评论