使用 Rsync 备份到外部驱动器

sta*_*zel 22 backup rsync

我正在购买一个外置硬盘来备份我家中的计算机(终于!!)。我希望使用 rsync。我看过一个例子,它确实(或似乎)完全符合我的要求。像这样的东西:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups
Run Code Online (Sandbox Code Playgroud)

然而,当查看 rsync 文档和示例等时,事情开始看起来比这复杂得多。网络、守护进程和行话,天哪!

我假设只要我只是从计算机同步到火线连接的外部驱动器,就不需要这些东西。我的假设是错误的吗?事情真的会比那个无害的命令更复杂吗?

eri*_*law 33

我将 rsync 与以下标志一起使用,如“glop”、“trunc”和“v”,这些标志很容易让人记住。

rsync -gloptrunc $srcdir $dstdir

简要指南:

  • g - 保留组所有权信息
  • l - 将符号链接复制为符号链接
  • o - 保留所有者信息
  • p - 保留权限
  • t - 保留时间戳
  • r - 通过目录递归
  • u - 更新,跳过任何较新的文件
  • [n] - 不,不要这样做,而是进行试运行
  • c - 校验和,在可能的情况下尝试对文件块进行校验和 (*)
    注意:在本地文件系统上,这会被覆盖,而是复制整个文件。
  • v - 详细

我总是运行上面的程序以确保它有效,然后在我对结果感到满意后删除“n”标志。

上述组合的主要特点:

  • 我在两个(或更多)服务器之间双向运行它,从而在双向同步。你更新你认为当时的主人。
  • 它允许任何一个成为主人,但重要的警告是,如果你想删除某些东西,你必须在两者上删除它以确保它真的消失了,否则它会回来。

我用它来保持两台机器同步,或者保持子目录同步(比如备份到 USB 驱动器)。

正如前面提到的其他帖子之一,如果您正在处理本地驱动器,“校验和”实际上可能会被强制关闭。

在一些罕见的情况下,我不得不添加额外的参数来说明远程机器上登录帐户的更改、更改端口,甚至指定“rsync”在远程主机上的位置……但这些并不直接适用于您的题。

  • rsync 的 -a 标志不是执行上述所有操作吗? (3认同)
  • 当我不确定它们做什么时,我不喜欢使用“元”标志。rsync 的 manapage 表明 '-a' 实际上是我的盒子上的 -rlptgoD,它跳过了 'u' 和 'v' 但包括 'D'。其中,对我来说,添加“u”似乎是唯一的关键区别。 (2认同)

kby*_*yrd 12

Rsync 在本地驱动器上运行良好。但是,如果它检测到本地路径,它会自动进入 --whole-file 模式,该模式不会复制差异,而只会将源文件复制到目标文件上。Rsync 仍然会忽略根本没有改变的文件。当源和目标之间的带宽很高(如两个本地磁盘)时,这比读取两个文件快得多,然后只复制更改的位。

  • s/但是/幸运的是/当文件是本地的时,读取两者并执行所有差异魔术以使用两者的部分写入新文件(再次读取它们)比仅读取源代码和写入目标要多得多。 (2认同)