强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Rclone 数据迁移完全指南 / 第 4 章 - 基本操作

第 4 章 - 基本操作


4.1 命令语法总览

Rclone 的基本命令格式:

rclone <command> <source> <destination> [flags]
  • <command>:操作类型(copy、move、sync 等)
  • <source>:源路径,格式为 remote:path/local/path
  • <destination>:目标路径,格式同上
  • [flags]:可选参数

常用全局参数:

参数说明示例
--progress / -P显示传输进度rclone copy src dst -P
--verbose / -v详细输出rclone copy src dst -v
--dry-run / -n模拟运行,不实际执行rclone sync src dst -n
--config指定配置文件rclone --config /etc/rclone.conf ls remote:
--log-file输出日志到文件rclone copy src dst --log-file sync.log
--log-level日志级别--log-level INFO

4.2 ls / lsd / lsl — 列出文件

ls — 列出所有文件(递归)

# 列出远程存储中所有文件
rclone ls s3:my-bucket/

# 输出示例:
#     12345 documents/report.pdf
#       678 images/photo.jpg
#     90123 data/backup.tar.gz

lsd — 列出目录

# 只列出目录(不递归)
rclone lsd s3:my-bucket/

# 输出示例:
#          -1 2026-01-01 00:00:00        -1 documents
#          -1 2026-01-15 12:30:00        -1 images
#          -1 2026-02-01 08:00:00        -1 data

lsl — 列出文件(含大小和时间)

# 列出文件,显示大小和修改时间
rclone lsl s3:my-bucket/ --max-depth 1

# 输出示例:
#    12345 2026-01-01 00:00:00.000000000 report.pdf
#      678 2026-01-15 12:30:00.000000000 photo.jpg

lsjson — JSON 格式列出

# 输出 JSON 格式,便于程序处理
rclone lsjson s3:my-bucket/

# 输出示例:
# [{"Path":"documents/report.pdf","Name":"report.pdf","Size":12345,"MimeType":"application/pdf","ModTime":"2026-01-01T00:00:00Z","IsDir":false}]

对比总结

命令输出格式递归显示大小显示时间显示哈希
ls文本✅(合计)
lsd文本
lsl文本
lsjsonJSON可选
lsf自定义可选可选可选

4.3 copy — 复制文件

rclone copy 将文件从源复制到目标,只复制新文件或修改过的文件(增量复制)。

基本用法

# 本地 → 远程
rclone copy /data/documents/ s3:my-bucket/documents/ --progress

# 远程 → 远程(跨云复制)
rclone copy gdrive:Photos/ onedrive:Photos/ --progress

# 远程 → 本地
rclone copy s3:my-bucket/backups/ /local/backup/ --progress

重要特性

# copy 不会删除目标端的文件
# 只传输源端有而目标端没有的文件,或源端更新的文件

# 示例:
# 源端: a.txt, b.txt, c.txt
# 目标端: a.txt, d.txt
# copy 后目标端: a.txt(被覆盖), b.txt(新增), c.txt(新增), d.txt(保留)

常用参数

# 多线程传输
rclone copy src dst --transfers 16

# 显示进度
rclone copy src dst --progress

# 限制传输大小(只传输 1MB 以上的文件)
rclone copy src dst --min-size 1M

# 跳过已有文件(基于大小和修改时间)
rclone copy src dst --ignore-existing

# 使用检查级别
rclone copy src dst --checksum       # 基于校验和比较
rclone copy src dst --size-only      # 仅基于大小比较
rclone copy src dst --update         # 仅复制更新的文件

4.4 move — 移动文件

rclone move 将文件从源移动到目标,传输完成后删除源端文件

基本用法

# 移动文件到另一个位置
rclone move s3:my-bucket/incoming/ s3:my-bucket/processed/ --progress

# 移动到另一个 Remote
rclone move gdrive:Temp/ s3:archive/temp/ --progress

# 本地移动
rclone move /data/incoming/ s3:my-bucket/data/ --progress

注意事项

# move 会在成功传输后删除源文件
# ⚠️ 如果源端有大量文件,删除过程可能较慢

# 建议先用 --dry-run 预览
rclone move src dst --dry-run --progress

