PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : akt. Datum in Dateinamen schreiben



halla
23.10.06, 12:15
Hallo,

ich möchte in einem Shellscript die Ausgabe eines Kommandos per > in eine Textdatei umlenken, die dabei das aktuelle Datum im Dateinamen tragen soll.


BlaFasel > /files/log/`date +%Y%m%d-%H:%M`_mirror.log.txt;

Leider klappt das nicht so ganz und die Datei bekommt nur ausgesprochen merkwürdige Namen... ;-) Hat jemand eine Idee, was ich da falsch mache?

Vielen Dank für eure Hilfe,
Grüße,
Daniel

marce
23.10.06, 12:22
>/files/logs/$(date +%Y%m%d_%H%M)_mirror.log.txt
sollte gehen...


Ach ja: "ein ausgesprochen merkwürdiger Name" ist eine sehr exakte und aussagekräftige Fehlermeldung...

halla
23.10.06, 12:56
Hallo,

danke für Deine Antwort, klappt leider trotzdem nicht. Fehlermeldung gibts leider keine, aber es kommen so merkwürdige Dateinamen wie diese dabei raus:


21CFGW~T.TXT
2LHDGU~M.TXT
24YSR9~8.TXT
2ORLO9~Q.TXT

Der komplette Teil des Scripts sieht übrigens so aus


rsync -rvz --delete \
/nas/bac/ /files/bac/ > /files/log/$(date +%Y%m%d_%H:%M)_mirror_bac.log.txt;


Hab echt keinen Schimmer, was da nicht passen könnte...!?

MiGo
23.10.06, 12:58
Leider klappt das nicht so ganz und die Datei bekommt nur ausgesprochen merkwürdige Namen... ;-) Hat jemand eine Idee, was ich da falsch mache?

Es würde vielleicht helfen, wenn du den Dateinamen mal hier postest; vielleicht wird man ja dann draus schlau.

$().....
sollte gehen...
Ist das gleiche wie ` ` :)

Bei mir geht das Ganze übrigends problemlos:

[ je@cthulhu] ~/delete (3,0G free) % dir .. > `date +%Y%m%d-%H:%M`_mirror.log.txt;
[ je@cthulhu] ~/delete (3,0G free) % ls
20061023-13:55_mirror.log.txt

marce
23.10.06, 13:00
darf man frech mal nach dem Dateisystem fragen, auf dem Du die Dateien erstellen willst?

@MiGo: manchmal machen die Backtickets Probleme, wenn sie im Kontext drin stehen - deswegen der Tip von mir...

MiGo
23.10.06, 13:00
21CFGW~T.TXT
Wie ist das Laufwerk, auf das geschrieben wird (also /files/bac) gemounted? Das sieht nach einer Begrenzung der Dateinamenlänge aus (-t fat16 oder so).

Edit: Mist, schon wieder zu lahm. Ist wohl nicht mein Tag heute :/

artspin
23.10.06, 13:03
Ich benutze dazu immer date --iso-8601=date.

halla
23.10.06, 13:04
/nas/bac ist ein per SMB Freigabe gemountetes Laufwerk auf einer NAS, Dateisystem FAT32. /files/bac hingegen ist direkt Teil des Servers auf den die Daten kopiert werden - also ReiserFS oder sowas, glaube ich. Dateinamenbegrenzung kann ich mir irgendwie nicht so recht vorstellen, das sind ja nicht mal 16 Zeichen ;-)

MiGo
23.10.06, 13:12
Dateinamenbegrenzung kann ich mir irgendwie nicht so recht vorstellen, das sind ja nicht mal 16 Zeichen ;-)

2ORLO9~Q.TXT entspricht allerdings exakt einem auf 8+3 gekürztem Dateinamen. Genaus so, wie's unter Fat16 üblich ist. Daher die Frage.

halla
23.10.06, 13:24
Verdammt - Du hast recht. Wenn ich von date nur 8 Zeichen ausgeben lasse, dann funktioniert es ??

Aber das ergibt doch keinen Sinn: Das Dateisystem, auf dem die Logdatei gespeichert wird, ist definitv kein FAT16 sondern ein ganz normales ReiserFS. Wenn ich den Dateinamen nicht durch die date-Funktion erzeugen lassen, sondern hartcodiert in den Befehl schreibe, kann ich soviele Zeichen verwenden wie ich will, ohne das dabei irgendwas zerissen würde - das passiert nur bei der Ausgabe von date...

Ich versteh das nicht wirklich....

marcdevil
23.10.06, 13:37
die date optionen sollte man quotieren:
BlaFasel > /files/log/`date '+%Y%m%d-%H:%M'`_mirror.log.txt

halla
23.10.06, 13:45
aaaaaaaaaahhhhhhhhhhhh... DAS war's: Die Optionen müssen quotiert werden - jetzt geht das auch wunderbar!

Vielen Dank für den Tipp ;-)

artspin
23.10.06, 13:52
Auch wieder was gelernt! Danke! :D