Der Befehl tar erzeugt einen Fehler im Shell-Skript

7

Ich versuche, einen Teerball in einem Shell-Skript zu erstellen (ich habe es aktiviert set -x), erhalte jedoch die folgende Fehlermeldung:

+ cd /home5/mysite/public_html
+ TAR_DUMP=gypo_2012-02-18-03:51:15.tar.gz
+ echo 'Tar name: gypo_2012-02-18-03:51:15.tar.gz'
Tar name: gypo_2012-02-18-03:51:15.tar.gz
+ tar -cvzf gypo_2012-02-18-03:51:15.tar.gz gypo
...
tar: gypo_2012-02-18-03\:44\:04.tar.gz: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
...

Das Skript lautet:

NOW=$(date +"%Y-%m-%d-%T")

# TAR

cd $HOME/public_html
TAR_DUMP="gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
# mv -t $DEST $TAR_DUMP

Warum erzeugt Teer diesen Fehler und wie kann ich ihn beheben?

Jérôme Verstrynge
quelle

Antworten:

7

Die :im Dateinamen sind verwirrend tar. Zumindest für die coreutilsVersion von tarkann der --fileSchalter ein Argument der folgenden Form annehmen:

hostname:/remote/file/name

Ich vermute taralso, dass ich versuche, diesen Dateinamen auf eine Weise zu interpretieren, die Sie nicht gemeint haben.

Wenn Sie dem Dateinamen ein Präfix voranstellen ./(oder einen vollständigen Pfad angeben ), sollte Ihr Problem behoben sein.

TAR_DUMP="./gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo

Eine andere Lösung wäre, den --force-localSchalter hinzuzufügen .

--force-local

Erzwingt "tar", den Dateinamen von --file als lokale Datei zu interpretieren, selbst wenn er wie ein Name eines Remote-Bandlaufwerks aussieht.

Matte
quelle
Das Hinzufügen von ./ hat das Problem gelöst, vielen, vielen Dank !!!
Jérôme Verstrynge