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?



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" 

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/ 

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


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

3

Tente isto

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

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>

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.


2

Isso funcionou para mim:

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

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.

-2

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

--exclude=/home/user/public_html/tmp

1
"é necessário se a pasta tiver espaço no nome
Preto
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.