|
Source code
|
1
|
* * * * 7 find /home/gs/server/ -name *.log -type f -mtime +7 -delete
|
Löscht jeden Sonntag alle Dateien (-type f) in /home/gs/server/, die mit .log enden und älter als 7 Tage (-mtime +7) sind.
Jede Stunde zu löschen halte ich für Überflüssig. Es sorgt nur für mehr I/O-Last, wenn jedesmal 10.000 Dateien durchsucht werden müssen.
Wenn man lieber die Dateien, aus welchen Gründen auch immer, noch behalten möchte, kann man alle Dateien, die älter als 7 Tage sind mit gzip komprimieren.
|
Source code
|
1
|
* * * * 7 find /home/gs/server/ -name *.log -mtime +7 -exec nice gzip '{}' \;
|
Man könnte dies dann noch mit dem löschen kombinieren:
|
Source code
|
1
|
* * * * 7 find /home/gs/server/ -name *.log.gz -mtime +14 -delete
|
Möchte man dann mal in einer bereits komprimierten Datei etwas suchen, kann man zcat, zgrep usw. nutzen.
Sucht man nach einer bestimmten STEAMID in mehreren komprimierten Logdateien, könnte das so aussehen:
|
Source code
|
1
|
zgrep STEAM_0:0:123456 L*.log.gz
|
Ich werd mal anfangen den Artikel darüber zu schreiben.
Es macht außerdem noch Sinn die Dateien in Downloads mal zwischendurch zu löschen. Dort sammeln sich viel mehr Dateien an als in den Log-Verzeichnissen.
Falls alle GameServer innerhalb eines Verzeichnises sind, könnte man folgendermaßen vorgehen:
|
Source code
|
1
2
3
4
|
find /home/gs/server/*/srcds/*/downloads/ -type f -mtime +7 -delete #Alle Decaldownloads der EP1/SourceEngine löschen
find /home/gs/server/*/srcds/orangebox/*/downloads/ -type f -mtime +7 -delete #Alle Decaldownloads der OrangeBox (DOD:S, TF2 und andere) löschen
find /home/gs/server/*/srcds/l4d/left4dead/downloads/ -type f -mtime +7 -delete #Alle Decaldownloads von Left4Dead löschen
find /home/gs/server/*/srcds/left4dead2/left4dead2/downloads/ -type f -mtime +7 -delete #Alle Decaldownloads von Left4Dead2 löschen
|
Der Wildcard * sorgt darüf, dass die Shell bestehende Verzeichnisse oder Dateien anstelle des Sterns einfügt.
Hierbei ist anzumerken, dass ich von meiner Installation ausgegengen bin. Gameserver sind bei mir in /home/gs/server/
Servername/
Engine/
Falls man davon ausgeht, dass es keine Dateien gibt, die aus 8 Zeichen/Zahlen bestehen und auf .dat Enden, könnte man auch folgenden Befehl zum löschen verwenden:
|
Source code
|
1
|
find /home/gs/server/ -name ????????.dat* -type f -mtime +7 -delete
|
Der * am Ende von .dat sorgt dafür, dass im gleichen Durchgang auch die .ztmp-Dateien in downloads gelöscht werden.
Hierbei sollte darauf geachtet werden, dass es manche Plugins gibt, die auch .dat Dateien mitliefern. Man sollte also nachsehen, dass durch den Befehl nicht irgendwelche Mani-Ranks oder Einstellungen gelöscht werden. Wenn man das vorher kontrollieren will, kann man zuerst alle Dateien in Downloads löschen und dann den Find Befehl einegben:
|
Source code
|
1
|
find /home/gs/server/ -name ?????????.dat
|
Wird bei dem Befehl irgendwas ausgegeben, sollte man diese Methode nicht verwenden.
Wenn man den Syntax von find mal kurz überprüfen will, sollte man -delete entfernen und stattdessen | more oder | less anhängen.
Beispiel:
|
Source code
|
1
2
|
find /home/gs/server/*/srcds/*/downloads/ -type f -mtime +7 | more
find /home/gs/server/*/srcds/*/downloads/ -type f -mtime +7 | less
|
Less hat den Vorteil, dass man auch zurückblättern kann.
Um den Server noch weiter zu bereinigen, kann man die .ztmp-Dateien löschen,
wenn der Fastdownload verwendet wird.
Falls kein FastDL verwendet wird, sollten die .ztmp-Dateien nicht gelöscht werden, da der Server diese für einen Download sonst wieder komprimieren müsste.
Wichtig ist hierbei, dass es im Verzeichnis downloads des jeweiligen Modverzeichnisses immer .ztmp-Dateien beinhaltet. Diese sollten auch nicht gelöscht werden, da ansonsten der Server diese Dateien erneut komprimieren müsste, wenn ein Spieler noch nicht das Spraylogo eines Spielers hat, der sich auf dem Server befindet.
Der Code-Schnipsel könnte so aussehen:
|
Source code
|
1
|
find /home/gs/server/ -name *.ztmp -not -name *.dat.ztmp -delete
|
Dateien, die auf .dat.ztmp Enden, werden durch den Befehl nicht gelöscht.
Wer noch mit Symlinks arbeitet, kann nachträglich verweiste Symlinks der Gameserver löschen. Oftmals gab es auch SteamUpdates, bei denen Dateien entfernt wurden. Ich selbst hatte deswegen schon öfterns verwaiste Symlinks in meinen Gameserververzeichnissen.
|
Source code
|
1
|
find -L /home/gs/server/ -type l -delete
|
Auch hier kann wieder -delete weggelassen werden und Stattdessen | more oder | less anhängen, um vorher zu kontrollieren, was gelöscht wird.
War jetzt bisschen viel Text. Aber das musste aus meinem Kopf raus