使用rsync命令备份大型Linux文件

基本rsync命令通常足以管理您的Linux备份,但是一些附加选项可以为大型备份集增加速度和功能

备份是什么意思

显然,备份一直是Linux世界的热门话题早在2017年,大卫就向Opensource.com读者提供了“使用rsync备份您的Linux系统”的建议。今年早些时候,他发表了一项民意调查,询问我们“您对Linux/主目录的主要备份策略是什么?”在今年的另一项民意调查中,唐·沃特金斯问道,“你在使用哪种开源备份解决方案?”

我的答案是肯定的我真的很喜欢rsync!市场上有许多大型而复杂的工具可能是管理磁带机或磁带库设备所必需的,但您可能只需要一个简单的开源命令行工具

基本rsync命令:

我为一家拥有大约35,000名开发人员和多个TB文件的全球性组织管理一个二进制存储库系统我经常一次移动或归档数百GB的数据Rsync已使用这一经历让我对这个简单的工具充满信心。(是的,我在家里用它来备份我的Linux系统)

基本的rsync命令很简单

rsync-avrsrcDST # src表示源文件,DST表示目标路径

事实上,在任何教程中教授的rsync命令在大多数正常情况下都会正常工作。但是,假设我们需要备份大量数据与包含2,000个子目录的目录相似,每个目录包含50GB到700GB的数据在这个目录上运行rsync可能会花费很多时间,尤其是如果您使用校验和选项(我更喜欢这个选项)

我们正在尝试同步大量数据或慢速网络连接,性能可能会受到影响。让我向您展示一些我用来确保良好性能和可靠性的方法。

高级rsync命令:256以上

rsync运行时出现的第一行是:“发送增量文件列表”。如果你搜索这条线,你会发现很多问题,比如:为什么要花这么长时间?或者你为什么挂断?

以下是基于此场景的示例假设我们有一个名为/storage的目录,并希望备份到安装在/media/WDPassport上的外部USB设备

如果我们想要备份/存储到一个USB外部驱动器,我们可以使用以下命令:

rsync-CAV/storage/media/WdPassport

c选项告诉rsync使用文件校验和而不是时间戳来确定更改的文件,这通常需要更长的时间为了分解/存储目录,我使用find命令来同步子目录这是一个例子:

find/storage-type d-exec sync-CAV { }/media/WdPassport。

这看起来很好,但是如果/storage目录中有任何文件,它们将不会被复制。那么,我们如何同步/存储中的文件?还有一个细微的区别,有些选项会导致rsync同步目录,源目录的根目录;这意味着它将同步子目录两次,这是我们不想要的。简而言之,我的解决方案是一个“双增量”脚本这允许我分解一个目录,例如,分解每个用户的主目录,或者当你有多个大目录时,例如音乐或家庭照片。这是我的脚本示例:

HOMES = " Alan " DRIVE = "/media/WdPassport " for HOME in $ HOMES;请执行CD/HOME/$ HOME rsync-cdlptgov-delete。/$DRIVE/$HOME查找。-max depth 1-类型d-not -name ","-exec rsync-crlpt gov-delete { }/$ DRIVE/$ HOME;done

第一个rsync命令复制它在源目录中找到的文件和目录但是,它将目录保留为空,因此我们可以使用find命令遍历它们这是通过传递d参数来实现的,该参数告诉rsync不要递归目录:

-d,-dirs无递归转移目录

然后,find命令将每个目录分别传递给rsyncRsync然后复制目录的内容这是通过传递r参数来实现的,该参数告诉rsync递归目录:

-r,-递归递归递归目录

这将使rsync使用的增量文件保持在可管理的大小为了方便起见,大多数rsync教程都使用a(或archive)参数这实际上是一个复合论点。

-a,-存档存档存档模式等于-rlptgoD(无-H,-a,-X)

我传递的其他参数将包含在A中;那些是l,p,t,g和o。

-l,-链接将符号链接复制为符号链接-p,- perms保留权限-t,-时间保留修改时间-g,-组保留组-o,-所有者保留所有者(仅限超级用户)

-delete选项告诉rsync删除目标上源上不再存在的所有文件。这样,结果就是精确的复制。您还可以为添加排除项。垃圾目录或。存储由苹果电脑创建的文件。

-未命名”。垃圾* "-没有名字"。DS _ Store“

注:

最后建议:rsync可能是一个破坏性命令幸运的是,它深思熟虑的创造者提供了“排练”的能力。如果包含n选项,rsync将显示预期输出,而不写入任何数据。

rsync -cdlptgovn - delete。/$DRIVE/$HOME

大家都在看

相关专题