我每天使用带硬链接的rsync将笔记本电脑备份到Fedora桌面。 这已经工作了近一年了。
我最近购买了一台新电脑,通过我的数据传输,并希望每天继续备份这台计算机。
但是,由于从旧笔记本电脑到新笔记本电脑的数据传输,时间戳已经发生了明显的变化,从而导致我的日常rsync备份重新传输所有的数据。
我认为通过添加-c(校验和)开关到我的rsync备份,它将匹配基于校验和的文件,而不是时间戳和大小,并且只传输那些不同或不存在的文件。 这似乎工作,但在检查新的备份时,硬链接没有被创build,看起来应该是硬链接的文件只是从备份服务器上的前一个备份目录复制到新的备份目录。 这对我来说是非常奇特的行为,我很难搞清楚为什么会发生这种情况。 校验和匹配我认为应该很难链接的文件。
我已经浏览了rsync手册页和谷歌了一下,一直没有find任何东西,以更好地理解这种行为。
我想你是误解校验和和硬链接选项。
--checksum选项在手册页中被描述为“基于校验和的跳过,而非mod时间和大小”。 这意味着mod的时间和大小基本上被忽略,但是这意味着所有的文件都被读取(因为它必须读取文件来计算校验和。
如果时间和大小不同,认识到rsync无论如何都会这样做是很重要的。 所以 – --checksum导致更多的工作(阅读每个文件),比没有它。 没有它,校验和只有在mod时间或大小不同的情况下才能完成。 如上所述,这只影响要跳过的文件。
--checksum通常在备份脚本中使用“checkcks”,相当于“完全备份”,例如每月一次。 这确保了任何可能已经改变的文件,但是以这样的方式,即mod时间和大小保持相同,得到正确的备份。
--hard-links选项(从手册页):“这告诉rsync在传输中寻找硬链接的文件”。 请注意,这只是在传输,所以它不会检测到您有一个rsync服务器上的数据的现有副本,在另一个位置,并硬链接它。 它只链接正在传输的文件和之前传输的其他文件。
因此,如果您要将新笔记本电脑的备份目录硬链接到旧笔记本电脑的备份目录,则需要删除新笔记本电脑的备份目录,并使用硬链接(例如通过cp -al )重新创build该目录。 但是,如果所有的文件date都发生了变化,那么您很可能会遇到rsync重新传输这些文件并破坏这些硬链接的问题。 您首先可能需要将一台笔记本电脑rsync同步到另一台笔记本电脑,注意不要rsync真正需要不同的数据。 这样的文件应该有相同的date,这将使您的rsync备份更加愉快。
我知道你已经说过你阅读手册页,但我鼓励你再看一遍,特别是--checksum和--hard-links选项的详细描述。 你也应该阅读一下“ --in-place选项,因为如果你试图保留硬链接,它可能会交互不良。
–checksum将按照您的预期避免传输文件,并使用现有的备份作为参考
–link-dest将硬链接新旧备份,从而减less磁盘使用量。
但是,但是,如果原始文件的时间戳不同于旧的备份,硬链接将是不可能的(两个硬链接不能有不同的时间戳,所有权或权限,所以你没有硬链接结束..
解决方法是使用fdupes -r1L / folder1 / folder2它将replace与硬链接的唯一条件是内容是相同的folder2文件。
顺便说一句,另请参阅我的shell脚本,使用rsync和备份之间的硬链接(重复数据删除)对完整文件系统执行快照备份,以获得完整备份,尽可能less地使用磁盘空间,就好像它是增量备份一样。 它带有调整设置,如MD5完整性签名,“chattr”保护,过滤规则,磁盘配额,指数分布的保留策略(备份轮换,同时保存比旧版本更新的备份)。 它是免费的: http : //blog.pointoftware.ch/index.php/howto-local-and-remote-snapshot-backup-using-rsync-with-hard-links/
欢呼弗朗索瓦Scheurer