Cal*_*ter 107 linux backup tar find
好吧,这里的问题很简单.我正在编写一个简单的备份代码.它工作正常,除非文件中有空格.这就是我找到文件并将它们添加到tar存档的方式:
find . -type f | xargs tar -czvf backup.tar.gz
Run Code Online (Sandbox Code Playgroud)
问题是当文件在名称中有空格时,因为tar认为它是一个文件夹.基本上有一种方法可以在find的结果周围添加引号吗?或者以不同的方式解决这个问题?
Ste*_*let 208
用这个:
find . -type f -print0 | tar -czvf backup.tar.gz --null -T -
Run Code Online (Sandbox Code Playgroud)
它会:
tar -cwith xargs会在你拥有大量文件时一样另见:
err*_*one 14
可能有另一种方法来实现你想要的.基本上,
然后tar使用-T选项,它允许它获取一个文件位置列表(你刚用find创建的那个!)
find . -name "*.whatever" > yourListOfFiles
tar -cvf yourfile.tar -T yourListOfFiles
Run Code Online (Sandbox Code Playgroud)试试跑步:
find . -type f | xargs -d "\n" tar -czvf backup.tar.gz
Run Code Online (Sandbox Code Playgroud)
War*_* P 7
为什么不:
tar czvf backup.tar.gz *
Run Code Online (Sandbox Code Playgroud)
当然,使用find然后使用xargs是聪明的,但是你正在以艰难的方式去做.
更新:Porges评论了一个find-option,我认为这个答案比我的答案更好,或者另一个: find -print0 ... | xargs -0 ....