问题
如何才能rsync
将数据解压(但可高度压缩)到单个压缩档案(.tar.gz
、.zip
等)中,而不用每次都传输所有数据?
当前的
这是我现在正在使用的:
rsync -a --delete-during "/home/" "/mnt/external-hdd/backups/"
在本地端 ( /home/
),将有数千个可压缩的小文本文件。在“远程”端 ( /mnt/external-hdd/backups/
),将有本地端的精确副本。
通缉
- 本地:与之前相同
- “远程”端:
homes.tar.gz
包含来自的所有数据/home
,可以逐步更新rsync
就像默认的工作方式一样
我不会单独访问 中的特定文件homes.tar.gz
。如果出现问题,我会将其恢复到homes.tar.gz
包含的内容。
由于数据被压缩,这将显著减少存储大小。
最好不需要tar czf homes.tar.gz backups/; mv homes.tar.gz /mnt/external-hdd/backups/homes.tar.gz
。也就是说,tar
环和每次传输所有数据。
答案1
我将使用 gzip 压缩:
tar zcf /mnt/external-hdd/backups/home-$HOSTNAME-$(date +%F_%H%M%S).tar.gz /home
如果您需要更好的压缩,但速度较慢,请使用xz
:
tar Jcf /mnt/external-hdd/backups/home-$HOSTNAME-$(date +%F_%H%M%S).tar.xz /home
xz
如果你有多核 CPU,则可以加快一点速度:
tar cf - /home |xz -T 0 > /mnt/external-hdd/backups/home-$HOSTNAME-$(date +%F_%H%M%S).tar.xz
答案2
我如何将未压缩的(但高度可压缩)数据 rsync 到单个压缩档案中[…]?
你不能:那不是事实rsync
。
你可以做什么:
- 用于
rsync
将文件(可能使用跨链接压缩)从源主机复制到备份目标,并使它们在目标上保持未压缩状态 - 使用
tar
或pax
将选定的文件从源主机复制到压缩档案中,然后将该档案复制到备份目标
find
如果您想要压缩档案,那么和pax
(或find
和 GNU )的组合tar
可以让您生成自上次运行以来已更改的文件集。
但是,这两种替代方案都无法满足您的要求,即增量更新但压缩的单一存档。您是否考虑过使用“Veeam Agent for Linux Free”等商业产品?