使用 Rclone 备份文件到云存储,或挂载云存储的文件到本地

Rclone 能挂载任何本地文件、云存储或虚拟文件系统,为 Windows、macOS、linux 和 Fre…

Rclone 是一个用于管理云存储上文件的命令行程序。它 是云供应商 Web 存储的功能丰富的替代方案 接口。支持 70 多种云存储产品, rclone 包括 S3 对象存储、业务和消费者文件存储 服务,以及标准传输协议。

Rclone 能挂载任何本地文件、云存储或虚拟文件系统,为 Windows、macOS、linux 和 FreeBSD上的应用,提供以本地文件系统方式的访问,也可通过 SFTP、HTTP、WebDAV、FTP、S3、restic’s REST API、NFS和 DLNA服务方式,提供访问。

作为 Client 快速上手

文件备份与本地挂载,只需要使用Rclone的客户端功能,也是Rclone的核心功能。Rclone是CLI工具,解压就可以使用,下载:Rclone v1.71.0 Windows X64最新/其他版本

  • GUI工具 RcloneBrowser 可以不需要管理员身份,但只实现了Rclone的部分功能。
  • WinFSP 需要以管理员权限安装,用于实现自带本地磁盘挂载,不需挂载就不需要安装。

云存储连接的配置

每个云盘、每个Rclone版本,配置步骤与内容都会有差异,不能照搬。具体可看官方的配置步骤,本文中如无特殊说明,都是在Windows CMD中执行。

  • 以交互方式的配置向导:rclone config
  • 查看当前配置文件的完整路径:rclone config file,默认为%APPDATA%\rclone\rclone.conf
  • 查看当前配置文件的内容:rclone config show
  • 验证连接配置,查看云存储的目录/文件:rclone lsd|ls {remoteName}
    • 注意:{remoteName}是区分大小写的,使用rclone config查看。

WebDav的配置步骤参考

使用文本编辑器打开配置文件%APPDATA%\rclone\rclone.conf

查看远程的目录,验证连接配置文件:rclone lsd dav.t725.cn

OneDrive的配置步骤

忘记截图了,后面创建个人client_id时,再补上。

  1. 先运行rclone authorize "onedrive" ,会跳转到oneDrive官方授权网页,成功后得到一个1小时后失效的token,样式如下:
{"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2018-08-26T22:39:52.486512262+08:00"}
  1. 再运行rclone config

注意:所有 rclone 用户都会共享,rclone 应用的默认的客户端 ID 和密钥。可考虑创建自己的client_id,具体方法见官方文档

自托管 S3 的配置步骤

rclone 常用全局参数

执行 rclone help flags|more 查看所有全局参数。

参数描述
--log-file string日志记录到文件
--log-level LogLevel日志记录等级:DEBUG|INFO|NOTICE|ERROR (default NOTICE)
-n/--dry-run试运行,不进行任何更改操作。
-P/--progress显示实时传输进度
-v/--verbose显示更多信息
--exclude stringArray排除特定文件或目录。 files matching pattern
--include stringArray包含特定文件或目录。 files matching pattern
--filter-from file.txt从file.txt文件中获取包含/排除规则,来代替–include/–exclude
--ignore-case默认情况下,rclone 过滤模式区分大小写。
–ignore-case 标志会使命令行上的所有过滤模式不区分大小写。

--exclude/--include的书写

--include "/{ConfigBak,Documents,Sysinternals}/**"

解读:包含根目录下 /ConfigBak/、/Documents/、/Sysinternals/的子目录与文件

可使用匹配字符:

/	/开头限制为根目录,无/开头为所有目录或子目录,
*	匹配任意非分隔符(/)字符序列
**	匹配任意字符序列,包括 / 分隔符
?	匹配任意单个非分隔符(/)字符
{ pattern-list }	模式备选项:逗号分隔(无空格)的模式
{{ regexp }}	要匹配的正则表达式

--filter-from file.txt 中 file.txt的内容

  • +/-为包含/排除,! 会清除现有规则(在!行之前规则,都无效)。
  • 一行一条记录,规则会按照定义的顺序处理。
  • 以 # 或 ; 开头的行将被忽略,可用于编写注释,不支持行内注释。
