博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync备份对路径的要求_如何对大型Linux备份使用高级rsync
阅读量:2525 次
发布时间:2019-05-11

本文共 2501 字,大约阅读时间需要 8 分钟。

rsync备份对路径的要求

显然,备份一直是Linux世界中的热门话题。 早在2017年,David Both都向读者提供了有关“ ”的提示,并于今年早些时候发表了一项民意调查,询问我们“ 在今年的另一项民意测验中,唐·沃特金斯问:“ ”

我的回应是 。 我真的很喜欢rsync! 市场上有很多大型且复杂的工具对于管理磁带驱动器或存储库设备可能是必需的,但是您可能只需要一个简单的开源命令行工具。

基本的rsync

我为一个全球组织管理二进制存储库系统,该组织大约有35,000个开发人员,文件大小为TB。 我经常一次移动或存档数百GB的数据。 使用了Rsync。 这种经验使我对这个简单的工具充满信心。 (因此,是的,我在家中使用它来备份我的Linux系统。)

基本的rsync命令很简单。

rsync -av SRC DST

实际上,任何教程中讲授的rsync命令在大多数一般情况下都可以正常工作。 但是,假设我们需要备份大量数据。 类似于具有2,000个子目录的目录,每个子目录可保存50GB至700GB的数据。 在此目录上运行rsync可能会花费大量时间,特别是如果您使用的是我喜欢的checksum选项。

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

先进的rsync

这是基于这种情况的示例。 假设我们有一个名为/ storage的目录,我们想要备份到/ media / WDPassport上安装的外部USB设备。

如果要备份/存储到USB外置驱动器,可以使用以下命令:

rsync -cav /storage /media/WDPassport

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

find /storage -type d -exec rsync -cav {} /media/WDPassport \;

看起来不错,但如果/ storage目录中有任何文件,则不会复制它们。 因此,我们如何同步/ storage中的文件? 还有一点细微的差别,其中某些选项将导致rsync同步 目录,它是源目录的根目录; 这意味着它将同步子目录两次,我们不希望这样。

长话短说,我选择的解决方案是“双增量”脚本。 这使我可以分解目录,例如,将/ home分解为单个用户的主目录,或者在您有多个大型目录(例如音乐或全家福)的情况下。

这是我的脚本示例:

HOMES="alan"     
DRIVE="/media/WDPassport"
for HOME in $HOMES; do
     cd /home/$HOME
     rsync -cdlptgov --delete . /$DRIVE/$HOME
     find . -maxdepth 1 -type d -not -name "." -exec rsync -crlptgov --delete {} /$DRIVE/$HOME \;
done

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

-d, --dirs                  transfer directories without recursing

然后, find命令将每个目录分别传递到rsync。 然后,Rsync复制目录的内容。 这可以通过传递r参数来完成,该参数告诉rsync递归目录。

-r, --recursive             recurse into directories

这样可以将rsync使用的增量文件保持在可管理的大小。

为了方便起见,大多数rsync教程都使用a (或archive )参数。 这实际上是一个复合参数。

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

我通过的其他参数将包含在a中 ; 这些是lptgo

-l, --links                 copy symlinks as symlinks     
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)

--delete选项告诉rsync删除目标上源中不再存在的任何文件。 这样,结果就是精确的重复。 您还可以为.Trash目录或MacOS创建的.DS_Store文件添加排除项。

-not -name ".Trash*" -not -name ".DS_Store"

小心

最后一条建议:rsync可能是破坏性命令。 幸运的是,其体贴入微的创作者提供了“试运行”的能力。 如果我们包含n选项,则rsync将显示预期的输出而无需写入任何数据。

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

该脚本可扩展至非常大的存储大小以及较大的延迟或慢速链接情况。 我敢肯定,一如既往,还有改进的空间。 如果您有建议,请在评论中分享。

翻译自:

rsync备份对路径的要求

转载地址:http://etszd.baihongyu.com/

你可能感兴趣的文章
11th Iran Nationwide Internet Contest 解题报告
查看>>
.net 委托 +lamda表达式
查看>>
第一个shell脚本——修改配置文件
查看>>
hdu_4742_Pinball Game 3D(cdq分治+树状数组)
查看>>
78. Subsets
查看>>
关于assert和de-assert的解释
查看>>
nodejs语法问题
查看>>
bzoj2190: [SDOI2008]仪仗队(欧拉)
查看>>
hdoj 1013
查看>>
HAproxy的安装配置及动静分离
查看>>
Vue2.0 的漫长学习ing-2-1
查看>>
oracle触发器和存储过程的格式
查看>>
xml的介绍
查看>>
MUI Picker选择器 自定义省市地址三级联动
查看>>
webservice4
查看>>
Magento 使用心得
查看>>
向量点积计算
查看>>
【转】 SQL 2005 try catch
查看>>
(75)zabbix_server.conf配置文件详解
查看>>
2016/1/3--jquery
查看>>