我在文本文件中有一个庞大的文件列表。此列表传递给 tar,如下所示:
cat 列表.txt | xargs tar rvf 存档.tar --ignore-failed-read
问题是列表中的一些文件不再存在。因此 tar 一直提示“无法统计:没有这样的文件或目录...”。我对此没有意见,但是当出现其中一些消息时,tar 会挂起,需要等待几分钟才能恢复操作,这使得备份非常慢。关于如何仅将现有文件过滤到 tar,有什么想法吗?
问候
答案1
列表有多大?有多少文件丢失了?您可以筛选丢失的文件吗?
% cat list.txt
foo/bar
foo/baz
foo/fred
foo/wilma
betty
% for file in `cat list.txt`; do [ -f $file ] && echo $file; done | xargs tar rvf archive.tar
foo/bar
foo/fred
betty
% tar tvf archive.tar
-rw-r--r-- scott/scott 0 2011-07-05 10:25 foo/bar
-rw-r--r-- scott/scott 0 2011-07-05 10:25 foo/fred
-rw-r--r-- scott/scott 0 2011-07-05 10:25 betty
%
答案2
我不知道这是否是最好的方法,但我发现使用参数-T
tar 会更开心。
tar rvf archive.tar --ignore-failed-read -T filelist.txt