linux – Rsync -avzHP遵循硬链接而不是将它们复制为硬链接

前端之家收集整理的这篇文章主要介绍了linux – Rsync -avzHP遵循硬链接而不是将它们复制为硬链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用rsnapshot创建我的“work”-share的每小时/每日/每周/每月备份.现在我正在尝试使用rsync将整个备份目录复制到外部驱动器上.

我在屏幕会话中使用了这个命令/参数(是的,rsync-exclude.txt位于dir我运行命令)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

整个事情是在QNAP TS-439上运行,内部驱动器是单个磁盘(无RAID)格式化的EXT4,外部驱动器是格式化的EXT3.

会发生什么:Rsync跟随每个硬链接并复制实际文件,而不是在外部驱动器上重新创建更新的硬链接.我没有立刻意识到这一点,所以外部驱动器最终破坏了相同文件的xxx副本.

我想要实现的是:将rsnapshot生成的整个文件结构复制到外部驱动器,保持硬链接以节省空间.注意:这不一定是使用rsync完成的.

谢谢你的想法和时间.我很感激你的帮助,很开心.

更新:我了解到,rsnapshot没有使用符号链接,它使用的是硬链接,所以我现在使用-H选项,它应该按照Rsnapshot to multiple destinations (or maintain hard links structure)保留硬链接结构,但它仍然无法工作……我在这里缺少什么?

更新2:我在这里找到了关于这个主题的另一个意见/声明:rsync with –hard-links freezes Steven Monday建议不要尝试rsync包含硬链接的大文件结构,因为它吸收了大量内存,这对rsync来说是一项艰巨的任务.所以可能更好的解决方案是制作我正在尝试备份的.img数据结构.你怎么看?

解决方法

理论上,rsync命令的-H(或–hard-link)选项将完成您要完成的任务,简而言之:创建文件系统的副本,以保留原始的硬链接结构.正如我在 my answer to another similar question中提到的,一旦源文件系统增长超过硬链接复杂度的某个阈值,此选项注定会失败.

该阈值的精确位置可能取决于您的RAM和硬链接的总数(可能还有许多其他东西),但我发现尝试精确定义它没有意义.真正重要的是,在实际情况下,阈值是非常容易交叉的,并且你不会知道你已经越过它,直到你试图运行rsync -aH或cp的那一天 – 一个挣扎并最终失败的人.

我建议这样做:将重度较高的链接文件系统复制为一个单元,而不是文件.也就是说,将整个文件系统分区复制为一个大blob.有很多工具可以做到这一点,但最普遍的是dd.

使用库存固件,您的QNAP NAS应该内置dd,以及fdisk.使用fdisk,在目标驱动器上创建一个至少与源分区一样大的分区.然后,使用dd在新创建的目标分区上创建源分区的精确副本.

dd副本正在进行中时,必须确保源文件系统中没有任何更改,以免最终在目标上出现损坏的副本.一种方法是在开始复制过程之前卸载源;另一种方法是将源安装在只读模式.

原文链接:https://www.f2er.com/linux/401894.html

猜你在找的Linux相关文章