我在
Linux系统上使用rsync来同步本地磁盘和连接的USB驱动器之间的目录.我遇到的问题是,每天在服务器上创建备份的第三方系统实际上会更改嵌套在备份深处的目录的名称.此目录包含备份中所需的大部分数据.当rsync查看目录时,它会看到名称已更改并将其视为一个全新的目录.因此,我在USB驱动器上的rsync副本每天运行一个新目录.
我正在寻找一种“优雅”的方式来解决这个问题.是否可以创建一个保持不变的目录的链接?是否可以将rsync配置为检测目录是否相同,即使名称已更改?我相信有人不得不在此之前解决这个问题!
解决方法
一种方法是分两步完成. 1,通过使用忽略模式rsync除了有问题的目录之外的所有内容. 2,rsync只是在bash中使用globbing到达目录的目录,如下所示:
rsync -av /usr/lib/mydata/bigdatadir*/ /mnt/usbvolume/bigdatadir/
在源目录上使用尾部斜杠将有效地使rsync忽略目录名称,因为它将在目录的内容而不是目录本身上调用.当然,如果目录以上面的示例中的常量前缀或后缀命名,则此globbing将是最简单的.如果不是,您可以编写一个脚本来确定目录的实际名称,并执行更直接的操作:
rsync -av /usr/lib/mydata/$BIGDATADIRNAME/ /mnt/usbvolume/bigdatadir/
最后,您的伪代码将是这样的:
>查找$BIGDATADIRNAME>像往常一样重新同步所有内容,但忽略$BIGDATADIRNAME> Rsync $BIGDATADIRNAME的内容