Esiste un semplice comando / script di shell che supporta l'esclusione di determinati file / cartelle dall'archiviazione?
Ho una directory che deve essere archiviata con una sottodirectory che contiene numerosi file molto grandi di cui non ho bisogno per il backup.
Non proprio soluzioni:
Il tar --exclude=PATTERN
comando corrisponde al modello specificato ed esclude quei file, ma ho bisogno di file e cartelle specifici da ignorare (percorso completo del file), altrimenti i file validi potrebbero essere esclusi.
Potrei anche usare il comando find per creare un elenco di file ed escludere quelli che non voglio archiviare e passare l'elenco a tar, ma funziona solo con una piccola quantità di file. Ne ho decine di migliaia.
Sto iniziando a pensare che l'unica soluzione sia quella di creare un file con un elenco di file / cartelle da escludere, quindi utilizzare rsync con --exclude-from=file
per copiare tutti i file in una directory tmp e quindi usare tar per archiviare quella directory.
Qualcuno può pensare a una soluzione migliore / più efficiente?
EDIT: la soluzione di Charles Ma funziona bene. Il grande gotcha è che --exclude='./folder'
DEVE essere all'inizio del comando tar. Comando completo (prima cd, quindi il backup è relativo a quella directory):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
non deve essere il primo, ma deve venire prima della directory dei sorgenti (testato con tar 1.29 su Cygwin).