# 一个示例过滤规则文件 filter-file.txt
- secret*.jpg
+ *.jpg
+ *.png
+ file2.avi
- /dir/tmp/** # 警告!此文本将被视为路径的一部分。
- /dir/Trash/**
+ /dir/**
# 排除其他所有内容
- *

解读:

  • 包含所有目录下的jpg/png文件、file2.avi文件,但排除secret开头的jpg文件
  • 包含根目录中,dir文件夹下的所有文件与子目录,但里面的子目录tmp、Trash是被排除的,含子子目录。
  • 除了符合上面的内容外,都被排除。

rclone 常用备份命令

注意:{remoteName}是区分大小写的,使用 rclone config 查看;否则容易报错:2025/09/06 19:46:07 CRITICAL: Failed to create file system for "t725:": didn't find section in config file ("t725")

显示远端path下的文件/目录

rclone lsl/lsd {remoteName}:path --max-depth 1

/path 也可以,支持子目录;注意:lsd不会递归子目录,而lsl会;通过–max-depth N 可以限制递归子目录,或者lsd的N默认为1,而lsl默认-1。

sync:同步(含增删改),或者理解为从左边镜像到右边

可选参数:–create-empty-src-dirs 创建空目录,默认会忽略。

  • 同步本地目录或文件,到远端path目录。比如本机日常使用 rclone sync <LOCAL_PATH> {remoteName}:path
  • 同步远端path目录,到本地。比如本机首次使用 rclone sync {remoteName}:path <LOCAL_PATH>
  • 同步远端A path目录,到远端B path目录 rclone sync {remoteNameA}:pathA {remoteNameB}:pathB

copy:拷贝(不会删除,且跳过相同的文件)

rclone copy <LOCAL_PATH> {remoteName}:path

同样也支持本地到远端,远端到本地,远端到远端

创建mkdir /删除delete /touch 目录或文件:

rclone mkdir {remoteName}:path

rclone delete {remoteName}:path

rclone touch {remoteName}:path/filename.txt

不仅是远程的目录与文件,也支持本地的目录与文件;touch是不存在新建0字节的文件,存在就是更新修改日期与时间

检查文件或目录(会递归)一致性

rclone check <source> <destination> [flags]

默认是修改时间与大小。–checksum:通过校验和验证文件一致性,适用于支持校验和的存储。–one-way:仅检查源文件是否在目标中存在,而不检查目标中的额外文件。

rclone 挂载为本地目录命令

rclone mount {remoteName}:path /path/to/mountpoint [flags]

  1. 配合 RunHiddenConsole.exe 使用,rclone mount 会占用 cmd.exe 窗口不关闭。
  2. 注意:mountpoint 需要是不存在文件夹,会自动创建;或者是Windows中不存在盘符,也可以,Z:\
  3. 常见flags:--vfs-cache-mode writes|full --cache-dir D:\Rclone\cache
  4. 卸载:关闭 rclone.exe 进程就可以了,因为Win下没有命令 fusermount -qzu /path/to/mountpoint

示例:

RunHiddenConsole.exe Rclone.exe mount T725: D:\Rclone\T725 --vfs-cache-mode writes --cache-dir D:\Rclone\cache
RunHiddenConsole.exe Rclone.exe mount oneDrive: z: --vfs-cache-mode writes --cache-dir D:\Rclone\cache

不指定--cache-dir,默认使用%LOCALAPPDATA%\rclone,可使用命令rclone config paths查看。

rclone mount vs rclone sync/copy 的区别

rclone mount 本身不是自动同步。它是一个按需访问的机制,更像是一个“实时视图”或“桥梁”,而不是一个同步工具。

您可以将 rclone mount 理解为在您的本地电脑上开了一个“窗口”,透过这个窗口看到的是云存储上的文件。这个窗口本身不会主动把所有文件都搬到本地,也不会主动把本地所有改动立刻传上去。它的工作原理是:

  • 按需读取(下载):当您尝试打开、编辑或运行挂载目录中的某个文件时,rclone 才会即时地从云端下载这个文件(或文件的一部分)到本地缓存,然后提供给应用程序。您并不是在直接操作云端文件,而是在操作一个本地缓存副本。
  • 延迟写入(上传):当您修改、创建或删除挂载目录中的文件时,这些更改通常不会立即上传到云端。它们会先留在本地缓存中,然后根据您设置的 –vfs-cache-mode 参数来决定何时上传。

例如,设置 –vfs-cache-mode writes 或 full 时,文件会在关闭后才上传(为了兼容更多程序)。这意味着,如果您强行中断挂载(如电脑崩溃),未上传的更改可能会丢失。

特性rclone mount (挂载)rclone sync/copy (同步/复制)
工作方式按需访问,像一个网络驱动器主动操作,一次性完成任务
实时性提供实时视图,但写入有延迟命令执行时是一次性的,完成后就不再有关系
本地空间占用少量缓存空间,访问过的文件会留在缓存中占用全部文件大小的空间(如果是下载)
用途访问和浏览云端文件,像使用本地文件夹一样备份、迁移、镜像数据,确保两端内容一致
自动化挂载后即可持续使用,但本身不自动同步需要配合定时任务(如 cron)才能实现定期自动同步

只有rclone mount需要winfsp支持,rclone sync/copy等其他命令,都不需要winfsp,因为通过云存储服务商提供的 API 来直接进行文件的上传、下载、列表和删除操作。因此,它不需要任何额外的文件系统支持。

Rclone 本身不直接支持实时监听文件变化,rclone sync/copy 都是单向的,而rclone bisync 还是实验性质的双向同步命令。

rclone 所有命令

执行 rclone help 可以看到本内容。

rclone about获取远程存储的配额信息。
rclone authorize远程授权(用于 OAuth 等)。 比如
rclone backend运行特定于后端(存储类型)的命令。
rclone bisync在两个路径之间执行双向同步(实验性)。
rclone cat连接(读取)文件并输出到标准输出(stdout)。
rclone check检查源和目的地的文件是否匹配。
rclone checksum使用 SUM 文件校验目的地文件的一致性。
rclone cleanup清理远程存储(如果支持)。
rclone completion为指定的 shell 输出自动补全脚本。
rclone config进入交互式配置会话。
rclone convmv转换文件名和目录名(原地转换)。
rclone copy将文件从源复制到目的地,跳过相同的文件。
rclone copyto将文件从源复制到目的地,跳过相同的文件(支持不同名称)。
rclone copyurl将指定 URL 的内容复制到目的地路径。
rclone cryptcheck校验加密远程存储的完整性。
rclone cryptdecode返回解密的文件名。
rclone dedupe交互式查找重复文件名并删除/重命名它们。
rclone delete删除路径中的文件。
rclone deletefile从远程删除单个文件。
rclone gendocs将 rclone 的 Markdown 文档输出到指定目录。
rclone gitannex通过标准输入/输出与 git-annex 交互。
rclone hashsum为路径中的所有对象生成哈希校验文件。
rclone help显示 rclone 命令、选项和后端的帮助。
rclone link生成文件/文件夹的公开链接。
rclone listremotes列出配置文件和环境变量中定义的所有远程存储(remotes)。
rclone ls列出路径中的对象(包含大小和路径)。
rclone lsd列出路径中的所有目录/容器/存储桶(buckets)。
rclone lsf以易于解析的格式列出远程:路径中的目录和对象。
rclone lsjson以 JSON 格式列出路径中的目录和对象。
rclone lsl列出路径中的对象(包含修改时间、大小和路径)。
rclone md5sum为路径中的所有对象生成 MD5 校验文件。
rclone mkdir如果路径不存在则创建它。
rclone mount将远程存储挂载为文件系统到一个挂载点。
rclone move将文件从源移动到目的地。
rclone moveto将文件或目录从源移动到目的地(支持不同名称)。
rclone ncdu基于文本用户界面(TUI)浏览远程存储。
rclone obscure生成用于 rclone 配置文件的加密密码。
rclone purge删除路径及其所有内容。
rclone rc通过远程控制(Remote Control) API 对正在运行的 rclone 实例运行命令。
rclone rcat将标准输入(stdin)的内容复制到远程的文件中。
rclone rcd运行 rclone 但只监听远程控制命令(无 UI)。
rclone rmdir删除路径下的空目录。
rclone rmdirs删除路径下的所有空目录。
rclone selfupdate更新 rclone 二进制程序本身。
rclone serve通过特定协议(HTTP, WebDAV, FTP, SFTP)提供远程存储访问服务。
rclone settier更改远程存储中对象的存储类别/层级(Tier)。
rclone sha1sum为路径中的所有对象生成 SHA1 校验文件。
rclone size打印远程:路径中对象的总大小和数量。
rclone sync使源和目的地完全相同,仅修改目的地。
rclone test运行测试命令。
rclone touch创建新文件或更改文件修改时间。
rclone tree以树状形式列出远程存储的内容。
rclone version显示版本号

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注