Question Comment tout tar.gz sous xx MB?


J'utilise actuellement ceci:     tar -pczf backup.tar.gz *

pour tout gâcher. Il existe cependant d'autres sauvegardes (dans d'autres dossiers), il s'agit généralement des seuls fichiers> 50 Mo. Comment puis-je les exclure? Aussi, quelqu'un sait comment je peux exclure jpg / gif / pngs? Merci


4
2017-10-23 12:01


origine


Si les autres sauvegardes sont aussi .tar.gzs, vous pouvez aussi les exclure de la même manière que vous en excluez jpg / gif / pngs


Réponses:


vous pouvez passer la liste des fichiers à tar directement (avec le T interrupteur), c'est-à-dire:

find dir/ -size -50M | tar -czf test.tgz -T - --exclude '*.gif' --exclude '*.jpg'

5
2017-10-23 12:19



Cela fonctionnera au point que le nombre d'arguments à tar dépasse une certaine limite. C'est-à-dire lorsque la sortie de find devient importante. Au-delà de ce point, vous devez insérer l'appel tar dans l'argument find -sec.
La documentation tar n'indique aucune limitation de la taille de l'entrée dans -T, donc je n'ai aucune idée de ce dont vous parlez vraiment. - wds
Ce n'est pas une limitation -T. C'est une chose en coquille. Essayez-le
Si vous parlez de la limitation de la taille de la ligne de commande, ce n'est pas un problème ici, car nous distribuons directement la sortie de find dans tar. - wds
Bien. Je ne peux pas le reproduire avec 183971 fichiers. En fait, je me souviens que lorsque j'ai vu ce problème, c'était lié à xargs. Je devais changer une recherche vers xargs pour un appel à une application tar dans une recherche avec un appel exec en ligne pour tar.


Vous pouvez combiner tar avec find pour sélectionner uniquement les fichiers d'une certaine taille: find . -size -50M renvoie une liste de tous les fichiers de moins de 50 Mo, que vous pouvez ensuite transmettre à tar.

modifier Vous n'avez pas remarqué votre deuxième question lorsque j'ai répondu pour la première fois: afin d'exclure des fichiers basés sur leur extension, il suffit de diriger la sortie de find vers grep: find ... | fgrep -v \*.jpg \*.png etc. (non testé).


3
2017-10-23 12:09



Cela dit, Artelius a raison: ce que vous voulez exclure de votre sauvegarde générale est, je suppose, toutes les sauvegardes partielles que vous avez déjà effectuées, vous pouvez donc les détecter par leur extension de fichier (tar.gz etc.), pas leur taille.


L'extension de la suggestion d'Arthur, l'option tar 's est pour append. Donc, quelque chose comme ça pourrait le faire.

 find /path/to/dir  -size -50M -exec tar -rvpf backup.tar \;

MODIFIER: -exec a besoin de terminer la chaîne "\;" (sans citations).

Vous ne pouvez pas ajouter à une archive compressée, vous devrez donc le gzip (ou le bzip2) séparément.

Combinez avec la solution wds pour exclure les images.


1
2017-10-23 12:15



"$ PATH" est probablement un choix problématique pour cette variable car elle a une signification bien définie et ne fait généralement pas référence à un seul répertoire. - Joachim Sauer


Les exclusions peuvent également être faites par find :

find -maxdepth 1 -size -50M -not -regex ".*/.*\.\(jpg\|gif\|png\)$" | tar . . .

1
2017-10-23 14:46





tar a les options pour exclure les fichiers correspondant à certains modèles, mais pas la taille.

--exclude = PATTERN
    exclure les fichiers correspondant à PATTERN
  -X, --exclude-from = FILE
    exclure les fichiers correspondant aux modèles répertoriés dans FICHIER

"ubuntuforum"a un bon script pour sauvegarder les fichiers et exclure les fichiers en fonction de leur taille.


0
2017-10-25 08:11