Datei kopieren mit Datum im Namen

M

Meilenstein

Aktives Mitglied
Thread Starter
Dabei seit
15.01.2005
Beiträge
439
Reaktionspunkte
23
Ich schreib derzeit eine Arbeit und würde gerne jeden morgen ein Backup meiner Arbeit machen.

Jetzt dachte ich mir ich lege einen Daily Cronjob an der zB um 8:10 Uhr in der früh ausgeführt wird da sich mein iBook um 8 Uhr automatisch einschaltet.

Das mit dem Cronjob bekomme ich vermutlich auch so hin, wenn man sich einliest in das Programm aber jetzt das eigentliche Problem.

Ich hätte gerne dass die Datei arbeit.swx in den Ordner sicherungskopien kopiert wird und dort zB 06-05-29_arbeit.swx heisst.

Wie kann ich dies realisieren und wäre es auch möglich das Datum des Vortages rein der Richtigkeit halber zu verwenden?


Nachtrag:
ok das aktuelle datum bekomm ich recht leicht rein mit
cp arbeit.sxw _sicherheitskopien/`date +%y_%m_%d`_arbeit.sxw

Aber wie kann ich das Datum um 1 Tag zurücksetzen?
 
Zuletzt bearbeitet:
Ansatz (getestet in zsh):
Code:
gestern=`date +%d`
gestern=$((gestern-1))
datum=`date +%y_%m_`${gestern}
cp arbeit.sxw _sicherheitskopien/${datum}_arbeit.sxw
Man sieht recht schnell, dass dies jeweils am Monatsersten nicht richtig funktioniert.
Wenn man das auch noch richten will, muss man für diesen Fall einige Bedingungen einbauen, die den Tag des vorhergehenden Monats ermitteln.

HTH
 
Meilenstein schrieb:
Aber wie kann ich das Datum um 1 Tag zurücksetzen?

Code:
IceHouse@unixismad:~> date --version
date (GNU coreutils) 5.3.0
Geschrieben von David MacKenzie.

Copyright (C) 2005 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quelltexten. Es
gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.
IceHouse@unixismad:~>
IceHouse@unixismad:~>
IceHouse@unixismad:~> date --date=yesterday
Mo Mai 29 09:53:57 CEST 2006

Gruss von IceHouse
 
Die Idee mit dem date=yesterday sieht recht komfortabel aus...

Leider gibt es bei mir den Befehl nicht... wie kann ich das Programm date denn aktualsieren auf eine neuere Version die Du zu haben scheinst?
 
Das ist eine GNU Software, die Du ggf. nachinstallieren (nicht aktualisieren) müsstest.

Ich persönlich würde das nicht machen u.a. weil GNU Software nicht der SUSv3 entspricht und Skripte etc. dadurch schwer portierbar sind.
Deine Anforderung ist mit ein paar Zeilen Code leicht zu lösen.
 
Meilenstein schrieb:
Die Idee mit dem date=yesterday sieht recht komfortabel aus...

Leider gibt es bei mir den Befehl nicht... wie kann ich das Programm date denn aktualsieren auf eine neuere Version die Du zu haben scheinst?

darwinports.opendarwin.org/

Gruss von IceHouse
 
maceis schrieb:
Das ist eine GNU Software, die Du ggf. nachinstallieren (nicht aktualisieren) müsstest.

Ich persönlich würde das nicht machen u.a. weil GNU Software nicht der SUSv3 entspricht und Skripte etc. dadurch schwer portierbar sind.
Deine Anforderung ist mit ein paar Zeilen Code leicht zu lösen.

Der OP sagte nichts von Portierbarkeit. Ich gehe also davon aus, das er es zum privaten Gebrauch benutzen moechte. Weiterhin wollte ich nur einen zweiten Weg aufzeigen. Weiteren Code braucht er nicht, er braucht nur den String:

Code:
IceHouse@unixismad:~> date -d -1day +%G-%m-%d
2006-05-29
zu verwenden.

Gruss von IceHouse
 
hehe danke für die Mühe die ihr euch macht.

Ist in der Tat für privaten Gebrauch bestimmt, Darwin Ports ist aber für mich derzeit nicht wirklich eine Lösung, hatte mich da schon einmal dran versucht aber bin bei der Installation gescheitert... werd mal kucken obs bei Fink auch was ähnliches gibt, weil soweit ich mich erinnere hab ich das mal ausprobiert und lief eigentlich recht gut.


Wäre aber dennoch wohl eine Aktualsierung, weil der Befehl "date" ja bei mir vorhanden ist aber wohl in einer sehr alten Form


Notfalls bleib ich halt beim aktuellen Datum, ist ja nicht weiter schlimm, will eben nur jeden Tag als Version verfügbar haben um nachzuvollziehen was ich wann geschrieben bzw. geändert habe
 
IceHouse schrieb:
Der OP sagte nichts von Portierbarkeit.
...
Schon klar. Darum sagte ich auch "Ich persönlich ...", als ich diesen Aspekt in die Diskussion einbrachte.

Ich wollte damit auch nicht Deinen richtigen Vorschlag herabsetzen, sondern nur mitteilen, dass die Sache mit Bordmitteln ebenfalls leicht zu lösen ist (wenn auch geringfügig aufwändiger). Und natürlich gibt es auch noch weitere Lösungsmöglichkeiten.
 
Meilenstein schrieb:
Ist in der Tat für privaten Gebrauch bestimmt, Darwin Ports ist aber für mich derzeit nicht wirklich eine Lösung, hatte mich da schon einmal dran versucht aber bin bei der Installation gescheitert...
...
Um die GNU coreutils zu installieren benötigt man weder darwinports noch Fink. Das kann man auch einfach "zu Fuß" erledigen.
Meilenstein schrieb:
...
Wäre aber dennoch wohl eine Aktualsierung, weil der Befehl "date" ja bei mir vorhanden ist aber wohl in einer sehr alten Form
...
Nein, in einer Form die der SUSv3 und der Norm "IEEE Std 1003.2" (auch bekannt als POSIX.2) enstpricht. Die GNU Programme haben eine teilweise erweiterten/veränderten Funktionsumfang, für den man den Preis einer erschwerten Portierbarkeit bezahlt.

Das kann man ganz leidenschaftslos so feststellen. Letztendlich ist es eine Frage der persönlichen Anforderungen, wofür man sich entscheidet. Mir persönlich kommt es etwas überzogen vor, Fink oder dp zu installieren, nur um das Datum von gestern auszugeben :D.
 
Hi,

Du könntest auch mit dem Befehl "find" in Kombination experimentieren. Der Parameter -mtime (z.B. Datei nach einem Tag Änderung) könnte helfen.

Viele Grüße
 
Zurück
Oben Unten