我使用远程 ssh 服务器同步几台不同设备上的文件rsync
。问题是我有时会忘记同步我修改过文件的设备,这会让事情变得复杂。我的第一个问题是如何在 Ubuntu 中自动同步,我的意思是在修改文件时同步,但不要“太频繁”(比如当我在处理文本文件时)。
现在,自动同步的一个问题是,如果我在一台设备上搞砸了一个文件,它就会传播到其他设备上(当我错误地删除文件时,我甚至可能没有意识到这一点)。所以我想在远程服务器上进行备份。不久前,我使用了 rsync 中的备份选项,但备份的文件来回同步,造成了混乱。我怎样才能在远程服务器上备份旧文件而不将它们发送回本地设备?有没有办法控制每个文件保留多少个备份?
答案1
当您使用 rsync 选项时,您可以有多个备份--link-dest
。
rsync 将使用您的备份树创建另一个目录,硬链接未更改的文件,并仅复制已更改的文件。这样您就不会使用两倍的空间。例如:
rsync -a --delete --link-dest=../previous_backup source_directory/ backup
您必须使用支持硬链接的文件系统才能使其工作,ext4 可以正常工作。
我以前使用过 NTFS 可移动磁盘,但文件系统的性能受到很大影响:包含大约 15 个先前备份的 130 GB 备份需要 80 多分钟才能完成。在我将整个树移动到 ext4 分区(在同一磁盘上)后,后续备份大约需要 2 分钟才能完成。
我已根据自己的需要调整了此页面的脚本:
答案2
我建议将备份和同步分开。例如,使用 rsnapshot 进行备份,使用 lsync、owncloud、git 或 rsync(取决于需求和情况)同步数据以进行处理。