Script Shell pour supprimer des fichiers lorsque le disque est plein
Je suis en train d'écrire un petit script pour libérer de l'espace sur mon linux tous les jours via CRON si le répertoire de cache devient trop importante.
Depuis que je suis vraiment vert à l'écriture de scripts bash, j'ai besoin d'un peu d'aide de vous linux gourous.
Ici est fondamentalement la logique (pseudo-code)
if ( Drive Space Left < 5GB )
{
change directory to '/home/user/lotsa_cache_files/'
if ( current working directory = '/home/user/lotsa_cache_files/')
{
delete files in /home/user/lotsa_cache_files/
}
}
Obtenir de l'espace disque gauche
J'ai l'intention d'obtenir de l'espace disque à gauche de l '/dev/sda5' de la commande.
Si renvoie la valeur suivante à moi pour votre info :
Filesystem 1K-blocks Used Available Use% Mounted on<br>
/dev/sda5 225981844 202987200 11330252 95% /
Donc un peu de regex peut être nécessaire pour obtenir le '11330252' de la valeur retournée
Un peu de la paranoïa
'Si ( répertoire de travail actuel = /home/utilisateur/lotsa_cache_files/) est juste un mécanisme de défense pour la paranoïa à l'intérieur de moi. Je veux m'assurer que je suis bien dans '/home/utilisateur/lotsa_cache_files/' avant de poursuivre avec la commande supprimer qui est potentiellement destructeurs, si le répertoire de travail actuel n'est pas présent pour une raison quelconque.
La suppression de fichiers
La suppression de fichiers sera fait avec la commande ci-dessous au lieu de l'habituel rm-f:
find . -name "*" -print | xargs rm
Cela est dû à l'incapacité intrinsèque des systèmes linux à " rm " un répertoire si elle contient trop de fichiers, comme je l'ai appris dans le passé.
OriginalL'auteur Roy | 2011-05-06
Vous devez vous connecter pour publier un commentaire.
Juste une autre proposition (commentaires dans le code):
Appeler le script en crontab pour faire des nettoyages planifiés
-delete
drapeau au lieu de-exec rm -f {} \;
. Pensez également à ajouter-xdev
que le premier drapeau de rester dans le même système de fichiers.OriginalL'auteur hmontoliu
Je voudrais faire de cette façon:
find
de commande et de ne pas utiliser xargs, car il peut être dangereux.OriginalL'auteur bmk
Voici le script que j'utilise pour supprimer les anciens fichiers dans un répertoire pour libérer de l'espace...
il ne
cd $DIR
de sorte qu'il ne sera pas.OriginalL'auteur lfjeff
Pour détecter l'occupation d'un système de fichiers, j'utilise ceci :
qui me donnent le pourcentage d'occupation du système de fichiers, de cette façon, je n'ai pas besoin de la calculer 🙂
Si vous utilisez bash, vous pouvez utiliser le pushd/popd opération pour changer de répertoire et être sûr d'être dans.
OriginalL'auteur Cédric Julien