备份最重要的是什么? 是的,可重复性。 因此,让我们在膝盖上和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 )和通知,并且副本数量可以定制。
但这有效!