我使用rsnapshot为我的“工作”共享创build每小时/每天/每周/每月的备份。 现在我试图使用rsync将整个备份目录复制到外部驱动器上。
我使用这个命令/参数在一个屏幕会话(是的,rsync-exclude.txt位于我运行命令的目录)
rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;
整个东西在QNAP TS-439上运行,内部驱动器是一个单一的磁盘(没有RAID)EXT4格式化,外部驱动器形成EXT3。
会发生什么情况是:Rsync跟随每个硬链接并复制实际的文件,而不是重新创build外部驱动器上更新的硬链接 。 我没有马上意识到这一点,所以外部驱动器最终被同一个文件的xxx副本丢弃了。
我想实现的是:将由rsnapshot生成的整个文件结构复制到外部驱动器,保持硬链接节省空间。 注意:这不一定是使用rsync完成的。
感谢您的想法和时间。 我很感激你的帮助,大的时间。
更新:我知道,rsnapshot没有使用符号链接,它使用硬链接,所以我现在使用-H选项,它应该根据Rsnapshot保存硬链接结构到多个目的地(或维护硬链接结构),但它仍然不会工作…我在这里错过了什么?
更新2:在这里我发现了另一个关于这个话题的观点/陈述: rsync和–hard-links冻结了 Steven星期一build议不要尝试rsync包含硬链接的大文件结构,因为它吸收了很多内存,对于rsync来说是一件很难的事情。 所以可能更好的解决scheme是制作一个.img数据结构,我试图备份。 你怎么看?
理论上, rsync命令的-H (或--hard-link )选项将完成您正在尝试完成的任务,简而言之:创build保留原始硬链接结构的文件系统副本。 正如我在回答另一个类似问题时所提到的,一旦源文件系统增长超过硬链接复杂度的某个阈值,这个选项注定会失败。
该阈值的确切位置可能取决于您的RAM和硬链接的总数(可能还有其他许多事情),但是我发现尝试精确定义它是没有意义的。 真正重要的是,在现实世界中,阈值是非常容易跨越的,而且你不会知道你已经跨越了它,直到你试图运行rsync -aH或cp -a奋斗,最终失败。
我推荐的是这样的:复制你的硬连接的文件系统作为一个单位,而不是文件。 也就是说,将整个文件系统分区复制为一个大块。 有很多工具可以做到这一点,但最普遍的是dd 。
使用股票固件,您的QNAP NAS应该有内置的dd以及fdisk 。 使用fdisk ,在目标驱动器上创build一个至less与源分区一样大的分区。 然后,使用dd在新创build的目标分区上创build源分区的精确副本。
在进行dd复制时,必须确保源文件系统中没有任何更改,以免最终在目标上损坏副本。 一种方法是在开始复制过程之前umount源代码; 另一种方法是以只读模式安装源代码。
-l是符号链接,为什么它会为硬链接做任何事情?
(对不起,这是一个答案,而不是一个评论,我没有评论权利,这个答案需要一个回应)
另一个说明应该是一个评论:这是所有本地硬件还是你在虚拟机,networking安装?
忽略我以前的评论为什么你使用硬链接,我错过了rsnapshot评论。
首先testing两个本地目录本地磁盘之间的rsync,然后再对远程磁盘进行testing将会有所帮助。 这个小testing显示了-H选项如预期。 ls的-i选项显示inode,从而显示链接已保存,没有额外的副本。
$ rsync -avzHP src/ dest sending incremental file list created directory dest ./ file111_prime.txt 9 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/3) file111.txt => file111_prime.txt sent 156 bytes received 59 bytes 430.00 bytes/sec total size is 18 speedup is 0.08 $ ls -liR .: total 8 414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest 414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src ./dest: total 8 414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt 414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt ./src: total 8 414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt 414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt
后续testingrsync -avzHP src/ host:/tmp到远程主机仍然保持硬链接
这是一个远射,但如果你不能find另一种解决scheme,我会build议尝试格式化USB驱动器EXT4。 也许这可能是问题: https : //bugzilla.samba.org/show_bug.cgi?id = 7670
如果在源文件夹中有足够的硬链接并且目标卷足够小,则使用rsync –hard-links进行复制可能会失败。 Rsync通过耗尽目标上最大数量的硬链接而失败真正的问题不是rsync,而是底层文件系统。
你有没有尝试添加-l选项?
我知道手册页说 ,它包含在-a但手册页并不总是100%准确。