我在屏幕会话中使用了这个命令/参数(是的,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数据结构.你怎么看?
解决方法
该阈值的精确位置可能取决于您的RAM和硬链接的总数(可能还有许多其他东西),但我发现尝试精确定义它没有意义.真正重要的是,在实际情况下,阈值是非常容易交叉的,并且你不会知道你已经越过它,直到你试图运行rsync -aH或cp的那一天 – 一个挣扎并最终失败的人.
我建议这样做:将重度较高的链接文件系统复制为一个单元,而不是文件.也就是说,将整个文件系统分区复制为一个大blob.有很多工具可以做到这一点,但最普遍的是dd.
使用库存固件,您的QNAP NAS应该内置dd,以及fdisk.使用fdisk,在目标驱动器上创建一个至少与源分区一样大的分区.然后,使用dd在新创建的目标分区上创建源分区的精确副本.
dd副本正在进行中时,必须确保源文件系统中没有任何更改,以免最终在目标上出现损坏的副本.一种方法是在开始复制过程之前卸载源;另一种方法是将源安装在只读模式.