我想设置一个备份shell脚本,应该在我的服务器上每周运行一次,并保持每周备份十周,并且一切运行良好,除了一件事...奇怪的结果使用Linux发现
我有一个包含许多相当大的文件的文件夹,这样该文件夹的十大每周备份占用相当大的磁盘空间和许多文件夹中的文件较大的很少改变,所以我想我会分割备份的文件夹分为两部分:一部分用于包含在“正常”每周备份(并保留十周)的较小文件,另一部分文件用于每周更新的较大文件,而不保留较早的每周版本。
我用下面的命令为更大的文件:
/usr/bin/find /other/projects -size +100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_LARGE.tar
按预期工作。 tar -v选项用于调试。然而,归档较小的文件时,我使用了一个类似的命令:
/usr/bin/find /other/projects -size -100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_$FILE_END.tar
其中$ FILE_END是周数。上面的行不起作用。我有脚本运行的前一天,它花了几个小时,并产生一个70 Gb的文件,虽然预期的输出大小约为14 Gb(有很多文件)。似乎在大文件中有一些文件的重复,但我还没有能够完全检查。昨天我在命令行运行了上面的命令来查看较小的文件,我可以看到我知道包含大于100 Mb的文件。
不过,刚才我在命令行中运行find /other/projects -size -100M
,并且生成文件列表预期。
因此,如果任何人有任何想法我做错了我会很感激的提示或指针。文件名包括空格和各种字符,例如单引号,如果这与它有关。
我能想到的唯一的事情就是我没有正确使用xargs,并且我对此并不是很熟悉,但我仍然认为问题在于我使用find,因为它会查找给出的输入到xargs。
_“许多在该文件夹的文件较大的很少改变。” _大多数备份脚本中使用硬连接,以节省空间,这情况。幸运的是,你不必重新发明轮子。只需安装像['rsnapshot'](http://www.rsnapshot.org/)这样的备份脚本并使用它。 – John1024 2014-09-19 06:11:23
谢谢。我仍然很好奇我在做什么,但是我看了一下rsnapshot,看起来很有趣! – mdv 2014-09-20 11:36:35
rsnapshot也有你可能想要考虑的竞争者:dirvish,ccollect等等。关于你的'find' +'tar'命令,如果有任何明确的问题,我希望现在有人会发布一个答案。 – John1024 2014-09-20 20:30:01