La commande tar
a-t-elle une option pour ignorer/ignorer le tarage des fichiers déjà tarés?
considérez que j'avais un file1.txt
et il est défini comme file1.tar.gz
, maintenant j'ai copié une autre copie de file1.txt
et de nombreux autres fichiers comme file2.txt
, file3.txt
, etc.
ce que j'attends, lors du tarage de tous ces fichiers, ne tarez pas file1.txt
à nouveau; Je ne souhaite pas exclure tout *.tar.gz
fichiers car il ne dit pas à la commande tar
de ne pas choisir file1.txt
à tar.
Ce que je dois réellement empêcher file1.txt
à choisir par tar
commande pour le tarer comme file1.tar.gz
encore ce qui existe avant (en ce moment son écrasement).
Note: Je pourrais écrire un script, mais je veux m'assurer que la commande tar
ne peut pas faire cela.
sons tar
n'a actuellement aucune possibilité d'ignorer les fichiers qui ont une version tarée, c'est donc un moyen d'ignorer ces fichiers:
find -type f -name '*.txt' -exec sh -c '
[ -f "${1%.txt}.tar.gz" ] && echo "$1 skipping ..." || echo "$1 taring ..."
' _ {} \;
Je peux y parvenir en utilisant la commande tar suivante:
tar -cf koko.tar --exclude="*.tar" kokotar
Une autre astuce consiste à créer un fichier avec les modèles de noms de fichiers ou d'extension que vous souhaitez ignorer, puis lisez ce fichier à partir de la commande tar
pour ignorer tous ces fichiers avec ceci:
tar -cf koko.tar --exclude-from <file | /path/to/exclusion/list/file> kokotar
or
tar -cf koko.tar -X <file | /path/to/exclusion/list/file> kokotar
Format de syntaxe:
tar -cf <name_of_new_tar_file>.tar --exclude='pattern' <source>
tar -cf <name_of_new_tar_file>.tar --exclude-from /path/to/name/exclusion/list <source>