1

Когда я печатаю:

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 ответов5

5

У вас есть дополнительный пробел в начале каждой строки в changeset.txt .

РЕДАКТИРОВАТЬ: Кроме того, вы случайно создали changeset.txt на компьютере с Windows? Если это так, в конце каждой строки может быть дополнительный символ ^M Большинство Unix-программ считают этот символ частью строки (здесь - частью имени файла), тогда как Windows считает ^M частью новой строки. Вы можете увидеть, так ли это, запустив cat -A changeset.txt: обычно в конце каждой строки должен быть только $ ; если вы видите ^M$ , у вас есть файл Windows. Команда dos2unix часто доступна для преобразования концов строк.

1

в Ubuntu 10.04, параметры tar --files-from или -T

когда последняя строка содержит пробел, tar завершился неудачно. Если в конце добавить пустую строку, она запускается.

1

У меня была такая же проблема на моем Mac (Darwin Kernel Version 10.8.0)

Оказалось, что две строки в моем файле file.txt имеют дополнительный пробел в конце строки. Как только я удалил пробел в конце строки, все заработало нормально. Я подтвердил это, повторно добавив пробел в конец строки, и это не удалось с ошибкой, заявив:

Невозможно стат: нет такого файла или каталога

Таким образом, кажется, что лишние пробелы в любом месте или лишняя пустая строка вызовут сбой.

Кроме того, FWIW, я смог указать файл, который содержал одно из следующего:

./src/com/blarg/foo.java

или же

src/com/blarg/foo.java

так что в любом случае было хорошо. проблема в том, что это просто надоедливый пробел.

0

Я получил его на работу, запустив:

tar cvf ~/changeset.tar `cat ../changeset.txt`
0

Скорее всего, tar хотел бы, чтобы его заметили о текущем пути. Так что вместо

admin/memberinformation.php

changeset.txt должен прочитать

./admin/memberinformation.php

или альтернативно содержать полный путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .