cp-Befehl mehrere Dateien kopieren
Hallo,
folgendes Problem habe ich wo ich keine Lösung so richtig finde. Ich möchte einen Script über Cron starten.Kurze Vorgeschichte: Bei uns auf dem System werden täglich mehrer Log-Files geschrieben die automatisch nach nach ca. 2,5 Tagen immer wir bei Log-File 01 beginnen. Ich möchte jetzt immer nur die aktuellenTages Log in ein anderes Verzeichnis kopieren inkl Datums Erweiterung am Log-File Name.
Ich habe mir jetzt mit "find" eine Zeile geschrieben wo er nur die Log-Files vom aktuellen Tag kopieren soll. Der Job startet um 23:59h. Das Problem was ich habe ist das es das an zwei verschiedenen Tagen gleiche Log-Files Namen gibt und der Job die alten Files überschreiben.
Hier mal ein Auflistung wie ich mir das vorstelle:
Log.01
Log.02
Log.03
Log.04
..
.. (So schreibt das System die Logfiles täglich max 100 in Summe).
ich möchte jetzt folgendes erreichen mit dem CP-Befehl.
Beispiel:
Heuet ist der 15.04.2009
cp Log.01 /tmp/2009-04-15.log.01
cp Log.02 /tmp/2009-04-15.log.02
cp Log.03 /tmp/2009-04-15.log.03
cp Log.04 /tmp/2009-04-15.log.04
Nächte Tage: 16.04.2009
cp Log.01 /tmp/2009-04-16.log.01
cp Log.02 /tmp/2009-04-16.log.02
cp Log.03 /tmp/2009-04-16.log.03
cp Log.04 /tmp/2009-04-19.log.04
Ich kann die Files auch nicht verschieben mit mv da das System die Anzahl 100 Log-Files benötigt. Warum ich das machen will. Ich möchte die Logfiles über einen bestimmten Zeitraum sammeln für Analysen z.B. und später dann wieder über eine Cron-Job löschen. Aber mit dem cp-Befehl bekomme ich das nicht hin.
Aufruf ist:
datum=`/bin/date +%Y-%m-%d`
find /log/ -mtime 0 -type f -name "\Log.*" -exec cp -p {} /tmp/"$datum".log.01 \;
Gruß
MyMeyer
folgendes Problem habe ich wo ich keine Lösung so richtig finde. Ich möchte einen Script über Cron starten.Kurze Vorgeschichte: Bei uns auf dem System werden täglich mehrer Log-Files geschrieben die automatisch nach nach ca. 2,5 Tagen immer wir bei Log-File 01 beginnen. Ich möchte jetzt immer nur die aktuellenTages Log in ein anderes Verzeichnis kopieren inkl Datums Erweiterung am Log-File Name.
Ich habe mir jetzt mit "find" eine Zeile geschrieben wo er nur die Log-Files vom aktuellen Tag kopieren soll. Der Job startet um 23:59h. Das Problem was ich habe ist das es das an zwei verschiedenen Tagen gleiche Log-Files Namen gibt und der Job die alten Files überschreiben.
Hier mal ein Auflistung wie ich mir das vorstelle:
Log.01
Log.02
Log.03
Log.04
..
.. (So schreibt das System die Logfiles täglich max 100 in Summe).
ich möchte jetzt folgendes erreichen mit dem CP-Befehl.
Beispiel:
Heuet ist der 15.04.2009
cp Log.01 /tmp/2009-04-15.log.01
cp Log.02 /tmp/2009-04-15.log.02
cp Log.03 /tmp/2009-04-15.log.03
cp Log.04 /tmp/2009-04-15.log.04
Nächte Tage: 16.04.2009
cp Log.01 /tmp/2009-04-16.log.01
cp Log.02 /tmp/2009-04-16.log.02
cp Log.03 /tmp/2009-04-16.log.03
cp Log.04 /tmp/2009-04-19.log.04
Ich kann die Files auch nicht verschieben mit mv da das System die Anzahl 100 Log-Files benötigt. Warum ich das machen will. Ich möchte die Logfiles über einen bestimmten Zeitraum sammeln für Analysen z.B. und später dann wieder über eine Cron-Job löschen. Aber mit dem cp-Befehl bekomme ich das nicht hin.
Aufruf ist:
datum=`/bin/date +%Y-%m-%d`
find /log/ -mtime 0 -type f -name "\Log.*" -exec cp -p {} /tmp/"$datum".log.01 \;
Gruß
MyMeyer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113877
Url: https://administrator.de/forum/cp-befehl-mehrere-dateien-kopieren-113877.html
Ausgedruckt am: 22.12.2024 um 12:12 Uhr
8 Kommentare
Neuester Kommentar
Ich hab noch nicht ganz die Logik verstanden wie die Logst entstehen. Kannst du bitte die Ergebnis von "ls -lct /deinlog/" posten?
Lesen kann ich, das selbe hasst du erstes mal auch geschrieben.
Ich will wissen welche Kriterien hat das Programm für die Logs, ob die sie nach Größe oder nach Zeit trennt. Dann kann man ein vernünftigen Skript machen der die Logs ohne Wiederholung speichert.
Ich will wissen welche Kriterien hat das Programm für die Logs, ob die sie nach Größe oder nach Zeit trennt. Dann kann man ein vernünftigen Skript machen der die Logs ohne Wiederholung speichert.
haben die Logst unterschiedliche Changetime? Wie ich schon früher sagte : Die Ergebnis von "ls -lct log/" wurde hilfreich.
Hier ist ein Skript auf schnelle Hand. Hoffe ich wird dir helfen
Hier ist ein Skript auf schnelle Hand. Hoffe ich wird dir helfen
#!/bin/bash
log_dir="dein_log_ordner"
dist_dir="tmp_ordenr"
for i in $( ls $log_dir/ | grep old); do
file_date=$( stat --printf=%y $log_dir/$i | cut -d'.' -f1 | tr " " "_" | tr ":" "-" );
cp $log_dir/$i $dist_dir/$file_date.log
done;
Oh man! wie blöd muss man sein um so ein Programm zu schreiben.
Dann den Skript von godlie passt hier am besten. Vielleicht mit kleinen Änderungen.
Dann den Skript von godlie passt hier am besten. Vielleicht mit kleinen Änderungen.
#!/bin/sh
dt=`date +%Y-%m-%d`
tar cvfj /zielordenr/$dt.log.tar.bz2 /log/logging.old*