# 注意:源端空目录默认不会被删除
# 使用 --delete-empty-src-dirs 删除空目录
rclone move src dst --delete-empty-src-dirs --progress

4.5 sync — 同步文件

rclone sync 使目标端与源端完全一致,会删除目标端多余的文件

基本用法

# 同步本地目录到云端
rclone sync /data/important/ s3:my-bucket/backup/ --progress

# 同步两个远程存储
rclone sync gdrive:Documents/ onedrive:Documents/ --progress

⚠️ sync 的危险性

# sync 会删除目标端不在源端的文件!
# 示例:
# 源端: a.txt, b.txt
# 目标端: a.txt, c.txt
# sync 后目标端: a.txt, b.txt(c.txt 被删除!)

# 🔴 务必先用 --dry-run 预览
rclone sync /data/ s3:my-bucket/ --dry-run --progress

# 🔴 确认方向正确后再执行
rclone sync /data/ s3:my-bucket/ --progress

sync vs copy 对比

特性copysync
复制新文件
更新已修改文件
删除目标端多余文件
删除源端文件
安全性中(需确认方向)
适用场景增量备份镜像同步

4.6 delete / purge — 删除文件

delete — 删除文件

# 删除远程存储中的所有文件
rclone delete s3:my-bucket/temp/

# 只删除特定扩展名的文件
rclone delete s3:my-bucket/logs/ --include "*.log"

# 删除超过 30 天的文件
rclone delete s3:my-bucket/logs/ --min-age 30d

# ⚠️ 先用 --dry-run 预览
rclone delete s3:my-bucket/temp/ --dry-run

purge — 删除目录及所有内容

# 删除整个目录树
rclone purge s3:my-bucket/temp/

# ⚠️ 操作不可逆,务必先预览
rclone purge s3:my-bucket/temp/ --dry-run

rmdirs — 删除空目录

# 递归删除空目录
rclone rmdirs s3:my-bucket/

4.7 mkdir — 创建目录

# 创建目录
rclone mkdir s3:my-bucket/new-folder/

# 创建嵌套目录
rclone mkdir sftp-server:/data/2026/05/

💡 提示:S3 等对象存储没有真正的目录概念,mkdir 只是创建一个零字节的占位对象。


4.8 check — 校验文件

rclone check 比较源端和目标端的文件是否一致。

基本用法

# 比较本地和远程
rclone check /data/ s3:my-bucket/data/

# 输出示例:
# 2026/01/01 00:00:00 NOTICE: S3 bucket data: 0 differences found
# 2026/01/01 00:00:00 NOTICE: S3 bucket data: 100 matching files

# 如果有差异,会列出不匹配的文件:
# ERROR : file1.txt: md5 differ
# ERROR : file2.txt: file not found in source

校验模式

# 基于哈希值校验(默认)
rclone check src dst

# 基于大小校验(哈希不可用时的备选)
rclone check src dst --size-only

# 只检查目标端是否有源端的文件(单向检查)
rclone check src dst --one-way

# 同时下载文件内容进行逐字节比较(最严格但最慢)
rclone check src dst --download

4.9 hashsum / sha1sum / md5sum — 计算哈希

# 计算 SHA1
rclone sha1sum s3:my-bucket/

# 计算 MD5
rclone md5sum s3:my-bucket/

# 计算指定算法的哈希
rclone hashsum SHA256 s3:my-bucket/

# 输出到文件(可用于后续校验)
rclone md5sum s3:my-bucket/ > checksums.md5

# 使用已有的哈希文件校验
md5sum -c checksums.md5

支持的哈希算法

算法说明支持的 Backend
MD5128 位大多数 backend
SHA1160 位大多数 backend
SHA256256 位部分 backend
Dropbox Hash块级哈希Dropbox
Whirlpool512 位部分 backend
# 查看某个 remote 支持的哈希算法
rclone backend features s3:my-bucket/ | grep Hashes

4.10 cat — 输出文件内容

# 将远程文件输出到 stdout
rclone cat s3:my-bucket/config.json

# 输出部分内容
rclone cat s3:my-bucket/large-file.bin --offset 0 --count 1024

# 通过管道处理
rclone cat s3:my-bucket/data.csv | head -n 10

