PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Backup shell script



Klaus1
21.03.07, 19:28
Hi Leute!

Habe ein File (log file), das alle 10min per cron erstellt wird.
Nun sollte nach einem neuen Tag das file mit tar archiviert werden, dann per
wput befehl upgeloadet werden auf meinen ftp server, und anschließend gelöscht werden. das neue aktuelle file nur hochladen auf FTP server so wie es ist.
spiele mich schon lange herum, suche eine möglichkeit als erste annäherung,
mal das erstellungsdatum eines files in eine variable lesen zu können.

Kann mir jemand helfen?
Danke,
Klaus

tictactux
21.03.07, 20:04
hi,
schau dir mal "man stat" an.



modtime=$(stat --format='%y' file.ext | awk '{print $1 $2"}' )
modsecs=$(stat --format='%Y' file.ext | awk '{print $1"}' )

echo $modtime
echo $modsecs

oder auch die Möglichkeiten mit find -printf (man find)
Bei Ausgabe der Zeit in Sekunden (%Y oben), läßt sich damit mit Shell-Befehlen rechnen, vergleichen u.s.w.

hth
Wolfgang

Klaus1
21.03.07, 20:10
Verwende das ganze auf einem Router mit openWRT, der befehl stat ist nicht verfügbar. andere möglichkeit? müsste doch über ls - xxx auch gehen?

tictactux
21.03.07, 20:32
hmm, gehen tut alles, nur muß man schon genau wissen was für Tools installiert sind;)
Und immer erst Anforderungen *genau* spezifizieren.. Wie brauchst du das Datum in der Variablen? Wenn du das weiterverwerten willst, ist eine ISO-Ausgabe normal nicht hilfreich (also mit Monatsnamen u.s.w.).
Ist ein GNU-ls da? awk? find?

Funktioniert dann z.B.:


var=$(find . -maxdepth 1 -name "deineDatei.tgz" -printf '%T@')

?
Das gibt die Zeit seit letzter Änderung in Sekunden, mit kleinem t im ISO-Format
(siehe man find)

/edit: Richtigstellung: nicht Zeit seit letzter Änderung, sondern die modify-time in Sekunden, Unix-Zählweise (ab 1.1.1970),
aber auch geeignet zum Vergleichen:)

/edit2: über ls ginge es auch, in Kombination mit awk, aber wenn das verfügbare ls ein eingeschränktes ist (busybox oder so)
bräuchte man das genaue Ausgabeformat von 'ls -l' um das dann mit awk zu extrahieren, und an die Zeit in Sekunden käme man wohl nicht ran

Klaus1
21.03.07, 21:45
Hallo!

jetzt nur noch einen cron job mit erstellung eines tar files mit datum als dateinamen:

tar -czf sicherung_'date+%y%m%d'.tar.gz messages.log

das klappt nicht, weil ich hier dann folgende Datei erzeuge:
sicherung_'date+%y%m%d'.tar.gz

kann mir jemand behilflich sein, wo ich hier die anführungszeichen falsch setze?

mfg
Klaus