tar --files-from жалуется "Невозможно указать: нет такого файла или каталога"

20264
Larry

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

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 
1

5 ответов на вопрос

5
Gilles

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

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

Я пытался удалить лишнее пространство, но оно все равно не сработало. В конце концов мне пришлось сделать «tar cvf myfile.tar` cat mystuff` »вместо« -T mystuff » Larry 14 лет назад 0
@Larry: прежде чем я заметил дополнительные пробелы, я подумал об окончании строк в Windows (см. Мое редактирование); это могли быть обе проблемы? Gilles 14 лет назад 0
1
eric

на Ubuntu 10.04, tar --files-fromили -Tварианты

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

1
paulh

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

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

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

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

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

./src/com/blarg/foo.java 

или же

src/com/blarg/foo.java 

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

0
Janne Pikkarainen

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

admin/memberinformation.php 

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

./admin/memberinformation.php 

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

`admin / memberinformation.php` и`. / admin / memberinformation.php` оба работают, если текущий рабочий каталог совпадает с файлами, и оба не будут работать, если это не каталог, содержащий файлы matthias krull 14 лет назад 1
Каталог currend действительно содержит файлы. Даже когда я убрал лишние пробелы, это не сработало. В конце концов мне пришлось использовать другой подход, который я упоминал в ответе выше. Larry 14 лет назад 0
0
Larry

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

tar cvf ~/changeset.tar `cat ../changeset.txt` 
Это может сработать в вашем случае, но на самом деле не дает никакого представления о вашей реальной проблеме ... довольно бесполезно, когда вы путаете относительный и абсолютный путь, не рассказывая нам о структуре диектории. -1 прости. matthias krull 14 лет назад 1

Похожие вопросы