Linux commande tar: compresser un répertoire, mais sauf les sous-répertoires
Scénario: j'ai un répertoire sur un serveur qui héberge mon site web qui contient des centaines de soumis par l'utilisateur des images. Je suis entrain de créer un script de sauvegarde qui prend toutes les images du répertoire et les compresse en un seul .tar.gz fichier. La commande que j'ai jusqu'à présent est:
tar-czpf /path/to/backups/my_backup.tar.gz chemin/vers/images/
Problème: Pas à l'intérieur de mon chemin/vers/images/j'ai un répertoire tmp/. Lorsque je lance la commande, je reçois un .tar.gz un dossier contenant toutes les images dans le chemin/vers/répertoire images/et un sous-répertoire tmp/.
Question: Comment puis-je obtenir la commande d'ignorer/ne pas inclure le tmp/sous-répertoire dans le .tar.gz fichier.
Un million de mercis à l'avance.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour le
--exclude
argument.Certains utilisateurs trouvent que
exclude
options de confusion. Voici quelques pièges courants:Le mode de fonctionnement principal de
tar
ne pas agir sur un nom de chemin d'accèsexplicitement listés sur la ligne de commande si un nom de fichier
les composants sont exclus. Dans l'exemple ci-dessus, si vous créez un
archives et exclure les fichiers qui se terminent avec
*.o
, mais explicitement le nom dele fichier
dir.o/foo
après toutes les options ont été répertoriés,dir.o/foo
seront exclus de l'archive.On peut parfois confondre le sens de
--exclude=PATTERN
et--exclude-from=FILE-OF-PATTERNS
(-X FILE-OF-PATTERNS
). Êtreattention: utilisation
--exclude=PATTERN
lorsque des fichiers sont exclusdonné comme un modèle sur la ligne de commande. Utilisation
--exclude-from=FILE-OF-PATTERNS
introduire le nom d'un fichierqui contient une liste de modèles, un par ligne; chacun de ces
les modèles peuvent exclure zéro, un, ou plusieurs fichiers.
Lorsque vous utilisez
--exclude=PATTERN
, assurez-vous de citer le MODÈLEparamètre, donc GNU
tar
voit des caractères génériques comme*
. Si vousne le faites pas, le shell peut étendre la
*
lui-même à l'aide de fichiersla main, donc
tar
pourrait recevoir une liste de fichiers au lieu d'un seulmotif, ou de rien du tout, ce qui rend la commande un peu illégal.
Cela pourrait ne pas correspondre à ce que vous voulez.
Par exemple, écrire:
plutôt que:
regexp
syntaxe, lors de l'utilisation d'exclure les options dans
tar
. Si vous essayez d'utiliserregexp
syntaxe pour décrire les fichiers à exclure de votre commandepeut échouer.
Cela devrait fonctionner (en supposant que GNU tar):