Comment créer de goudron pour les fichiers de plus de 7 jours d'utilisation de linux shell script
Je suis en train d'écrire le script shell pour la sauvegarde des fichiers de plus de 7 jours. Voici mon code. Mais je n'obtiens pas le résultat escompté. Quelqu'un peut me corriger?
#!/bin/bash
# Backup files
files=($(find /var/log/ -mtime +"7"))
for files in ${files[*]}
do
echo $files
tar cvfz backup.tar.gz $files
done
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
Notez l'utilisation de
"${files[@]}"
par opposition à${files[*]}
."${files[@]}"
sera élargi pour fournirtar
avec un argument par nom de fichier et de travail, même si les noms de fichier contenant des espaces, des tabulations ou des retours à la ligne. En revanche, après le shell étend${files[*]}
, il va effectuer, de couper un mot, potentiellement, d'amputation des noms de vos fichiers.Pour une explication détaillée de la boucle utilisée pour créer le
files
tableau, voir: Comment puis-je stocker la commande rechercher du résultat sous forme de tableaux dans BashTous les fichiers et répertoires produit par la commande
find /var/log/-mtime +7
seront inclus dans letar
fichier. Pour inclure uniquement les fichiers, pas les répertoires, voir Skynet réponse.Pour archiver les journaux, dans les sept plus récente jours
Un personnage seulement besoin de changement:
Cela fonctionne parce que
find
interprète des arguments numériques comme suit:Ainsi,
-mtime +7
signifie plus de 7 jours alors que-mtime -7
signifie moins de 7. Notez quefind
ignore les parties fractionnaires. Ainsi+7
comprendra 8 jours mais pas de 7,5 jours. Voirman find
pour plus de détails.set -x
au début du script.Remplacer votre
find
de commande avec cela et essayer de nouveau,