备份最重要的是什么? 是的,可重复性。 因此,让我们在膝盖上和rsync的--link-dest
选项上骑自行车。 我们的自行车不会有像git这样的复杂Restic数据结构,也不会有像双重性这样的后端。 但是即使压力很大,我们也可以从记忆中恢复他的工作。
--link-dest
选项允许您指定以前的备份版本,如果自上次以来文件未更改,则rsync将在其上放置硬链接 。
也就是说, rsync --link-dest=/var/backups/www.1 remote:/var/www /var/backups/www.0
仅将那些文件从远程服务器复制到/var/backups/www.0文件夹发生了变化,但其余的将在/var/backups/www.1中添加硬链接
现在的窍门很小:将rsync
调用包装在代码中,该代码将备份后退一/var/backups/www.0
,并为/var/backups/www.0
的新备份腾出空间,并在/var/backups/www.0
时还删除了/var/backups/www.9
的最后一个副本。
此代码会将/var/backups/www.1
重命名为/var/backups/www.2
而/var/backups/www.0
重命名/var/backups/www.1
。
仅需运行rsync --link-dest=/var/backups/www.1 remote:/var/www /var/backups/www.0
,即可添加选项。 因此,--delete选项删除最后一个副本中的文件( rsync
默认情况下不执行此操作),- -C
选项忽略.svn
, .git
文件夹, patch
工件和某些其他常见类型的临时文件。
一起:
括号之外是错误处理(请参阅set -e
)和通知,并且副本数量可以定制。
但这有效!