rclone 是一个命令行的文件同步和管理工具。你可以把它想象成 rsync,但它的目标不是另一台服务器,而是各种云存储服务。

主要特性:


 

1. 安装

 

rclone 官方推荐使用一键安装脚本,这是最简单、最可靠的方式。

Bash

这个脚本会自动识别你的操作系统和架构,并安装最新稳定版。

验证安装:

Bash


 

2. 核心概念:配置远程存储 (Remotes)

 

rclone 的一切操作都始于配置。你需要告诉 rclone 如何连接到你的云服务。每一个配置好的云服务(例如你的一个Google Drive账号)在 rclone 中被称为一个 "Remote" (远程存储)

 

2.1. 交互式配置 (rclone config)

 

这是配置 rclone 的主要方式。这个过程是交互式的,会一步步引导你。

Bash

你会看到一个菜单。我们以配置一个 Google Drive 账号为例:

  1. 输入 n (New remote)。
  2. name>:给这个 Remote 起一个名字(例如 gdrive)。这个名字在后续命令中会用到。
  3. Storage>:你会看到一个长长的列表,显示所有支持的存储。找到 "Google Drive" (例如编号 18),输入编号后回车。
  4. client_id> / client_secret>:直接按回车跳过(使用 rclone 默认的 API 密钥)。
  5. scope>:选择访问权限。通常选 1 (Full access)。
  6. root_folder_id> / service_account_file>:直接回车跳过。
  7. Edit advanced config?:输入 n (No)。

 

2.2. 关键步骤:在无头服务器 (Headless Server) 上授权

 

如果你在没有图形界面的 Linux 服务器上配置(例如 SSH 连接),会遇到一个关键步骤:

  1. Use auto config?:输入 n (No)。
  2. 此时,rclone 会在终端里生成一个 URL 链接
  3. 在你的本地电脑上:复制这个链接,粘贴到你的本地浏览器中打开。
  4. 在浏览器中,登录你的 Google 账号,并授权 rclone 访问。
  5. 授权成功后,浏览器会显示一个验证码
  6. 回到你的 SSH 终端:复制这个验证码,粘贴到 rclone 的提示符(Enter verification code>)后面,回车。
  7. Configure this as a team drive?:根据你的需求选 y / n
  8. 确认配置无误 ( y ),然后 q (Quit) 退出配置菜单。

配置完成后,所有的 "Remotes" 信息都保存在 ~/.config/rclone/rclone.conf 文件中。你可以备份这个文件,或者把它复制到其他机器上,实现 rclone 配置的迁移。


 

3. 基本命令(常用动词)

 

rclone 的命令结构非常清晰:

rclone [命令] [源路径] [目标路径] [标志]

 

3.1. lsd (列出目录)

 

只列出目录(不递归)。

 

3.2. ls / lsl (列出文件和目录)

 

ls 递归列出所有文件。lsl 提供更详细的信息(大小、时间)。

 

3.3. copy (复制)

 

将文件从源复制到目标,跳过已存在且未变化的文件

 

3.4. sync (同步) ⭐⭐⭐

 

这是最强大但也最危险的命令。

sync 会让目标目录变得和源目录完全一样。

⚠️ 警告: sync 是单向的。如果你把命令写反了(例如 rclone sync gdrive:www_backup /var/www),并且 gdrive:www_backup 是空的,它会清空你的 /var/www 目录!

 

3.5. move (移动)

 

将文件从源移动到目标。rclone 会在复制成功后删除源文件。

 

3.6. delete / purge

 

delete 删除指定路径下的文件。purge 清空指定路径(删除目录及其中所有内容)。

 

3.7. check (检查)

 

检查源和目标的文件是否一致,但不执行任何操作。非常适合在 sync 之前使用。


 

4. 关键标志 (Flags) 和高级用法

 

标志 (Flags) 是 rclone 的精髓,它们可以精细控制命令的行为。

 

4.1. 救命稻草:--dry-run (演习)

 

在执行任何 copy, sync, move, delete 命令前,强烈建议先加上 --dry-run (或 -n) 标志。

它会模拟整个过程,告诉你它 打算 做什么(哪些文件会被复制/删除),但不会真的执行。

 

4.2. 性能与限速

 

 

4.3. 过滤器 (Filtering) ⭐

 

这是 rclone 另一个极其强大的功能,允许你精确控制哪些文件被传输。

规则语法:

示例:

 

4.4. mount (挂载)

 

rclone mount 可以将云存储挂载到本地文件系统,使其看起来像一个本地硬盘。这需要 FUSE 支持。

1. 安装 FUSE:

2. 创建挂载点并挂载:

3. 卸载:

注意: 挂载的性能和稳定性取决于网络和云服务商的 API。它适合用于读取、浏览和流式传输(如 Plex),但不太适合高 I/O 的数据库或编译操作。

 

4.5. crypt (客户端加密)

 

这是一个“包装器” (Wrapper) Remote。你可以创建一个 crypt 类型的 Remote,它会指向另一个你已经配置好的 Remote(比如 gdrive:)。

配置 crypt 时 (rclone config),它会要求你:

  1. 选择一个已有的 Remote 作为“上游”(如 gdrive:EncryptedFiles)。
  2. 设置一个强密码(和可选的“盐”)。

配置好后(假设你命名为 gdrive_crypt),你所有传到 gdrive_crypt: 的文件在上传到 Google Drive 之前都会被加密(包括文件名)。这样,云服务商也无法知道你存储了什么。


 

5. 实用场景示例

 

场景1:每日服务器网站备份 (Cron Job)

目标:每天凌晨 3 点,将 /var/www 和 /etc/nginx 备份到 Google Drive,排除日志和缓存文件,并限制带宽。

设置 Cron: crontab -e

0 3 * * * /bin/bash /root/backup.sh

场景2:云到云数据迁移

目标:将 OneDrive 上的所有 Photos 迁移到 S3 存储桶 my-s3-bucket。

 

rclone 快速备忘录

命令功能
rclone config(核心) 配置新的或已有的 Remotes
rclone ls [remote:path]列出文件
rclone lsd [remote:path]列出目录
rclone copy [src] [dst]复制(跳过已有)
rclone sync [src] [dst]同步(注意:会删除目标端多余文件)
rclone move [src] [dst]移动(源端删除)
rclone delete [remote:path]删除文件
rclone purge [remote:path]清空目录(危险!)
rclone check [src] [dst]检查源和目标是否一致
rclone mount [r:p] [local]将云存储挂载为本地磁盘

 

标志 (Flags)功能
--dry-run / -n(必用) 模拟运行,不实际操作
--interactive / -i交互模式,在删除/覆盖前询问
-P / --progress显示实时传输进度
--transfers=N并发传输数
--bwlimit=SIZE限制带宽 (如 10M)
--filter-from FILE从文件加载过滤规则
--exclude PATTERN排除模式
--include PATTERN包含模式
--daemon(仅 mount) 后台运行