web-dev-qa-db-fra.com

Comment archiver en ignorant les fichiers de plus de 100 Mo

J'essaie d'archiver des fichiers avec tar et en ignorant les fichiers de plus de 100 Mo. Est-ce possible?
PS: Ne pas utiliser de goudron.

7
Faruk Uzun

Oui, il y a probablement encore plus de façons de faire cela, mais vous êtes probablement mieux avec find car c'est tellement ajustable.

find /path/to/dir -size -100M | xargs tar cvf archive.tar

ou

tar cvf archive.tar $(find /path/to/dir -size -100M)

S'il y a d'autres répertoires dans le dossier actuel que vous ne voulez pas archiver, utilisez:

find /path/to/dir -maxdepth 1 -size -100M | xargs tar cvf archive.tar

Selon les commentaires ci-dessous, les espaces peuvent générer des erreurs, mais lors de mes tests, ils semblaient toujours être ajoutés à l'archive lors de l'utilisation de la première méthode (un peu étrange en soi), mais si vous êtes inquiet, vous pouvez corriger la commande find. remplacer les espaces par des versions échappées.

Comme toujours, il existe un milliard de façons de le faire.

find /path/ -size -100M | sed 's/ /\\ /g' | xargs tar cvf archive.tar

find /path/ -size -100M -exec echo '"{}"' \; | xargs tar cvf archive.tar
8
Oli

Excluez simplement les gros fichiers comme ceci:

tar cf archive.tar/chemin/vers/archive --exclude-from <(recherche/chemin/vers/archive -size + 100M)

0
eshwar