我有一个脚本,它使用以下命令定期备份目录“tar -czvf [名称] [目录]“但我的问题是,该脚本最近给服务器(Minecraft SMP)带来了很大的压力,并且在备份时往往会滞后玩家,最近这已经花费了将近 5 分钟。
所以我需要知道是否有办法在存档和备份文件的同时控制 GZip 压缩率?
我知道我可以先对文件进行 tar 处理,然后再使用不同的压缩率对它们进行 GZip 压缩,但这样做不行,因为它会使用当前服务器时间来命名文件,而这个时间有时会在命令之间发生变化。
有什么见解吗?提前致谢。
答案1
答案2
可能有点晚了,但这可以帮助其他人......
如果您定期备份类似数据,则应考虑先只制作一份副本(不压缩,因此基本上只制作一个 tar 文件),然后压缩更多备份副本。对于 Minecraft 服务器,您可能每天都会制作几个备份。您可以安排使用强大的算法(例如每天左右)将这些备份压缩在一起,并在服务器上没有太多人时运行它。延迟会更长,但重点是生成的存档会非常小(因为大多数世界文件在备份之间根本不会改变)。如果您在某些核心上有一些备用电源(这很有可能),压缩将使用它(并导致服务器其余部分的延迟更少),可能提高绩效在备份期间。
答案3
我经常做这样的事情,所以当 tar 过程完成时,我不需要记得进行 gzip 操作,因为它都在一行上完成:
tar cvf - $nameOfDirOrFileToBeBackedUp | gzip -$compressionLevel > $backupLocation/$nameOfDirOrFileToBeBackedUp.tar.gz
此方法适用于不支持 gzip 的旧版本 tar(Solaris 10 仍然不支持)。