Page 1 of 1

bash script Problem

Posted: 2010-09-15 13:54
by native
Mit diesem Skript sollen ein paar Ordner auf einen FTP Server geschoben werden.

Das Skript gibt mir diesen Fehler aus:

Code: Select all

/bin/tar: /mnt/ftp-backup/user/1/Wed/user-data-2010-09-15_13\:51\:38.tgz: Cannot stat: No such file or directory
/bin/tar: Error exit delayed from previous errors
Besagtes Verzeichnis /mnt/ft-backup/user/1/Wed/ existiert aber, laut Debugausgabe wird der FTP-Server auch richtig gemountet.

Ich sehe den Fehler schlicht nicht, wäre dankbar für Hilfe.

Re: bash script Problem

Posted: 2010-09-15 14:45
by Joe User
Vorweg: Absoluter Pfad zu which fehlt, das Thema hatten wir ja bereits.

Dein tar-Aufruf sollte allgemein eher so aussehen:

Code: Select all

$TAR czpf "$BACKUP/1/${WEEK[$DAY]}/user-data-$(/bin/date +"%Y%m%d%H%M").tgz" $DIRS
So lässt sich der Timestamp fehlerfreier verarbeiten als in Deiner Version.

Die Fehlermeldung lässt darauf deuten, dass während des tar in $DIRS ein File/Directory gelöscht/verschoben wurde.

Re: bash script Problem

Posted: 2010-09-15 14:59
by native
kurz zu which: point taken, das habe ich übersehen. Allerdings scheint dies nicht das Problem zu sein: ich habe das in gleicher Form in einem anderen Skript laufen, da geht es fehlerfrei. Auch laut Debugausgaben werden die Pfaden zu den Befehlen korrekt gesetzt.

Bzgl. gelöscht/verschoben während des tar: laufen die einzelnen Prozesse im Skript atomar ab? Dann dürfte vom Skript aus doch eigentlich nichts in diesem Moment verschoben/gelöscht werden.

Re: bash script Problem

Posted: 2010-09-15 15:06
by Joe User
native wrote:Dann dürfte vom Skript aus doch eigentlich nichts in diesem Moment verschoben/gelöscht werden.
Nicht von diesem Script, aber von irgendwem/irgendetwas Anderem.

Re: bash script Problem

Posted: 2010-09-15 15:13
by native
Ein Tipp, wie ich das herausfinden könnte? laut pstree laufen keine anderen Prozessen, und abgesehen davon ist dieses Skript das einzige, was überhaupt in diesem Verzeichnis bzw. dem ganzen FTP überhaupt etwas macht.

Re: bash script Problem

Posted: 2010-09-15 17:26
by native
Nein, der if Block wurde natürlich nicht durchlaufen. Das Verzeichnis hatte ich vorher manuell angelegt.

Re: bash script Problem

Posted: 2010-09-15 17:37
by Joe User
Das ist nicht zufällig eine (ältere) Debian-Kiste mit kaputtgepatchtem tar, welches keine langen Verzeichnis/Dateinamen-Ketten mag. Das Problem hatte ich vor ein paar Jahren mal bei einem debianbasierten Rescuesystem eines grossen deutschen Rootserver-Anbieters.

Re: bash script Problem

Posted: 2010-09-15 17:39
by native
Sollte nicht. Läuft Debian Lenny drauf, neuer Server.

Re: bash script Problem

Posted: 2010-09-15 17:50
by native
Scheint, das "-" vor den Optionen bei tar war das Problem.

Re: bash script Problem

Posted: 2010-09-15 18:00
by Joe User
Joe User wrote:Das ist nicht zufällig eine (ältere) Debian-Kiste mit kaputtgepatchtem tar, welches keine langen Verzeichnis/Dateinamen-Ketten mag. Das Problem hatte ich vor ein paar Jahren mal bei einem debianbasierten Rescuesystem eines grossen deutschen Rootserver-Anbieters.
Referenz: http://www.rootforum.org/forum/viewtopi ... 20#p172320

Re: bash script Problem

Posted: 2010-09-15 18:02
by Joe User
native wrote:Scheint, das "-" vor den Optionen bei tar war das Problem.
OK, also mal wieder eine irreführende Fehlermeldung.

Re: bash script Problem

Posted: 2010-09-16 09:40
by Roger Wilco
native wrote:Scheint, das "-" vor den Optionen bei tar war das Problem.
GNU tar unterstützt verschiedene „Parameterstile”. Wenn du das „-” vor den kurzen Parameternamen weglässt, vergibt dir tar ziemlich viel Müll. Wenn „-” vor den kurzen Parameternamen steht, ist es strikter. Details dazu findest du in der Infopage zu tar (`info tar`).

Korrekt wäre gewesen:

Code: Select all

$TAR -czpf "$BACKUP/1/${WEEK[$DAY]}/user-data-$(/bin/date +"%F_%T").tgz" $DIRS
Man beachte die Position von „-f” in Relation zum Dateinamen des Tar-Archivs.