Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
wartung:start [2010/06/15 16:23] DeaD_EyE -path && -name |
wartung:start [2012/12/26 17:02] (aktuell) DeaD_EyE [Statistiken löschen] |
||
---|---|---|---|
Zeile 10: | Zeile 10: | ||
==== Logdateien komprimieren ==== | ==== Logdateien komprimieren ==== | ||
Möchte sich der Admin noch nicht von den Logdateien trennen, so können diese komprimiert werden. | Möchte sich der Admin noch nicht von den Logdateien trennen, so können diese komprimiert werden. | ||
- | <code>find /home/gs/server/ -name *.log -mtime +7 -exec nice gzip '{}' \;</code> | + | <code>find /home/gs/server/ -type f -path "*/logs/*" -name "*.log" -mtime +7 -exec nice gzip '{}' \;</code> |
Mit dem Code werden alle Dateien unterhalb von ''/home/gs/server/'', die auf ''.log'' enden und älter als 7 Tage sind komprimiert. Um dann z.B alle komprimierten Dateien zu löschen, die älter als 14 Tage sind, kann man einen weiteren Befehl verwenden: | Mit dem Code werden alle Dateien unterhalb von ''/home/gs/server/'', die auf ''.log'' enden und älter als 7 Tage sind komprimiert. Um dann z.B alle komprimierten Dateien zu löschen, die älter als 14 Tage sind, kann man einen weiteren Befehl verwenden: | ||
- | <code>find /home/gs/server/ -name *.log.gz -mtime +14 -delete</code> | + | <code>find /home/gs/server/ -type f -path "*/logs/*" -name "*.log.gz" -mtime +14 -delete</code> |
Zusammen kann man die beiden Befehle als Cronjob eintragen: | Zusammen kann man die beiden Befehle als Cronjob eintragen: | ||
- | <code>10 6 * * 7 find /home/gs/server/ -name *.log -mtime +7 -exec nice gzip '{}' \; | + | <code>10 6 * * 7 find /home/gs/server/ -type f -path "*/logs/*" -name "*.log" -mtime +7 -exec nice gzip '{}' \; |
- | 20 7 * * 7 find /home/gs/server/ -name *.log.gz -mtime +14 -delete</code> | + | 20 7 * * 7 find /home/gs/server/ -type f -path "*/logs/*" -name "*.log.gz" -mtime +14 -delete</code> |
===== Downloads löschen ===== | ===== Downloads löschen ===== | ||
Nach einiger Zeit sammeln sich im Verzeichnis Downloads sehr viele Spraylogos der Spieler an. Diese werden immer auf dem Server zwischengespeichert und dann an die anderen Spieler durch den Server verteilt. Da es nach einiger Zeit sehr viele Dateien werden, sollte auch diese Dateien reglmäßig gelöscht werden.\\ | Nach einiger Zeit sammeln sich im Verzeichnis Downloads sehr viele Spraylogos der Spieler an. Diese werden immer auf dem Server zwischengespeichert und dann an die anderen Spieler durch den Server verteilt. Da es nach einiger Zeit sehr viele Dateien werden, sollte auch diese Dateien reglmäßig gelöscht werden.\\ | ||
Zeile 36: | Zeile 37: | ||
Einige Admins setzten einen MasterServer ein und verlinken die Dateien auf die einzelnen Gameserver. Oft kommt es vor, dass nach einem SteamUpdate Dateien wieder entfernt wurden. Die bestehenden Symlinks sind dadurch nicht mehr gültig und verweisen auf nicht vorhandene Dateien. Diese verwaisten Symlinks lassen sich mit dem find Befehl löschen: | Einige Admins setzten einen MasterServer ein und verlinken die Dateien auf die einzelnen Gameserver. Oft kommt es vor, dass nach einem SteamUpdate Dateien wieder entfernt wurden. Die bestehenden Symlinks sind dadurch nicht mehr gültig und verweisen auf nicht vorhandene Dateien. Diese verwaisten Symlinks lassen sich mit dem find Befehl löschen: | ||
<code>find -L /home/gs/server/ -type l -delete</code> | <code>find -L /home/gs/server/ -type l -delete</code> | ||
+ | |||
+ | ===== Fertiges Script ===== | ||
+ | Das Script führt alle Aufgaben nacheinander aus. Der Pfad eines Servers kann in der Variable ''server[0]'' festgelegt werden. Sollen mehrere Verzeichnisse abgearbeitet werden, können auch mehrere Arays definiert werden((server[1],server[2], ...)). | ||
+ | ^ Variable ^ Erklärung ^ | ||
+ | |server[x]|Es können über diese Variable beliebig viele Server eingetragen werden.| | ||
+ | |days_log|Gibt das Alter in Tagen der Log-Dateien an, die komprimiert werden sollen.| | ||
+ | |day_log_gz|Gibt das Alter in Tagen der komprimierten Log-Dateien an, die gelöscht werden sollen.\\ Hier darauf achten, dass gzip den Zeitstempel der Datei nicht ändert.| | ||
+ | |days_downloads|Legt fest, ab welchem Alter in Tagen, die Dateien im Verzeichnis downloads gelöscht werden sollen.| | ||
+ | |clean_logs|1 aktviert den Komprimier-/Löschmechanismus der Log-Dateien.| | ||
+ | |clean_downloads|1 aktivert das Löschen der Downloads.| | ||
+ | |clean_ztmp|1 aktivert das Löschen aller ztmp-Dateien.| | ||
+ | |clean_broken_links|1 aktivert das Löschen aller verwaisten Symlinks.\\ Macht nur Sinn, wenn man mit Symlinks arbeitet.| | ||
+ | **Download:** {{:wartung:servercleaner.sh|}} | ||
+ | <file bash servercleaner.sh>#!/bin/bash | ||
+ | |||
+ | # | ||
+ | #Vars | ||
+ | # | ||
+ | |||
+ | server[0]=/home/gs/server1 | ||
+ | server[1]=/home/gs/server2 | ||
+ | server[2]= | ||
+ | server[3]= | ||
+ | |||
+ | days_log=7 | ||
+ | days_log_gz=14 | ||
+ | days_downloads=7 | ||
+ | |||
+ | clean_logs=1 | ||
+ | clean_downloads=1 | ||
+ | clean_ztmp=1 | ||
+ | clean_broken_links=0 | ||
+ | |||
+ | |||
+ | # | ||
+ | #Programm-Start | ||
+ | # | ||
+ | |||
+ | for dir in ${server[*]}; do | ||
+ | [[ ! -d $dir ]] && echo "Directory $dir doesn't exist, please correct the variables server[x] in the Script." && fail=1 | ||
+ | done | ||
+ | |||
+ | [[ "$fail" = "1" ]] && echo "Script aborted" && exit | ||
+ | |||
+ | [[ "$clean_logs" = "1" ]] && echo "Gzip *.log older than $days_log days" && \ | ||
+ | find ${server[*]} -type f -path "*/logs/*" -name "*.log" -mtime +$days_log -exec nice gzip '{}' \; | ||
+ | [[ "$clean_logs" = "1" ]] && echo "Deleting *.log.gz older than $days_log_gz days" && \ | ||
+ | find ${server[*]} -type f -path "*/logs/*" -name "*.log.gz" -mtime +$days_log_gz -delete | ||
+ | [[ "$clean_ztmp" = "1" ]] && echo "Deleting *.ztmp (*.dat.zmtp is excluded)" && \ | ||
+ | find ${server[*]} -name *.ztmp -not -name *.dat.ztmp -delete | ||
+ | [[ "$clean_downloads" = "1" ]] && echo "Deleting downloads, which are older then $days_downloads days" && \ | ||
+ | find ${server[*]} -type f -name ????????.dat* -path "*/downloads/*" -mtime +$days_downloads -delete | ||
+ | [[ "$clean_broken_links" = "1" ]] && echo "Deleting broken symlinks" && \ | ||
+ | find -L ${server[*]} -type l -delete | ||
+ | </file> | ||
+ | ===== CS:GO ===== | ||
+ | ==== Statistiken löschen ==== | ||
+ | Im Modverzeichnis des Gameservers werden seit neustem txt-Dateien für jede Runde gespeichert. Welchen tieferen Sinn die Daten haben, ist uns noch unbekannt. Um die Dateien zu löschen, kann man folgenden Befehl verwenden: | ||
+ | <code>find /home/server/csgo1/csgo \ | ||
+ | -maxdepth 1 -regextype posix-extended \ | ||
+ | -regex '.+/backup_[0-9]{8}_[0-9]{6}_\w{2}_\w+\.txt$' \ | ||
+ | -delete</code> | ||
+ | Mit dem Parameter -maxdepth 1 wird die Suchtiefe auf das gleiche Verzeichnis beschränkt. Das verringert die IO-Last des Hosts. Durch den Regex werden nur Dateien gefunden, die folgendem vereinfachtem Schema entsprechen: | ||
+ | <code>*/backup_dddddddd_dddddd_xx_x*.txt</code> | ||
+ | d = Zahl\\ | ||
+ | x = Alphanumerisch mit Sonderzeichen\\ | ||
+ | * = Alles bzw. Wiederholung vom vorherigen |