2017-09-05 1 views
3

Ich benutze die tar Befehl viel, sehr vertraut damit. Ich habe jedoch versucht, ein Archiv mit dem Befehl date zu erstellen, um die Archivdatei zu benennen, und es wird ein Fehler ausgegeben, der die Datei nicht öffnen kann. Das ist seltsam, weil ich nicht versuche, die Datei zu öffnen, sondern sie zu erstellen .Tar Befehl Wurf Fehler beim Versuch, ein Archiv mit dem Datum Befehl erstellen

Hier ist eine Kopie des Verzeichnisses ist, den Code, und der Fehler:

@MDG /media/VideoCam/Test $ ll 
total 468 
drwxr-xr-x 3 neo neo 4096 Sep 5 09:55 ./ 
drwxr-xr-x 4 neo neo 466944 Sep 4 21:54 ../ 
-rw-r--r-- 1 neo neo  45 Sep 5 08:52 1.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 1.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 2.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 2.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 3.jpg 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 4.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 4.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 5.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 5.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 6.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 6.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 7.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 7.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 8.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 8.mp4 
drwxr-xr-x 2 neo neo 4096 Sep 4 19:30 Archive/ 
[email protected] /media/VideoCam/Test $ sudo tar -zcvf "archive.$(date '+%D').tar.gz" *.jpg 
tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory 
tar (child): Error is not recoverable: exiting now 
1.jpg 
2.jpg 
3.jpg 
4.jpg 
5.jpg 
6.jpg 
7.jpg 
8.jpg 
[email protected] /media/VideoCam/Test $ 

ich viele verschiedene Verkettungen versucht haben, mit und ohne Anführungszeichen, um die Reihenfolge der Befehlsoptionen (zcvf) Hochschalten, usw. Wenn ich den Date-Befehl weglasse und ihm einfach einen Namen gebe, z archive.tar.gz, es wird perfekt ausgeführt, aber die Einführung des Datumsbefehls verursacht den Fehler. Ich habe auch versucht, den Datumsbefehl als eine Variable mit einem ähnlichen Ergebnis zu setzen.

+1

Formatierung bitte korrigieren. – luckytaxi

+0

Setzen Sie Ihren Code/Ihre Daten mit vier weißen Leerzeichen voran. Bitte werfen Sie einen Blick auf [editing-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

'/' ist in Dateinamen nicht erlaubt. – Cyrus

Antwort

0

Das Datum ist Schrägstriche und es behandelt es als Ordnerpfad. Verwenden Sie Bindestriche.

0

Wenn Sie bei der Fehlermeldung sehen, sehen Sie

tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory 

Dies zeigt, dass es die Datei archive.09/05/17.tar.gz zu erstellen versucht. Das heißt, 17.tar.gz im Verzeichnis 05, im Verzeichnis archive.09.

Wenn das, was Sie wirklich wollen, was ich bezweifle, müssen Sie das Verzeichnis außerhalb tar mit so etwas wie

mkdir -p archive.09/05 

erstellen Wenn Sie Verzeichnisse nicht wollen, Sie nicht den / Charakter in die verwenden können Dateiname. Versuchen Sie ein anderes Format für den Befehl date; Eine übliche Option ist +%F, weil es Dateinamen erzeugt, die immer noch in der richtigen Reihenfolge wären, wenn sie als Text sortiert wären.

+0

Wow, danke an alle, die diese Frage so schnell beantwortet haben! Obwohl ich schon lange mit Linux arbeite, bin ich ein Anfänger, wenn es um die einfachste Programmierung geht. Die Antwort scheint so offensichtlich, aber sie entzieht sich mir vollständig. Außerdem werde ich per @Cyrus die Editierhilfe anschauen. Danke noch einmal! – neolithic

1

Ich empfehle dringend, lesen Sie die date Man Seite und überprüfen Sie die Formatierungsoptionen.

Wie es von anderen vorgeschlagen worden ist das Problem mit dem Format von date Ausgabe

$ date '+%D' 
09/05/17 

Sie können keine Datei mit Schrägstrichen im Namen aufgrund des typischen Verhaltens Unix erstellen. Sie sollten stattdessen so etwas wie

$ date '+%m-%d-%Y' 
09-05-2017 

versuchen, dass im Falle Sie die gleiche Formatierung wie %D erhalten wollen.

Verwandte Themen