J'ai un script bash, créé par quelqu'un qui n'est plus en mesure d'expliquer la signification, qui est utilisé pour tarer automatiquement un dossier et le sauvegarder. Pour le moment, je suis confus avec la dernière ligne:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
Le script complet est ci-dessous.
#!/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 Supprimer le compte
la source
la source
Réponses:
La
find
commande supprimera tout fichier normal dans ou en dessous du/home/_backups/pokebrawl
répertoire datant de plus de sept jours (ou plus précisément, non modifié au cours de la dernière semaine).Il faut probablement lire
ou
car il existe une variable parfaitement bonne contenant déjà ce nom de répertoire. La deuxième variation entraînerait une erreur si,
DESDIR
pour une raison quelconque, était vide ou non défini.Je suppose que c'est un moyen de conserver uniquement la valeur de la semaine dernière de sauvegardes. Je suggérerais d'utiliser quelque chose comme
borgbackup
ou à larestic
place, car ceux-ci pourraient garder les sauvegardes beaucoup plus longtemps sans utiliser beaucoup plus d'espace (même les sauvegardes horaires pendant un an ne prendraient pas beaucoup d'espace si les données ne changeaient pas beaucoup) . Ils font la déduplication des données etborgbackup
prennent également en charge la compression (les deux prennent également en charge les sauvegardes à distance et le chiffrement).Pour exécuter le script toutes les 24 heures (à minuit), utilisez une tâche cron.
Commencez par exécuter la commande
crontab -e
. Cela ouvrirait un éditeur avec la crontab actuelle pour l'utilisateur actif (cela peut ou non être un fichier vide).Puis ajouter
(où
path/to/the/script.sh
est le chemin d'accès du script).Enregistrez et quittez l'éditeur.
Le script serait désormais appelé à minuit, même la nuit.
Souhaitez-vous exécuter le script à, disons, 13h30 tous les après-midi, ajoutez ce qui suit comme entrée crontab à la place:
Consultez le manuel de crontab sur votre système pour plus de détails sur la façon d'écrire un programme crontab (
man 5 crontab
).la source
find
/delete
, au cas où certains doofus oublient de la définir$DESDIR
ou la définissent sur "/" ou quelque chose de ce genre par erreur.DESDIR
est modifiée et que lafind
commande n'est pas mise à jour, elle ne parviendra pas à nettoyer le bon répertoire. Il serait peut-être utile d'utiliser à la place${DESDIR:?Not set correctly}
ou quelque chose de similaire.Cela trouve tous les fichiers du répertoire
/home/_backups/pokebrawl
qui n'ont pas été modifiés au cours des derniers+6
jours et les supprime. REMARQUE:+6
équivaut à 7 jours.Regardez
man find
pour voir comment ces commutateurs fonctionnent:Sur les distributions Redhat, vous pouvez simplement mettre ce script dans le répertoire
/etc/crondaily
et il s'exécutera tous les jours. Vous pouvez voir qu'il existe déjà d'autres scripts que vous pouvez utiliser comme exemples:la source