Existe um comando / script simples do shell que suporta a exclusão de determinados arquivos / pastas do arquivamento?
Eu tenho um diretório que precisa ser arquivado com um subdiretório que possui vários arquivos muito grandes dos quais não preciso fazer backup.
Não são exatamente soluções:
O tar --exclude=PATTERN
comando corresponde ao padrão fornecido e exclui esses arquivos, mas preciso que arquivos e pastas específicos sejam ignorados (caminho completo do arquivo); caso contrário, arquivos válidos poderão ser excluídos.
Também poderia usar o comando find para criar uma lista de arquivos e excluir os que não quero arquivar e passar a lista para tar, mas isso só funciona com uma pequena quantidade de arquivos. Eu tenho dezenas de milhares.
Estou começando a pensar que a única solução é criar um arquivo com uma lista de arquivos / pastas a serem excluídos, depois usar o rsync with --exclude-from=file
para copiar todos os arquivos para um diretório tmp e, em seguida, usar o tar para arquivar esse diretório.
Alguém pode pensar em uma solução melhor / mais eficiente?
EDIT: A solução de Charles Ma funciona bem. O grande problema é que --exclude='./folder'
DEVE estar no início do comando tar. Comando completo (primeiro o cd, portanto, o backup é relativo a esse diretório):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
não precisa ser o primeiro, mas deve estar em algum lugar antes do diretório de origem (testado com tar 1.29 no Cygwin).