Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

cp-Befehl mehrere Dateien kopieren

Frage Entwicklung Batch & Shell

Mitglied: mymeyer

mymeyer (Level 1) - Jetzt verbinden

15.04.2009, aktualisiert 25.02.2015, 7957 Aufrufe, 8 Kommentare

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
Mitglied: godlie
15.04.2009 um 12:38 Uhr
Wie wärs mit sowas:

01.
#!/bin/sh 
02.
dt=`date +%Y-%m-%d` 
03.
for i in $( ls Log.* ); do 
04.
rn=`echo $i | cut -d "." -f 2`; 
05.
echo $dt.log.$rn; 
06.
cp $i /tmp/$dt.log.$rn 
07.
done
Bitte warten ..
Mitglied: 75823
16.04.2009 um 11:19 Uhr
Ich hab noch nicht ganz die Logik verstanden wie die Logst entstehen. Kannst du bitte die Ergebnis von "ls -lct /deinlog/" posten?
Bitte warten ..
Mitglied: mymeyer
16.04.2009 um 14:01 Uhr
Zitat von 75823:
Ich hab noch nicht ganz die Logik verstanden wie die Logst entstehen.
Kannst du bitte die Ergebnis von "ls -lct /deinlog/" posten?

Hi,

ich verstehe nicht was du jetzt meinst. Die Log-Files werden von einer Application erzeugt und liegen im LOG Verzeichnis.
Da wir aber so viel LOG schreiben (wird auch benötigt) möchte ich die Dateien tagesbezogen kopieren. Die Anzahl erhöhen oder die Files vergrössern geht auch nicht weil auf dem Filesystem nicht genug Platz vorhanden ist. Deswegen auf ein anderes Filesystem kopieren. Dort werde ich sie dann wieder nach ein paar Tagen löschen.

Gruß
MyMeyer
Bitte warten ..
Mitglied: 75823
16.04.2009 um 16:17 Uhr
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.
Bitte warten ..
Mitglied: mymeyer
16.04.2009 um 21:27 Uhr
Hi,

Upps Jetzt habe ich es auch verstanden. Na ja die Log Files sind immer 10 MB groß und es werden max 101 Stück geschrieben.
Und schreibt es erst ins Haupt Log und wenn das 10 MB erreicht hat wird es weg geschrieben. Die aktuellen Info kommen immer ins Haupt Log.

1. Haupt Log = logging.log
2. Folge Log = logging.old.01
usw.
3.End Log = Logging.old.99

Gruß
MyMeyer
Bitte warten ..
Mitglied: 75823
16.04.2009 um 21:53 Uhr
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

01.
#!/bin/bash 
02.
log_dir="dein_log_ordner" 
03.
dist_dir="tmp_ordenr" 
04.
 
05.
for i in $( ls $log_dir/ | grep old); do 
06.
   file_date=$( stat --printf=%y $log_dir/$i | cut -d'.' -f1 | tr " " "_" | tr ":" "-" ); 
07.
   cp $log_dir/$i $dist_dir/$file_date.log 
08.
done;
Bitte warten ..
Mitglied: mymeyer
17.04.2009 um 08:59 Uhr
Hi,
hier die Ausgabe wie gewünscht mit "ls -lct log*". Aber die Uhrzeit verwundert mich jetzt. Warum ist die denn immer gleich bei .old Dateien ?


6459365 Apr 17 08:54 logging
10485700 Apr 17 08:33 logging.old.00
10485707 Apr 17 08:33 logging.old.01
10485698 Apr 17 08:33 logging.old.02
10485711 Apr 17 08:33 logging.old.34
10485750 Apr 17 08:33 logging.old.33
10485691 Apr 17 08:33 logging.old.29
10485187 Apr 17 08:33 logging.old.31

usw für restlichen Files.


Gruß
MyMeyer
Bitte warten ..
Mitglied: 75823
LÖSUNG 17.04.2009, aktualisiert 25.02.2015
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.

01.
#!/bin/sh  
02.
dt=`date +%Y-%m-%d` 
03.
tar cvfj /zielordenr/$dt.log.tar.bz2 /log/logging.old*
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Linux Tools
CURL mehrere Dateien vom ftp-Server herunterladen (10)

Frage von highpriest zum Thema Linux Tools ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...