Rclone云存储数据同步工具

Rclone介绍

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

Rclone 具有强大的云等效功能,相当于 unix 命令 rsync、cp、mv、mount、ls、ncdu、tree、rm 和 cat。Rclone熟悉的语法包括shell管道支持和--dry-run保护。它在命令行、脚本中或通过其 API 使用。

用户称rclone为“云存储的瑞士军刀”和“与魔法无异的技术”。

Rclone 真正照顾您的数据。它保留时间戳并始终验证校验和。在有限的带宽上进行传输;间歇性连接或受配额限制的连接可以从上次传输的良好文件重新启动。您可以检查文件的完整性。在可能的情况下,rclone 使用服务器端传输来最大限度地减少本地带宽使用,并在不使用本地磁盘的情况下从一个提供商传输到另一个提供商。

虚拟后端包装本地和云文件系统以应用加密、压缩、分块、哈希和加入。

Rclone 将任何本地、云或虚拟文件系统作为磁盘挂载在 Windows、macOS、Linux 和 FreeBSD 上,并通过 SFTP、HTTP、WebDAV、FTP 和 DLNA 提供这些服务。

Rclone 是一个成熟的开源软件,最初受到 rsync 的启发,用 Go 编写。友好的支持社区熟悉各种用例。官方 Ubuntu、Debian、Fedora、Brew 和 Chocolatey 存储库。包括Rclone。对于最新版本,建议从 rclone.org 下载。

Rclone 广泛用于 Linux、Windows 和 Mac。 第三方开发人员使用 rclone 命令行或 API 创建创新的备份、还原、GUI 和业务流程解决方案。

Rclone承担了与云存储通信的繁重工作。

rclone 能为您做什么?

Rclone 可帮助您:

  • 将文件备份(和加密)到云存储
  • 从云存储还原(和解密)文件
  • 将云数据镜像到其他云服务或本地
  • 将数据迁移到云,或在云存储供应商之间迁移
  • 将多个、加密、缓存或不同的云存储挂载为磁盘
  • 使用 lsf、ljson、size、ncdu 分析和核算云存储上保存的数据
  • 将文件系统合并在一起,将多个本地和/或云文件系统呈现为一个

特征

  • Transfers:转移
    • 始终检查 MD5、SHA1 哈希的文件完整性
    • 时间戳保留在文件中
    • 可以随时重新启动操作
    • 可以往返网络,例如两个不同的云提供商
    • 可以使用多线程下载到本地磁盘
  • Copy:将新文件或更改的文件复制到云存储
  • Sync:同步(单向)使目录相同
  • Move:将文件移动到云存储,验证后删除本地
  • Check:检查哈希和丢失/额外文件
  • Mount:将云存储挂载为网络磁盘
  • Serve:通过 HTTP/WebDav/FTP/SFTP/DLNA 提供本地或远程文件
  • GUI:基于网络的实验性图形用户界面

常用子命令

rclone sync

使源和目标相同,仅修改目标。

  • 概要

将源同步到目标,仅更改目标。不传输源和目标上相同的文件,按大小和修改时间或 MD5SUM 进行测试。目标更新以匹配源,包括在必要时删除文件(重复对象除外,见下文)。如果不想从目标位置删除文件,请改用Copy命令。

重要提示:由于这可能会导致数据丢失,因此请先使用 --dry-run 或 --interactive/-i 标志进行测试。

rclone sync -i SOURCE remote:DESTINATION

请注意,如果任何时候出现任何错误,目标中的文件都不会被删除。重复对象(在支持它的提供程序上具有相同名称的文件)也尚未处理。

同步的始终是目录的内容,而不是目录本身。因此,当 source:path 是一个目录时,复制的是 source:path 的内容,而不是目录名称和内容。如果不确定,请参阅copy命令中的扩展说明。

如果 dest:path 不存在,则创建它并将 source:path 内容转到那里。

无法同步重叠的远程。但是,您可以使用筛选规则从同步中排除目标,或者通过将排除(如果存在)文件放在目标目录中并同步到源目录中的目标来排除目标。

注: 使用 -P/--progress 标志查看实时传输统计信息

注:使用 rclone dedupe命令处理“在源/目标中找到重复的对象/目录 - 忽略”错误。有关详细信息,请参阅此论坛帖子。

rclone sync source:path dest:path [flags]
  • 选项
      --create-empty-src-dirs   Create empty source dirs on destination after sync
  -h, --help                    help for sync

有关此处未列出的全局选项,请参阅全局标志页面。

https://rclone.org/flags/

rclone copy

将文件从源复制到目标,跳过相同的文件。

  • 概要

将源复制到目标。不传输源和目标上相同的文件,按大小和修改时间或 MD5SUM 进行测试。不会从目标中删除文件。如果还想从目标中删除文件,以使其与源匹配,请改用 sync 命令。

请注意,同步的始终是目录的内容,而不是目录本身。因此,当 source:path 是一个目录时,复制的是 source:path 的内容,而不是目录名称和内容。

要复制单个文件,请改用 copyto 命令。

如果 dest:path 不存在,则创建它并将 source:path 内容转到那里。

例如

rclone copy source:sourcepath dest:destpath

假设源路径中有两个文件

sourcepath/one.txt
sourcepath/two.txt

这会将它们复制到

destpath/one.txt
destpath/two.txt

而不是

destpath/sourcepath/one.txt
destpath/sourcepath/two.txt

