o tar tem um switch --exclude.
Eu tenho uma estrutura de pastas assim:
file1
file2
file3
file4
folder1
folder2
Sem escrever cada arquivo, como posso tar zip todos os arquivos e pastas, exceto file1 e folder1?
Você pode usar a opção --exclude=pattern
, que impede que qualquer arquivo ou membro cujo nome corresponda ao curinga (padrão) seja operado. Por exemplo, para criar um arquivo com todo o conteúdo do diretório src
, exceto os arquivos cujos nomes terminam em .exe
, use o comando tar -cf src.tar --exclude='*.exe' src
Without writing each file, how can I tar zip all the files and folders, except file1 and folder1?
Supondo que a pasta principal que contém todos os arquivos / pastas que você deseja compactar esteja localizada em /home/admin/mystuff/
(ou seja, /home/admin/mystuff/file1
, /home/admin/mystuff/folder1/
, etc), qualquer um dos itens a seguir deve funcionar.
Se você estiver dentro da pasta /home/admin/
, poderá fazer isso:
tar -cz --exclude mystuff/file1 --exclude mystuff/folder1/ -f my_new_file.tar.gz mystuff
Ou, se você estiver dentro do diretório que deseja compactar (nesse caso, /home/admin/mystuff/
), poderá fazer isso:
tar -cz --exclude file1 --exclude folder1/ -f my_new_file.tar.gz .
Anote o ponto no final da segunda opção.
Observe também que usei tar -cz
porque prefiro .tar.gz
files ... Se você quiser apenas um arquivo .tar
, basta alterar o comando para tar -c --exclude [...]
(removendo z
de -cz
) e, em seguida, altere o arquivo de saída de my_new_file.tar.gz
para my_new_file.tar
.