¿Existe un comando / script de shell simple que permita excluir ciertos archivos / carpetas del archivo?
Tengo un directorio que necesita ser archivado con un subdirectorio que tiene una cantidad de archivos muy grandes que no necesito respaldar.
No del todo soluciones:
El tar --exclude=PATTERN
comando coincide con el patrón dado y excluye esos archivos, pero necesito que se ignoren archivos y carpetas específicos (ruta de archivo completa), de lo contrario, podrían excluirse los archivos válidos.
También podría usar el comando find para crear una lista de archivos y excluir los que no quiero archivar y pasar la lista a tar, pero eso solo funciona con una pequeña cantidad de archivos. Tengo decenas de miles.
Estoy empezando a pensar que la única solución es crear un archivo con una lista de archivos / carpetas que se excluirán, luego usar rsync con --exclude-from=file
para copiar todos los archivos a un directorio tmp, y luego usar tar para archivar ese directorio.
¿Alguien puede pensar en una solución mejor / más eficiente?
EDITAR: la solución de Charles Ma funciona bien. El gran problema es que --exclude='./folder'
DEBEN estar al comienzo del comando tar. Comando completo (primero cd, por lo que la copia de seguridad es relativa a ese directorio):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
no tiene que ser el primero, pero debe aparecer en algún lugar antes del directorio fuente (probado con tar 1.29 en Cygwin)