tar --files-from beanstandet "Kann stat nicht: Keine solche Datei oder Verzeichnis"

20368
Larry

Wenn ich tippe:

tar -cvf ~/changeset.tar --files-from ~/changeset.txt 

es antwortet mit dieser Ausgabe:

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 

Hier sind die Inhalte von ~ / changeset.txt . Mit anderen Worten, eine Reihe relativer Pfade. Zur Überprüfung der Vernunft:

$ ls admin/memberinformation.php  admin/memberinformation.php 

Warum kann tar keine dieser Dateien finden, obwohl sie aus dem aktuellen Verzeichnis mit den angegebenen relativen Pfaden eindeutig erreichbar sind?

Zu Ihrer Information:

$ tar --version tar (GNU tar) 1.15.1 
1

5 Antworten auf die Frage

5
Gilles

Sie haben ein zusätzliches Leerzeichen am Anfang jeder Zeile in changeset.txt.

EDIT : Haben Sie auch zufällig changeset.txtauf einem Windows-Rechner erstellt? Wenn ja, kann ^Mam Ende jeder Zeile ein zusätzliches Zeichen stehen. Die meisten Unix-Programme betrachten dieses Zeichen als Teil der Zeile (hier einen Teil des Dateinamens), während Windows den ^MTeil der Zeilenumbrüche berücksichtigt. Ob dies der Fall ist, können Sie sehen, indem Sie Folgendes ausführen cat -A changeset.txt: Normalerweise sollte $am Ende jeder Zeile nur ein stehen; Wenn Sie sehen ^M$, haben Sie eine Windows-Datei. Der dos2unixBefehl steht häufig zum Konvertieren der Zeilenenden zur Verfügung.

Ich habe versucht, den zusätzlichen Platz zu entfernen, aber es funktioniert trotzdem nicht. Ich musste schließlich "tar cvf myfile.tar` cat mystuff "anstelle von" -T mystuff "tun. Larry vor 14 Jahren 0
@ Larry: Bevor ich die zusätzlichen Leerzeichen bemerkte, dachte ich an Windows-Zeilenenden (siehe meine Bearbeitung). Könnten es beide Probleme gewesen sein? Gilles vor 14 Jahren 0
1
eric

auf Ubuntu 10.04 tar --files-fromoder -TOptionen

Wenn in der letzten Zeile ein Leerzeichen enthalten ist, ist tar fehlgeschlagen. Wenn Sie am Ende eine leere Zeile hinzufügen, wird sie ausgeführt.

1
paulh

Ich hatte das gleiche Problem auf meinem Mac (Darwin Kernel Version 10.8.0).

Es stellte sich heraus, dass zwei der Zeilen in meiner Datei.txt am Ende der Zeile einen zusätzlichen Leerraum hatten. Nachdem ich das Leerzeichen am Ende der Zeilen gelöscht hatte, funktionierte es einwandfrei. Ich bestätigte dies, indem ich am Ende einer Zeile ein Leerzeichen hinzufügte, das mit einem Fehler fehlschlug:

Kann stat nicht: Keine solche Datei oder Verzeichnis

Es scheint also, dass ein zusätzlicher Leerraum irgendwo oder eine zusätzliche Leerzeile einen Fehler verursachen wird.

Außerdem, FWIW, konnte ich eine Datei angeben, die eines der folgenden Elemente enthielt:

./src/com/blarg/foo.java 

oder

src/com/blarg/foo.java 

So oder so war es okay. Es ist nur dieser lästige Whitespace, der das Problem darstellt.

0
Janne Pikkarainen

Am ehesten würde Teer gerne über den aktuellen Weg auffallen. Also statt

admin/memberinformation.php 

Die changeset.txt sollte lesen

./admin/memberinformation.php 

oder alternativ den vollständigen Pfad enthalten.

`admin / memberinformation.php` und`. / admin / memberinformation.php` funktionieren beide, wenn das aktuelle Arbeitsverzeichnis das gleiche ist, das die Dateien enthält, und beide funktionieren nicht, wenn es nicht das Verzeichnis ist, in dem sich die Dateien befinden matthias krull vor 14 Jahren 1
Das aktuelle Verzeichnis enthält die Dateien. Selbst als ich die zusätzlichen Felder entfernt habe, hat es nicht funktioniert. Ich musste schließlich einen anderen Ansatz wählen, den ich oben in der Antwort erwähnt habe. Larry vor 14 Jahren 0
0
Larry

Ich habe es zum Laufen gebracht:

tar cvf ~/changeset.tar `cat ../changeset.txt` 
Dies mag in Ihrem Fall funktionieren, aber wirklich keine Einsicht in Ihr aktuelles Problem bringen .. ziemlich nutzlos, wenn Sie relative und absulute Wege mischen, ohne uns über die aktuelle Struktur zu erzählen. -1 Entschuldigung. matthias krull vor 14 Jahren 1