如果您熟悉 rsync,rclone 总是像您编写了尾随“/”一样工作,意思是“复制此目录的内容”。这适用于所有命令,以及您是在谈论源还是目标。

请参阅 --no-traverse 选项以控制 rclone 是否列出目标目录。在将少量文件复制到大型目标时提供此选项可以大大加快传输速度。

例如,如果您在 /path/to/src 中有很多文件,但其中只有少数文件每天都在更改,您可以非常有效地复制最近更改的所有文件,如下所示:

rclone copy --max-age 24h --no-traverse /path/to/src remote:

注: 使用 -P/--progress 标志可查看实时传输统计信息。

注:使用 --dry-run 或 --interactive/-i 标志进行测试,而无需复制任何内容。

rclone copy source:path dest:path [flags]
  • 选项
      --create-empty-src-dirs   Create empty source dirs on destination after copy
  -h, --help                    help for copy

有关此处未列出的全局选项,请参阅全局标志页面。

https://rclone.org/flags/

rclone check

检查源和目标匹配中的文件。

  • 概要

检查源和目标匹配中的文件。它比较大小和哈希(MD5 或 SHA1),并记录不匹配的文件报告。它不会更改源或目标。

对于加密远程,有一个专用命令cryptcheck,能够检查加密文件的校验和。

如果您提供 --size-only 标志,它只会比较大小而不是哈希。使用它进行快速检查。

如果您提供 --download 标志,它将从两个远程下载数据,并即时检查它们。这对于不支持哈希的远程数据库非常有用,或者如果您确实想要检查所有数据。

如果提供具有有效哈希名称的 --checkfile HASH 标志,则 source:path 必须指向 SUM 格式的文本文件。

如果提供 --one-way 标志,它只会检查源中的文件是否与目标中的文件匹配,而不是相反。这意味着不会检测到目标中不在源中的额外文件。

--differ、--missing-on-dst、--missing-on-src、--match 和 --error 标志将路径(每行一个)写入提供的文件名(如果是 -,则为 stdout)。他们写的内容在下面的帮助中描述。例如,--different将写入源和目标上存在但不同的所有路径。

--combined 标志将写入一个文件(或 stdout),其中包含所有带有符号的文件路径,然后是一个空格,然后是路径,以告诉您发生了什么。这些让人想起差异文件。

  • = path:表示在源和目标中找到路径并且相同
  • - path:表示源上缺少路径,因此仅在目标中
  • + path:表示目标上缺少路径,因此仅在源中
  • * path:表示源和目标中存在路径,但不同。
  • ! path:表示读取或哈希源或目标时出错。
rclone check source:path dest:path [flags]
  • 选项
  -C, --checkfile string        Treat source:path as a SUM file with hashes of given type
      --combined string         Make a combined report of changes to this file
      --differ string           Report all non-matching files to this file
      --download                Check by downloading rather than with hash
      --error string            Report all files with errors (hashing or reading) to this file
  -h, --help                    help for check
      --match string            Report all matching files to this file
      --missing-on-dst string   Report all files missing from the destination to this file
      --missing-on-src string   Report all files missing from the source to this file
      --one-way                 Check one way only, source files must exist on remote

rclone serve

通过协议为远程提供服务。

  • 概要

通过给定协议为远程提供服务。需要使用子命令来指定协议,例如

rclone serve http remote:

每个子命令都有自己的选项,您可以在它们的帮助中看到这些选项。

rclone serve <protocol> [opts] <remote> [flags]
  • 选项
  -h, --help   help for serve

rclone mount

将远程数据库作为文件系统挂载在挂载点上。

  • 概要

rclone mount 允许 Linux、FreeBSD、macOS 和 Windows 使用 FUSE 将任何 Rclone 的云存储系统挂载为文件系统。

首先使用 rclone config设置远程。检查它是否适用于 rclone ls 等。

在 Linux 和 macOS 上,您可以在前台或后台(也称为守护程序)模式下运行挂载。默认情况下,装载在前台模式下运行。使用 --daemon 标志强制使用后台模式。在 Windows 上,您只能在前台运行挂载,该标志将被忽略。

在后台模式下,rclone 充当通用的 Unix 挂载程序:主程序启动,生成后台 rclone 进程来设置和维护挂载,等待成功或超时,然后使用适当的代码退出(如果子进程失败,则杀死子进程)。

在 Linux/macOS/FreeBSD 上,像这样启动挂载,其中 /path/to/local/mount 是一个空的现有目录:

rclone mount remote:path/to/files /path/to/local/mount

当程序在前台模式下结束时,无论是通过 Ctrl+C 还是接收 SIGINT 或 SIGTERM 信号,安装都应自动停止。

在后台模式下运行时,用户必须手动停止装载:

# Linux
fusermount -u /path/to/local/mount
# OS X
umount /path/to/local/mount

卸载操作可能会失败,例如,当装入点繁忙时。发生这种情况时,用户有责任手动停止装载。

挂载文件系统的大小将根据从远程检索到的信息进行设置,与 rclone about 命令返回的信息相同。具有无限存储空间的远程可能仅报告已用大小,然后假设有额外的 1 PiB 可用空间。如果远程根本不支持about 功能,则 1 PiB 设置为总大小和可用大小。

 

posted @ 2023-03-05 22:08  Varden  阅读(3715)  评论(0编辑  收藏  举报