当我输入:
tar -cvf ~/changeset.tar --files-from ~/changeset.txt
它响应以下输出:
tar: admin/memberinformation.php : Cannot stat: No such file or directory
tar: business/clsPreferredAgencies.php : Cannot stat: No such file or directory
tar: business/clsPreferredAgencies_test.php : Cannot stat: No such file or directory
tar: business/clscustomer.php : Cannot stat: No such file or directory
tar: business/clsfeedback.php : Cannot stat: No such file or directory
tar: business/clsleads.php : Cannot stat: No such file or directory
tar: business/connection.php : Cannot stat: No such file or directory
tar: crons/daily_activity.php : Cannot stat: No such file or directory
tar: crons/not_closed_orders2.php : Cannot stat: No such file or directory
tar: crons/unaccepted_orders2.php : Cannot stat: No such file or directory
tar: js/jquery-1.4.2.js : Cannot stat: No such file or directory
tar: sql/alter-project.sql : Cannot stat: No such file or directory
tar: sql/buyerName.php : Cannot stat: No such file or directory
tar: sql/preferredAgencies.sql : Cannot stat: No such file or directory
tar: sql/underwriters_list.sql : Cannot stat: No such file or directory
tar: user/close_selectedporject.php : Cannot stat: No such file or directory
tar: user/feedback.php : Cannot stat: No such file or directory
tar: user/forum.php : Cannot stat: No such file or directory
tar: user/initiatelead.php : Cannot stat: No such file or directory
tar: user/leadprocess_detail.php : Cannot stat: No such file or directory
tar: user/mem_direc.php : Cannot stat: No such file or directory
tar: user/qws.php : Cannot stat: No such file or directory
tar: user/view_leaddetails.php : Cannot stat: No such file or directory
tar: user/viewfeedbackforusers.php : Cannot stat: No such file or directory
tar: user/viewfeedbacks.php : Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
lsiden@lsiden2:~/titan$ ls admin/memberinformation.php
admin/memberinformation.php
以下是 ~/changeset.txt 的内容换句话说,一堆相对路径。作为健全性检查:
$ ls admin/memberinformation.php
admin/memberinformation.php
为什么 tar 找不到这些文件,尽管可以通过给定的相对路径从当前目录清楚地访问它们?
供参考:
$ tar --version
tar (GNU tar) 1.15.1
答案1
每行开头都有一个额外的空格changeset.txt
。
编辑: 另外,您是否changeset.txt
在 Windows 机器上创建过?如果是这样,那么^M
每行末尾可能会有一个额外的字符。大多数 unix 程序会将此字符视为行的一部分(这里是文件名的一部分),而 Windows 则将其视为^M
换行符序列的一部分。您可以通过运行来查看是否是这种情况:通常每行末尾cat -A changeset.txt
应该只有一个;如果您看到,则说明您有一个 Windows 文件。该命令通常可用于转换行尾。$
^M$
dos2unix
答案2
我的 Mac 上也遇到了同样的问题(Darwin 内核版本 10.8.0)
事实证明,我的 file.txt 中有两行在行尾有一个多余的空格。一旦我删除行尾的空格,它就可以正常工作了。我通过在行尾重新添加空格来确认这一点,但它失败了,并显示以下错误:
无法统计:没有这样的文件或目录
因此看起来,任何地方的额外空格或额外的空行都会导致失败。
此外,FWIW,我能够指定包含以下任一内容的文件:
./src/com/blarg/foo.java
或者
src/com/blarg/foo.java
所以无论哪种方式都可以。问题只是在于那个令人讨厌的空白。
答案3
在 ubuntu 10.04 上,tar --files-from
或-T
选项
当最后一行包含空格时,tar 会失败。如果在末尾添加一个空行,tar 就会运行。
答案4
我通过运行来让它工作:
tar cvf ~/changeset.tar `cat ../changeset.txt`