Fertig:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
|
find publicserver/gungame/orangebox/cstrike/logs/ -type f -mtime +7 | while read file; do
year=$(stat -c %y $file | cut -d '-' -f1)
file_=`basename $file`
suffix=${file_:5:3}
file_date=${file_:1:4}
basepath=`dirname $file`
echo "gzip $file; mv $file.gz $basepath/L$year$file_date-$suffix.log"
#nice gzip $file
#mv $file.gz $basepath/L$year$file_date-$suffix.log
done
|
Am besten verpackst du dir das in ein Shell-Script (code ungetestet):
logcompress
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash
[[ ! -d $1 ]] && exit 1
[[ ! -d $2 ]] && exit 1
find $1 -type f -mtime +7 | while read file; do
year=$(stat -c %y $file | cut -d '-' -f1)
file_=`basename $file`
suffix=${file_:5:3}
file_date=${file_:1:4}
nice gzip $file
mv $file.gz $2/L$year$file_date-$suffix.log
done
|
|
Source code
|
1
|
chmod u+x logcompress
|
Für den Cronjob:
|
Source code
|
1
|
30 6 * * * /pfad/zu/logcompress /home/cstrike/logs/ /home/backup/
|
Am besten einmal paar Logdateien irgendwo hin kopieren und dann das Script logcompress etwas abändern:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash
[[ ! -d $1 ]] && exit 1
[[ ! -d $2 ]] && exit 1
find $1 -type f | while read file; do
year=$(stat -c %y $file | cut -d '-' -f1)
file_=`basename $file`
suffix=${file_:5:3}
file_date=${file_:1:4}
nice gzip $file
mv $file.gz $2/L$year$file_date-$suffix.log
done
|
Ich hab nur das mtime entfernt, wodurch find alle .log-Dateien findet.
Das Script dann testweise so aufrufen:
./logcompress /pfad/zu/den/kopierten/logs /pfad/zum/backuptestverzeichnis
Wenn das ergebnis ist, wie erwünscht, kannst du ja den Cronjob einbinden (+mtime 7 beim find-Befehl nicht vergessen wieder hinzuzufügen)
Für jeden Gameserver solltest du ein eigenes Bakup-Verzeichnis für die Logs erstellen, da es ansonsten zu Überscheidungen bei den Dateinamen kommt.
PS: Zur Sicherheit könnte man noch -name "L???????.log" zum find-Befehl hinzufügen:
find $1 -type f -mtime +7 -name "L???????.log" | ......