Tar-Datei mit Datum als Name?

16

Ich versuche, eine Datei mit Datum und Uhrzeit als Namen zu tarieren und zu gzipen:

date=$(date '+%d-%m-%Y_%H:%M:%S');    
tar -zcf "$date".tar.gz repo/bin/

Aber ich komme zurück:

tar (child): Cannot connect to 17-08-2017_21: resolve failed
tar: Child returned status 128
tar: Error is not recoverable: exiting now

Was genau passiert hier und wie kann ich das beheben?

Versucht tar, sich mit dem Namen zu verbinden, als wäre es eine IP?

Philip Kirkbride
quelle
7
Der ISO-Standard für Datumsangaben lautet JJJJ-MM-TT-THH: MM: SS oder +%FT%Tin dateder Syntax. Das Datum wird nicht nur in einem eindeutigen Format angegeben, sondern es wird auch gut sortiert!
@drewbenn mit GNU-Datum, auch: date --iso-8601=s(aber es fügt auch einen Zeitzonen-Offset hinzu)
muru
2
Ich würde davon abraten, Doppelpunkte zu verwenden. Ähnliches 20170818_122314oder ähnliches ist hinreichend leicht zu erkennen und / oder zu analysieren. Doppelpunkte verursachen in verschiedenen Situationen Probleme (Sie haben gerade einen entdeckt).
Rolf

Antworten:

31

Ja ist es. Zumindest für GNU-Teer heißt es in der Dokumentation :

Wenn der Archivdateiname einen Doppelpunkt ( :) enthält, wird davon ausgegangen, dass es sich um eine Datei auf einem anderen Computer handelt. Wenn es sich bei der Archivdatei um eine handelt user@host:file, wird die Datei auf dem Host Host verwendet . Auf den Remote-Host wird mit dem Programm rsh mit dem Benutzernamen user zugegriffen . Wenn der Benutzername (zusammen mit dem @Zeichen) weggelassen wird , wird Ihr Benutzername verwendet. (Dies ist das normale rsh-Verhalten.)

Es bietet auch eine Problemumgehung:

--force-local
      Archive file is local even if it has a colon.
Stahlfahrer
quelle
5
Kürzere Problemumgehung: tar zcf ./"$date".tar.gz ...
Aufgrund der