Étiquette : tar

8 juillet 2019 /

Lorsque le nombre de fichiers dans un répertoire dépasse les 30000, cela peut constituer un problème.

Voici les étapes à suivre pour mener à bien cette tâche:
1) Recherche tous les fichiers .txt dans le répertoire courant et ses sous-répertoires, puis écrit la liste complète de leurs chemins dans le fichier temporaire /tmp/fichiers_a_archiver.
find . -name '*.txt' -print > /tmp/fichiers_a_archiver
2) Crée une archive gzip (fichiers_a_archiver.tar.gz) contenant exactement les fichiers listés dans /tmp/fichiers_a_archiver.
L’option –files-from permet à tar de ne prendre que ces fichiers (très utile pour archiver sélectivement).
tar -cvzf fichiers_a_archiver.tar.gz --files-from /tmp/fichiers_a_archiver
3) Supprime tous les fichiers .txt trouvés (avec -v pour voir ce qui est supprimé).
find . -name '*.txt' | xargs rm -v
4 juin 2018 /
1. Sauvegarder les fichiers de plus de 180 jours dans une archive compressée
find . -mtime +180 -print0 | xargs -0 tar -zcf ../backup_04-06-2018.tar.gz
ou
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"
Explication :

  • find . -mtime +180 : trouve les fichiers modifiés il y a plus de 180 jours.
  • -print0 + xargs -0 : gère correctement les noms de fichiers avec espaces, apostrophes, caractères spéciaux (très sûr).
  • tar -zcf ../backup_…tar.gz : crée l’archive gzip directement à partir de la liste fournie par xargs (sans passer par un fichier temporaire).
2. Compter le nombre de fichiers sauvegardés
find . -mtime +180 -exec ls -1 {} + | wc -l
Explication :

  • Liste les fichiers concernés (un par ligne avec ls -1).
  • wc -l compte les lignes → nombre de fichiers.

Variante plus précise (sans ls) :

find . -mtime +180 -print | wc -l
3. Supprimer les fichiers après sauvegarde
find . -mtime +180 -exec rm {} +
Explication :

  • -exec rm {} + : supprime les fichiers trouvés de façon efficace (regroupe les arguments autant que possible).

Attention maximale : cette commande est irréversible. Toujours tester d’abord avec -ls ou -print avant de passer à -exec rm.

Séquence complète:
# 1. Création de l'archive (adapte le chemin et le nom)
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"

# 2. Vérification du nombre de fichiers concernés
find . -mtime +180 -print | wc -l

# 3. Suppression (À EXÉCUTER UNIQUEMENT APRÈS VÉRIFICATION !)
find . -mtime +180 -exec rm {} +

 

19 juillet 2015 /

Pour rechercher et archiver les fichiers du répertoire courant:

find . -type f -print0 | tar -czvf backup.tgz --null -T -

Pour rechercher et archiver tous les fichiers .jpg du répertoire courant:

find . -name "*.jpg" -print0 | tar -czvf backup.tgz --null -T -