GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un fichier tar pour des fichiers de plus de 7 jours à l'aide de scripts shell Linux

Remplacez votre find commande avec ceci et réessayez,

find /var/log -type f -mtime +7 

Cela fonctionnera :

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime +7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Notez l'utilisation de "${files[@]}" par opposition à ${files[*]} . "${files[@]}" s'étendra pour fournir tar avec un argument par nom de fichier et fonctionnera même si les noms de fichiers contiennent des espaces, des tabulations ou des retours à la ligne. En revanche, après que le shell se développe ${files[*]} , il effectuera une division des mots, ce qui pourrait altérer vos noms de fichiers.

Pour une explication détaillée de la boucle utilisée pour créer le files tableau, voir :Comment puis-je stocker le résultat de la commande find sous forme de tableaux dans Bash ?

Tous les fichiers et répertoires produits par la commande find /var/log/ -mtime +7 sera inclus dans le tar dossier. Pour inclure uniquement des fichiers, pas des répertoires, consultez la réponse de Skynet.

Pour archiver les journaux des sept derniers jours

Un seul caractère à modifier :

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime -7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Cela fonctionne car find interprète les arguments numériques comme suit :

Les arguments numériques peuvent être spécifiés comme
+n pour supérieur à n,
-n pour moins de n,
n pour exactement n.

Ainsi, -mtime +7 signifie plus de 7 jours alors que -mtime -7 signifie moins de 7. Notez que find ignorera les parties fractionnaires. Donc +7 inclura 8 jours mais pas 7,5 jours. Voir man find pour plus de détails.


Linux
  1. Comment supprimer tous les fichiers antérieurs à X nombre de jours sous Linux ?

  2. Comment supprimer les fichiers de plus de n jours SANS utiliser la commande find

  3. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

  4. Comment rechercher et supprimer des fichiers antérieurs à une période donnée sous Linux

  5. calculer l'espace disque total utilisé par les fichiers de plus de 180 jours à l'aide de la recherche

Comment trouver des fichiers sous Linux

Comment trouver des fichiers en utilisant la ligne de commande dans le terminal Linux

Comment trouver des fichiers plus gros ou plus petits que la taille X sous Linux

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux

Comment supprimer des fichiers plus anciens que les jours spécifiés sous Linux

Linux :utilisation de la recherche pour localiser les fichiers antérieurs au <date>