Ich habe ein Bash-Skript, das von jemandem erstellt wurde, der die Bedeutung nicht mehr erklären kann. Es wird zum automatischen TARing eines Ordners und zum Sichern verwendet. Im Moment bin ich verwirrt mit der letzten Zeile:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
Das vollständige Skript finden Sie weiter unten.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
bash
shell-script
find
MODS Konto löschen
quelle
quelle
Antworten:
Der
find
Befehl löscht alle regulären Dateien in oder unter dem/home/_backups/pokebrawl
Verzeichnis, die älter als sieben Tage sind (oder genauer gesagt, nicht innerhalb der letzten Woche geändert wurden).Es sollte wahrscheinlich lesen
oder
da es eine vollkommen gute Variable gibt, die diesen Verzeichnisnamen bereits enthält. Die zweite Variante würde einen Fehler verursachen, wenn sie
DESDIR
aus irgendeinem Grund leer oder nicht gesetzt wäre.Ich gehe davon aus, dass dies eine Möglichkeit ist, nur die Backups der letzten Woche zu speichern. Ich würde vorschlagen, etwas wie
borgbackup
oderrestic
stattdessen zu verwenden, da diese Backups viel länger aufbewahren können, ohne viel mehr Speicherplatz zu benötigen (selbst stündliche Backups für ein Jahr würden überhaupt nicht viel Speicherplatz beanspruchen, wenn sich die Daten nicht stark ändern würden). . Sie deduplizieren Daten undborgbackup
unterstützen zusätzlich die Komprimierung (beide unterstützen auch Remote-Backups und Verschlüsselung).Verwenden Sie einen Cron-Job, um das Skript alle 24 Stunden (um Mitternacht) auszuführen.
Geben Sie zunächst den Befehl ein
crontab -e
. Dies würde einen Editor mit der aktuellen Crontab für den aktiven Benutzer öffnen (dies kann eine leere Datei sein oder nicht).Dann füge hinzu
(Wo
path/to/the/script.sh
ist der Pfadname des Skripts).Speichern und beenden Sie den Editor.
Das Skript würde jetzt um Mitternacht aufgerufen, sogar nachts.
Wenn Sie das Skript beispielsweise jeden Nachmittag um 13:30 Uhr ausführen möchten, fügen Sie stattdessen Folgendes als crontab-Eintrag hinzu:
Weitere Informationen zum Schreiben eines Crontab-Zeitplans (
man 5 crontab
) finden Sie im Crontab-Handbuch auf Ihrem System .quelle
find
/delete
Operation ausführen, falls ein Doofus vergisst, sie zu setzen$DESDIR
oder sie versehentlich auf "/" oder so zu setzen.DESDIR
geändert und derfind
Befehl nicht aktualisiert wird, kann das richtige Verzeichnis nicht bereinigt werden. Es wäre möglicherweise hilfreich,${DESDIR:?Not set correctly}
stattdessen etwas Ähnliches zu verwenden.Dadurch werden alle Dateien im Verzeichnis gefunden
/home/_backups/pokebrawl
, die in den letzten+6
Tagen nicht geändert wurden, und gelöscht. HINWEIS:+6
entspricht 7 Tagen.Sehen Sie sich an
man find
, wie diese Schalter funktionieren:In Redhat-Distributionen können Sie dieses Skript einfach in das Verzeichnis stellen
/etc/crondaily
und es wird jeden Tag ausgeführt. Sie können sehen, dass es dort bereits andere Skripte gibt, die Sie als Beispiele verwenden können:quelle