我有一个文件夹,里面包含当前和以前的项目文件,我计划使用版本化的 rsync 进行备份。为了制定更强大的备份策略,我希望定期将每月快照存储在异地(例如 amazon glacier)。
为了节省空间和带宽,我想在将备份发送到异地之前对其进行压缩。但是,由于每个月只有一小部分文件会发生变化,因此每次备份都发送整个压缩库也会浪费大量带宽。
理想情况下,我想要做的是将备份压缩为 500mb(或其他大小)的卷,然后将其上传到我的异地存储。下次备份时,这些卷中的大多数应该与上次备份相同,但包含自上次备份以来已更改的文件的卷除外。在这种情况下,我只需要上传更改的卷,从而节省带宽(和文件写入请求)。
是否可以使用 tar 和 gzip 的组合(也许可以拆分?)来实现我所描述的功能。或者使用其他命令行工具?
我可以想象的一个问题是,如果某个卷中包含的文件发生更改,则所有后续卷的内容可能会发生偏移,需要重新上传更改的卷和后续卷。也许以某种方式按文件夹划分卷更好?
我很乐意听到您的任何意见或建议。此致 M
答案1
tar
可以使用--listed-incremental
标志执行此操作,因此如所述,我可能会这样做。您可以使用 tar 支持的任何压缩器来压缩它(或者只是通过任意压缩器进行管道传输)。请参阅https://www.gnu.org/software/tar/manual/html_section/tar_39.html
我不确定这些是什么类型的项目,但如果是代码或其他基于文本的格式,我可能会考虑使用git
或其他源代码控制系统。
我还应该指出,这是 GNU tar。如果您使用的是 BSD 或其他 unix,则可能需要安装,gnutar
因为我认为它不bsdtar
支持此功能。