4.11 size — 查看目录大小

# 查看远程目录大小
rclone size s3:my-bucket/

# 输出示例:
# Total objects: 1,234
# Total size: 5.000 GiB (5368709120 Byte)

# JSON 格式输出
rclone size s3:my-bucket/ --json
# {"count":1234,"bytes":5368709120}

4.12 about — 查看存储配额

# 查看 Google Drive 配额
rclone about gdrive:

# 输出示例:
# Total:   15.000 GiB
# Used:    10.500 GiB
# Free:    4.500 GiB
# Trashed: 0.000 GiB

# JSON 格式
rclone about gdrive: --json

4.13 copyto / moveto — 精确复制/移动单个文件

# 复制单个文件(保留文件名)
rclone copyto /data/report.pdf s3:my-bucket/reports/report.pdf

# 复制并重命名
rclone copyto /data/report.pdf s3:my-bucket/reports/report-2026.pdf

# 移动单个文件
rclone moveto /data/temp.txt s3:my-bucket/archive/temp.txt

4.14 genautocomplete — 生成补全脚本

# 生成 Bash 补全脚本
rclone genautocomplete bash

# 生成 Zsh 补全脚本
rclone genautocomplete zsh

# 生成 Fish 补全脚本
rclone genautocomplete fish

4.15 常用参数速查表

传输控制

参数说明默认值
--transfers / -t并行传输文件数4
--checkers并行校验文件数8
--multi-thread-streams单文件多线程流数4
--buffer-size内存缓冲区大小16Mi
--bwlimit带宽限制无限制
--max-transfer最大传输量无限制
--min-size最小文件大小无限制
--max-size最大文件大小无限制

比较策略

参数说明
--checksum / -c基于校验和比较
--size-only仅基于大小比较
--update / -u仅复制更新的文件(基于修改时间)
--ignore-existing跳过已有文件
--ignore-size忽略大小差异
--ignore-checksum忽略校验和差异

输出控制

参数说明
--progress / -P显示进度
--verbose / -v详细输出
--quiet / -q安静模式
--stats统计间隔
--log-file日志文件路径
--log-level日志级别(DEBUG/INFO/NOTICE/ERROR)
--dry-run / -n模拟运行
--jsonJSON 格式输出

过滤参数

参数说明
--include包含匹配的文件
--exclude排除匹配的文件
--include-from从文件读取包含规则
--exclude-from从文件读取排除规则
--filter过滤规则
--filter-from从文件读取过滤规则
--min-age最小文件年龄
--max-age最大文件年龄

4.16 实战场景

场景 1:将本地项目备份到 S3

rclone sync /home/user/projects/ s3:my-backup/projects/ \
  --progress \
  --transfers 8 \
  --log-file /var/log/rclone-backup.log \
  --log-level INFO \
  --exclude ".git/**" \
  --exclude "node_modules/**" \
  --exclude "*.pyc"

场景 2:迁移数据并在完成后清理

# 第一步:预览
rclone move gdrive:OldAccount/ s3:archive/old-account/ \
  --dry-run --progress

# 第二步:确认后执行
rclone move gdrive:OldAccount/ s3:archive/old-account/ \
  --progress \
  --transfers 16 \
  --delete-empty-src-dirs \
  --log-file migration.log

场景 3:定期校验备份完整性

#!/bin/bash
# verify-backup.sh
rclone check /data/important/ s3:my-backup/important/ \
  --one-way \
  --log-file /var/log/rclone-check.log \
  --log-level INFO

if [ $? -ne 0 ]; then
  echo "Backup verification failed!" | mail -s "Rclone Check Alert" [email protected]
fi

注意事项

⚠️ sync 是单向的rclone sync A B 让 B 与 A 一致,会删除 B 中不在 A 的文件。方向搞反会造成数据丢失!

⚠️ –dry-run 是你的好朋友:任何不确定的操作,都先加 --dry-run 预览。

💡 增量传输copysync 都是增量的,只会传输变化的文件。重复运行不会浪费带宽。

💡 断点续传:如果传输中断,重新运行相同命令即可从中断处继续。


扩展阅读


上一章← 第 3 章 - 远程存储配置 下一章第 5 章 - 文件过滤 →