增量备份tar错误

时间:2013-08-14 14:20:43

标签: linux command-line backup tar

我正在制作一个备份系统。

我有2台服务器: main发送数据到备份服务器,然后备份服务器压缩数据。为了节省磁盘使用量,我只需压缩已更改的文件,这要归功于存储上次备份时间的flag-file

有时它可以正常使用,但有时我的脚本会以error 123退出此错误来自xargs

描述如下: 123 if any invocation of the command exited with status 1-125

所以我发布的command是:

find /home/* -name "." -not -path "/home/*/www/cache/*" -not -path "/home/*/www/cc/cache/*" -not -path "/home/*/www/ot/cache/*" -not -path "/home/backups/*" -newer /var/backups/data/flagfile -print0 | xargs -0 -r tar -czvf /home/backups/incremental/H14/backup.tar.gz

当我这样做时: find /home/* -name "*.*" -not -path "/home/*/www/cache/*" -not -path "/home/*/www/cc/cache/*" -not -path "/home/*/www/ot/cache/*" -not -path "/home/backups/*" -newer /var/backups/data/flagfile -print0

它返回预期的文件列表。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

首先将文件列表重定向到文本文件可能是个好主意,称之为files.txt

find /home/* -name "." 
    -not -path "/home/*/www/cache/*" 
    -not -path "/home/*/www/cc/cache/*" 
    -not -path "/home/*/www/ot/cache/*"
    -not -path "/home/backups/*" 
-newer /var/backups/data/flagfile -print0 > files.txt

tar -czvf /home/backups/incremental/H14/backup.tar.gz ... 

任何用户都可以通过上传为您的系统编写一些非常奇怪的文件名     到他们的网站。

xargs崩溃时,使用hexviewer查看文件并检查非ascii字符;)        你使用的是哪个版本的xargs ...

答案 1 :(得分:0)

我用以下代码解决了这个问题:

find /home/* -name "." -not -path "/home/*/www/cache/*" -newer /var/backups/data/flagfile -print0 > files.txt

然后是tar命令:

tar czvf /home/backups/incremental/H14/backup.tar.gz --files-from files.txt --quoting-style=shell

--quoting-style=shell转义特殊字符,因此tar不会退出。