web-dev-qa-db-fra.com

Ignorer les fichiers de tar s'il existe déjà une version tar?

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.

2
αғsнιη

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 ..."
' _ {} \;
0
αғsнιη

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>
1
George Udosen