使用Rsync备份到外部驱动器


17

我正在购买一个外部硬盘驱动器来备份我家中的计算机(最终!)。我希望使用rsync。我看过一个确实(或似乎确实)想要的示例。像这样:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

但是,在查看rsync文档和示例等时,事情看上去比这要复杂得多。联网,守护进程和行话,哦,我的天!

我假设只要从计算机到通过火线连接的外部驱动器进行同步,这些东西都不需要。我猜错了吗?事情真的会比那个无害的命令还要复杂吗?


Answers:


10

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


2
s /但是/幸运的是,当文件是本地文件时,读取两者并进行所有比较魔术以将其中的一部分与部分内容一起写入新内容(再次读取它们)比仅读取源代码,写入目标要多得多。
哈维尔

不知道我是否应该回答这个问题。我现在将其添加。
2009年

31

我将rsync与以下易于记忆的标志一起使用,例如'glop','trunc'和'v'。

rsync -gloptrunc $srcdir $dstdir

简要指南:

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

我总是运行上面的命令以确保它能正常工作,然后删除对结果满意的“ n”标志。

以上组合的主要特点:

  • 我在两个(或更多)服务器之间在两个方向上运行它,因此在两个方向上同步。您可以更新当时认为是主控的任何人。
  • 它允许要么是主人,与显著的警告,如果你想删除的东西,你必须删除它既要确保它是真的走了,否则它回来。

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

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

在极少数情况下,我不得不添加其他参数来说明跨远程计算机的登录帐户的更改,更改端口,甚至指定“ rsync”在远程主机上的位置...但是这些参数并不直接适用于您的题。


3
以上所有-r标志是否不是rsync的?
罗里

2
当我不确定他们做什么时,我不是使用'meta'标志的忠实拥护者。rsync的手册页指示“ -a”实际上是我的机器上的-rlptgoD,它跳过了“ u”和“ v”,但包括“ D”。在这些中,似乎对我而言,唯一的关键区别在于添加“ u”。
ericslaw

如何强制它从源镜像到目标(删除目标中不在源中的任何内容),而不是双向复制?
加布里埃尔·斯台普斯

1
看起来您需要使用rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir。该--delete说要删除,是不是在源的目标什么,--delete-excluded说也删除这通常不会被跟踪或复制到的目标中排除的文件。如果使用--delete-excluded,从技术上讲,您也不需要使用--delete,但是无论如何都可以使用它们。详细信息在此处的手册页中:linux.die.net/man/1/rsync
加布里埃尔·斯台普斯

注意:对于一般的rsync用法,我现在也已经为自己编写了本教程,因此我可以根据需要参考它:如何使用rsync
Gabriel Staples

4

都没有必要,您可以在没有任何守护程序或任何其他类型的配置的情况下使用rsync!

只需使用rsync命令,您就可以开始使用。


2

从您的rsync命令中的路径来看,我是否认为您正在使用Mac OS X是正确的?

就个人而言,我会选择使用Time Machine(如果您使用的是Leopard)或Carbon Copy复制器(http://www.bombich.com/software/ccc.html使用rsync的)。

比尝试修改自己的脚本容易得多。优势之一是Time Machine和CCC都可以为您提供增量备份。


2

您使用的示例看起来可以很好地用于备份。

但是,在使用rsync时,您可能要考虑的一件事是使用--link-dest选项。这使您可以保留多个备份,但对任何未更改的文件使用硬链接,从而有效地使所有备份都占用增量空间。一个示例用法是:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

假设您有一个日期为6月12日的备份,并且您想在6月13日创建一个新备份。如果您不想打印每个文件,则可能要忽略-v选项。


1
rsnapshot是一个备份系统,它按照您的描述使用link-dest来以节省空间的方式保留完整版本的备份。
罗里

1

这实际上取决于您是否正在运行数据库。Rsync将抓取每个文件的快照,并忽略所有中间的写操作。如果要备份数据库,则应在rsync之前查看设置忽略过滤器并运行数据库转储工具。


1

您编写的命令应该可以工作,但是您可能需要查看一个名为rsnapshot的程序,该程序建立在rsync之上,并保留文件的多个版本,因此您可以回头查看上周或上个月的情况。该配置非常简单,并且确实擅长于空间优化,因此,除非您进行大量改动,否则它不会占用比单个备份更多的空间。


1

您没有提到您的操作系统。按照其基于* nix的操作系统的假设,您的命令很好。

但是,如果一个或两个驱动器恰好都是NTFS格式的,可​​以使用Mobaxterm / cygwin从* nix甚至从Windows内部进行访问,则rsync增量功能将无法正常使用 rsync -a (archive flag)

如果涉及NTFS驱动器,则可以使用:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

下载Mobaxterm ssh客户端以在Windows上具有rsync功能。

这是有关在NTFS驱动器上使用rsync的更多信息


0

我尝试使用rsync进行备份,但结果一团糟。rsync更适合“同步”而不是备份。并且比较大文件永远都是。

我进行了一些研究,并尝试了几种方法(基本上是通过ubuntu中的apt-cache搜索备份测试每个人)。

最后,我最终得到了“ backup2l- 低维护备份/还原工具”,这很容易。我喜欢它管理计划和轮换(按级别)的方式。只要从命令行连接了USB外置驱动器,我就会运行它,但是您也可以使其自动化。


0

尝试苦干做备份。http://www.dirvish.org/
它在所谓的Vault中使用rsync的硬链接。您可以保留与USB磁盘一样多的旧转储。或以自动方式进行设置。

一旦您了解了苦苦挣扎的想法,它就会比使用rsync本身的所有选项更方便使用。


rsnapshot的确类似于催命
Rory

0

我找到了基于Windows的计算机的解决方案:http : //www.itefix.no/i2/node/10650

要将D:\分区复制到外部驱动器K:\

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.