File vom aktuellen Tag versenden

Hallo zusammen

Ich möchte jeweils am ersten des Monates ein File via cronjob und scp auf einen anderen Share kopieren. Die zu kopieren Files sehen so aus:
reports_2013_08_01.tar.gz
reports_2013_09_01.tar.gz usw.

Hier ist mein scp-Code:
scp /…/…/…/reports_2013_*_01.tar.gz admin@server:/… (Leider sendet es mir so alle Files jeweils vom ersten Tag aller Monate, sollte aber nur das vom jetztigen Monat versendet weden)

Wie kann ich nun machen, dass der cronjob automatisch weiss, dass ich am 1.9.13 auch nur das file vom 01.09.13 versenden möchte. Gibt es dazu einen passenden Code anstelle des *?

Besten Dank für eure Antworten…

Das Datum kann man unter Linux mit „data“ ausgeben lassen. Ein paar Backticks später hat man diese Kommandozeile:

scp /…/…/…/reports_2013_date +%m_01.tar.gz admin@server:/…

date +%m gibt den Monat aus (von 01 bis 12). Die Backticks sorgen dafür, dass das Kommando erst ausgeführt wird und in die Kommandozeile des scp eingefügt werden.

Alles in einer Zeile …

CURRENT=$(date +"%Y_%m_%d"); scp /…/…/…/reports_$CURRENT.tar.gz admin@server:/…

Wenn die Formatierung des Datums noch nicht passt, hilft ein „man date“ weiter … oder wie sagte man zu der Zeit, als ich in die Uni ging … RTFM :wink:

hallo,
well du nur liste letze datei senden willst, kannst du $(ls -rt|tail -n 1) als filenamen benutzen.

du kannst auch $(find -name xx*xx* -a -zeitoption) benutzen.

eine weitere variante ist „n1$(date format)n2$(date format)n3“.

die optionen findest du mit man programmname.

du kannst auch rsync benutzen und alle fehlenden/geänderten dateien übertragen. so mache ich das üblicherweise.

tschuess

sorry, kann nicht weiterhelfen.

Hallo,

versuch’s mal mit dem aktuellen Monat aus dem Tagesdatum anstelle des „*“:

(date „+%m“)

Also z.B.: so ähnlich:

scp /…/…/…/reports_2013_(date „+%m“)_01.tar.gz …

Bin leider kein Shell-Scrip-Experte, aber es sollte so in etwa funktionieren.

Hallo
Mach doch folgendes

Für Date
http://www.linuxwiki.de/DatumUndUhrzeit
http://stackoverflow.com/questions/1401482/yyyy-mm-d…

für crontab
http://de.wikibooks.org/wiki/Linux-Kompendium:_Crontab

Kurz gesagt:

Mach Dir eine Shell

z.b.

monatskopie.sh
l_date = DATE=date +%Y-%m-%d
echo l_date
l_quelldatei = ‚blabla‘||l_date (Nimm exact das vom datum was Du brauchst)
echo l_quelldatei
scp l_quelldatei Ziel

fertig und das ganze mit Crontab am 1ten des Monats ausführen

Hallo Marcel,

du musst den 2-stellig formatierten Monat mit der date Funktion erzeugen, und entweder in eine Variable schreiben, die du dann in deinem Befehl benutzt, oder direkt in deinem Befehl expandieren.
Die Syntax für Formatangaben bei date ist
date +FORMAT
Achtung: Leerzeichen vor + beibehalten!

Dein Kommando, mit dem date-Monat direkt eingebettet:

scp /.../.../.../reports\_2013\_$(date +"%m")\_01.tar.gz ...

Mit %Y kannst du dasselbe auch gleich mit der Jahreszahl machen:

scp /.../.../.../reports\_$(date +"%Y\_%m")\_01.tar.gz ...

Gruß
Thomas

Hallo Marcel,

scp und cron sind zwar eigentlich nicht meine Domäne, habe hier aber etwas interessantes für dich gefunden:
http://www.drweb.de/magazin/cron-jobs-fuer-einsteige…

In Anlehnung an die dortigen „Beispiele mit Realweltbezug“ würde ich folgendes versuchen:
date=date -I ; scp/[…]/reports_$date_01.tar.gz […]

‚date‘ müsste dabei entsprechend so aufgerufen werden, dass es Jahr und Monat liefert:

date +%Y_%m

Also:
date=date +%Y_%m ; scp[…]

Dokumentation zu date:
http://www.computerhope.com/unix/udate.htm
bzw.:
http://linux.die.net/man/1/date

Viel Erfolg und viele Grüße,
Sandro

Hallo Marcel
Kenne mich mit Linux leider nicht mehr aus, ist zu lange her…
VG