Das Problem: Webserver-Logfiles der letzten 6 Jahre mit IP-Adressen und ein schlechtes Gewissen. Die IP-Adressen müssen raus.
Weiterhin soll aber das Datum (mtime) der Logfiles erhalten bleiben, da andere Skripte davon abhängen. Und natürlich liegen die Logs gepackt (gzip) vor.
Im Folgenden das Skript um IP-Adressen in gzippten Dateien nachträglich unter Beibehaltung des Datums zu anonymisieren.
- Timestamp merken im Format, welches touch akzeptiert.
- Entpacken in ein temporäres Verzeichnis.
- IP kürzen mit sed.
- Timestamp wiederherstellen mit touch.
- Packen und zurückschieben.
#!/bin/bash # Anonymize Logfiles # @author Frank Schubert TMPDIR=/var/tmp/_anonymize test -d $TMPDIR || mkdir $TMPDIR # - file-timestamp merken (spaeter wiederherstellen) # - entpacken in tempdir # - anonymisieren # - orig file timestamp wiederherstellen # - packen und zurückschieben # naechstes Element nach Umbruch, statt Leerzeichen IFS= Nachtrag Um Logs, die gzippt in verschiedenen Ordnern liegen vom Skript bearbeiten zu lassen hilft *find*:find . -name "*.gz" -print0 |xargs -n100 -0 ~/anonymize.sh