tar --files-from жалуется "Невозможно указать: нет такого файла или каталога"
Когда я печатаю:
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 не может найти ни один из этих файлов, даже если они явно доступны из текущего каталога с указанными относительными путями?
FYI:
$ tar --version
tar (GNU tar) 1.15.1
5 ответов
У вас есть дополнительный пробел в начале каждой строки changeset.txt
,
РЕДАКТИРОВАТЬ: Кроме того, вы случайно создали changeset.txt
на машине с Windows? Если это так, может быть ^M
символ в конце каждой строки. Большинство Unix-программ считают этот символ частью строки (здесь, частью имени файла), тогда как Windows считает ^M
часть последовательности новой строки. Вы можете увидеть, так ли это, запустив cat -A changeset.txt
обычно должно быть $
в конце каждой строки; Если ты видишь ^M$
, у вас есть файл Windows. dos2unix
Команда часто доступна для преобразования концов строк.
На Ubuntu 10.04, tar --files-from
или же -T
опции
когда последняя строка содержит пробел, tar завершился неудачно. Если в конце добавить пустую строку, она запускается.
У меня была такая же проблема на моем Mac (Darwin Kernel Version 10.8.0)
Оказалось, что две строки в моем файле file.txt имели дополнительный пробел в конце строки. Как только я удалил пробелы в конце строк, все заработало нормально. Я подтвердил это, повторно добавив пробел в конец строки, и это не удалось с ошибкой, заявив:
Невозможно стат: нет такого файла или каталога
Таким образом, кажется, что лишние пробелы в любом месте или лишняя пустая строка вызовут сбой.
Кроме того, FWIW, я смог указать файл, который содержал одно из следующего:
./src/com/blarg/foo.java
или же
src/com/blarg/foo.java
так что в любом случае было хорошо. проблема в том, что это просто надоедливый пробел.
Скорее всего, tar хотел бы, чтобы его заметили о текущем пути. Так что вместо
admin/memberinformation.php
changeset.txt должен прочитать
./admin/memberinformation.php
или альтернативно содержать полный путь.
Я получил его на работу, запустив:
tar cvf ~/changeset.tar `cat ../changeset.txt`