我有一些远程服务器和一个备份服务器,我正在使用 Rsnapshot 在备份服务器上进行远程备份。在我的计划中,我想先运行 shell 脚本来压缩文件,然后 Rsnapshot 可以备份压缩文件。在 Rsnapshot 配置文件中,我找到了cmd_preexec
,我想使用它,但我不知道如何编写压缩脚本。有人能帮我写一下脚本吗?
任何帮助都将不胜感激。谢谢。
答案1
问题是,你为什么要压缩?
压缩以提高传输速度
如果要压缩传输速度,可以向 rsync 添加一个参数以启用传输过程中的即时压缩:
rsync_short_args -az
(来源)
压缩以减少备份磁盘的空间要求
rsnapshot 似乎对压缩备份的处理相当糟糕。我找到了一种在备份服务器上压缩文件的解决方案:
(...) (第二及以后) 存档集中的某些文件可以压缩,那些不在链接集中的文件。
find daily.1 -links 1 -size +1M ! -name "*.bz2" -print | grep -v \.svn | xargs pbzip2 -v
恢复
find daily.1 -links 1 -name "*.bz2" -print | xargs pbzip2 -d -v
仅针对配置中最短的第二个存档集(例如 hourly.1、daily.1 或 weekly.1)运行该操作。
(来源)。
如果您想在不干扰的情况下减少空间需求,您也可以在目标文件系统本身上使用透明压缩。我知道 ZFS 和 BTRFS 本身就提供此功能。如果您的硬盘是 SSD,它可能已经在内部对所有文件进行了透明压缩。