Existe-t-il une commande / script shell simple qui prend en charge l'exclusion de certains fichiers / dossiers de l'archivage?
J'ai un répertoire qui doit être archivé avec un sous-répertoire contenant un certain nombre de fichiers très volumineux que je n'ai pas besoin de sauvegarder.
Pas tout à fait des solutions:
La tar --exclude=PATTERN
commande correspond au modèle donné et exclut ces fichiers, mais j'ai besoin de fichiers et dossiers spécifiques à ignorer (chemin d'accès complet), sinon des fichiers valides pourraient être exclus.
Je pourrais également utiliser la commande find pour créer une liste de fichiers et exclure ceux que je ne veux pas archiver et transmettre la liste à tar, mais cela ne fonctionne qu'avec une petite quantité de fichiers. J'en ai des dizaines de milliers.
Je commence à penser que la seule solution est de créer un fichier avec une liste de fichiers / dossiers à exclure, puis d'utiliser rsync avec --exclude-from=file
pour copier tous les fichiers dans un répertoire tmp, puis d'utiliser tar pour archiver ce répertoire.
Quelqu'un peut-il penser à une solution meilleure / plus efficace?
EDIT: la solution de Charles Ma fonctionne bien. Le gros problème est que le --exclude='./folder'
MUST doit être au début de la commande tar. Commande complète (cd en premier, donc la sauvegarde est relative à ce répertoire):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
n'a pas besoin d'être le premier mais il doit venir quelque part avant le répertoire source (testé avec tar 1.29 sur Cygwin).