Question Comment archiver en ignorant les fichiers de plus de 100 Mo


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


7
2018-02-21 11:43


origine




Réponses:


Oui, il y a probablement quelques autres façons de le faire, mais vous êtes probablement mieux lotis avec find comme c'est tellement accordable.

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

ou

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

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

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

D'après 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, remplacer les espaces par des versions échappées.

Comme toujours, il y a un milliard de façons de procéder.

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

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

8
2018-02-21 11:58



Les deux options peuvent poser problème si l'OP a des noms de fichiers contenant des espaces. - enzotib
... convenu - devra utiliser -print0 dans la commande de recherche ainsi que --null pour la commande tar pour faire face à ce scénario. - fossfreedom♦
En créant une énorme archive tar cvf myfile.tar commande échoue. Je suggère fortement l'utilisation de tar rvf myfile.tar commander. - Faruk Uzun


Excluez simplement les gros fichiers comme ceci:

tar cf archive.tar / path / to / archive --exclude-from <(find / path / to / archive -size + 100M)


0
2018-02-16 10:13