When I type:
tar -cvf ~/changeset.tar --files-from ~/changeset.txtit responds with this output:
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.phpHere are the contents of ~/changeset.txt. In other words, a bunch of relative paths. As a sanity check:
$ ls admin/memberinformation.php
admin/memberinformation.phpWhy can't tar find any of these files even though they are clearly reachable from the current directory with the relative paths given?
FYI:
$ tar --version
tar (GNU tar) 1.15.1 5 Answers
You have an extra space at the beginning of each line in changeset.txt.
EDIT: Also, did you by any chance create changeset.txt on a Windows machine? If so, there may be an extra ^M character at the end of each line. Most unix programs will consider this character to be part of the line (here, part of the file name), whereas Windows considers the ^M part of the newline sequence. You can see whether this is the case by running cat -A changeset.txt: normally there should just be a $ at the end of each line; if you see ^M$, you have a Windows file. The dos2unix command is often available to convert the line endings.
I had this same problem on my Mac (Darwin Kernel Version 10.8.0)
It turned out that two of the lines in my file.txt had an extra whitespace at the end of the line. Once I deleted the whitespace at the end of the lines, it worked fine. I confirmed this by re-adding a whitespace to the end of a line and it failed with an error stating:
Cannot stat: No such file or directory
So it appears that an extra whitespace anywhere or an extra blank line will cause a failure.
Also, FWIW, I was able to specify a file that contained either of the following:
./src/com/blarg/foo.javaor
src/com/blarg/foo.javaso either way was okay. it's just that pesky whitespace that is the problem.
on ubuntu 10.04, tar --files-from or -T options
when a the last line contains space, tar failed. If you add a blank line at the end , it's run.
Most likely tar would love to be noticed about the current path. So instead of
admin/memberinformation.phpthe changeset.txt should read
./admin/memberinformation.phpor alternatively contain the full path.
2I got it to work by running:
tar cvf ~/changeset.tar `cat ../changeset.txt` 1