Excluindo o diretório ao criar um arquivo .tar.gz

119

Eu tenho uma /public_html/pasta, nessa pasta há uma /tmp/pasta com 70 GB de arquivos que eu realmente não preciso.

Agora estou tentando criar um .tar.gzde /public_html/exclusão/tmp/

Este é o comando que executei:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

O alcatrão ainda está sendo criado e, ao fazer um ls -sh, posso ver que MyBackup.tar.gzjá tem cerca de 30 GB e sei com certeza que /public_html/sem /tmp/ele não há mais de 1 GB de arquivos.

O que eu fiz errado?

suresh
fonte
a -popção não tem significado em termos da função de criação, certo !?
Martin Schneider

Respostas:

201

Tente remover o último / no final do caminho do diretório para excluir

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 
Victor Parmar
fonte
7
Para excluir pasta inteira e seu conteúdo: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky
Eu tar: Error exit delayed from previous errors.entro em macos
prayagupd 28/06
Obtendo um erro tar: Removendo `/ 'principal dos nomes dos membros
SenG
2
Não funciona, eu tive que usar em --exclude="/home/user/public_html/tmpvez de--exclude "/home/user/public_html/tmp
Black
1
Desconsidere meu comentário anterior que não posso mais editar: excludeprecisa ser especificado primeiro como notas de stackoverflow.com/users/3904223/oussaka . Pelo menos essa é a única coisa que funcionou para mim
kghbln
46

Tente mover o --excludepara antes da inclusão.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 
Martin Algesten
fonte
Obrigado, isso funcionou para mim em uma antiga caixa Ubuntu 14.04 LTS.
Jamsi
1
Eu precisava fazer isso no OS X também.
precisa saber é o seguinte
16

Sim, remova a trilha /e (pelo menos no ubuntu 11.04) todos os caminhos dados devem ser relativos ou completos. Você não pode misturar caminhos absolutos e relativos no mesmo comando.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

não excluirá o diretório de logs, mas

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

vai funcionar

do utilizador
fonte
1
Trabalhe para mim quando eu remover o caminho absoluto no argumento de exclusão.
Jruzafa #
2
A ponta sobre a mistura de caminhos absolutos e relativos foi fundamental para mim aqui
Dmitri DB
12

O comando correto para excluir o diretório da compactação é:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Certifique-se de colocar --exclude antes dos itens de origem e destino .

e você pode verificar o conteúdo do arquivo tar.gz sem descompactar:

tar -tf backup.tar.gz
oussaka
fonte
3

Tente isto

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp
Yogesh
fonte
2

Você também pode excluir mais de um usando apenas um --exclude. Como este exemplo:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

Em --exclude=você deve terminar o nome do diretório, sem /e must entre MyBackup.tar.gz e / home / user / public_html /

A sintaxe é:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>
LozanoMatheus
fonte
2

A resposta aceita não funcionou para mim, rodando unxutils tar no windows10. Em vez disso, tive que colocar os arquivos / diretórios para arquivar como o último parâmetro, assim:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Então funcionou.

user2081279
fonte
2

Isso funcionou para mim:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"
Preto
fonte
2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Testado no Ubuntu 19.10.

  1. O =depois excludeé opcional. Você pode usar em =vez do espaço após a palavra-chave, excludese quiser.
  2. O parâmetro excludedeve ser colocado antes da fonte.
  3. A diferença entre usar o nome da pasta (como o 1º) ou o * (como o 2º) é: o 2º incluirá uma pasta vazia no pacote, mas o 1º não.
scegg
fonte
-2

A opção de exclusão precisa incluir o =sinal e "não é necessária.

--exclude=/home/user/public_html/tmp
Ivan Avery Frey
fonte
1
"é necessário se a pasta tiver espaço no nome
Preto