存档

文章标签 ‘find’

用find,xargs,tar命令可选备份

2010年1月12日 2 条评论

今天写了一个脚本要把server上所有的文件重新处理一下,由于没仔细检查就在server上跑了,导致server上所有的文件改错了,而且这个过程不可逆,幸好在另外一个server上面有备份,于是就想着把备份移过来,刚开始移的时候直接tar命令,没想到要恢复的那个目录下面还有很多pdf,mp3,ppt…文件,估计大概有20多个G,而我的脚本只改动了文本文件,于是,用find加tar试了一下,可是没想到对文件名中存在空格的文件会出错,搜索了一下,找到了一个好办法。

基本的用法比如:

find . -name '*.htm' | xargs tar czvf backup.tar.gz

一般情况,上面这个命令运行的很好,但是如果找到的文件名代空格,上面的命令运行就可能会出问题了。

find有一个参数-print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流。所以说xargs简直就是为find而生的。上面的问题就很好解决了:

find . -name '*.htm' -print0 | xargs -0 tar czvf backup.tar.gz