Estou tentando compactar uma pasta (/var/www/
) para ~/www_backups/$time.tar
onde $time
é a data atual.
Isso é o que eu tenho:
cd /var/www && sudo tar -czf ~/www_backups $time"
Estou completamente perdido e estou nisso há horas. Não tenho certeza se -czf
está correto. Eu simplesmente quero copiar todo o conteúdo em /var/www
em um arquivo $time.tar
e quero manter as permissões de arquivo para todos os arquivos. Alguém pode me ajudar?
Comentários
Resposta
Para tar
e gzip
uma pasta, a sintaxe é:
tar czf name_of_archive_file.tar.gz name_of_directory_to_tar
O -
com czf
é opcional.
Se você deseja tar
o diretório atual, use .
para designá-lo.
Para construir nomes de arquivos dinamicamente, use o utilitário date
(consulte sua página de manual para as opções de formato disponíveis). Por exemplo:
cd /var/www && tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .
Isso criará um arquivo chamado algo como 20120902-185558.tar.gz
.
No Linux, é provável que tar
também suporte compactação BZip2 com j
em vez de z
opção. E possivelmente outros. Verifique a página do manual em seu sistema local.
Comentários
- Isso é perfeito, obrigado. Porém, tenho um pequeno problema. Depois de criar um arquivo tar de / var / www, ele é colocado nos diretórios / var / www no arquivo tar. Aqui ' é o código i ' m usando agora
sudo tar -czf ~/www_backups/$time.tar /var/www/"
Imagine que tenho um arquivo chamado test.txt dentro de / var / www. Depois de fazer uma cópia tar do arquivo, quando eu extraí-lo, ele será colocado dentro dos diretórios / var / www. Isso faz sentido? Espero que sim, é meio difícil de explicar. Vou verificar se há suporte para BZip2, obrigado pela sugestão! - Isso ' é por que você primeiro
cd
para o diretório que você deseja empacotar, entãotar cf file.tar .
– aquele último.
em vez de especificar o caminho completo fará com que os caminhos dentro do arquivo sejam relativos ao diretório atual. Você também pode usar a opção-C
para tar (veja a página de manual). - Sim, funcionou muito melhor. Muito obrigado, agradeço!
- @Qwertylicious
-f
(da página de manual)Read the archive from or write the archive to the specified file.The filename can be - for standard input or standard output.
- Com versões recentes de tar, as
J
maiúsculas (em vez dez
) usarão xz Compressão LZMA2.
Resposta
Exemplos de algoritmos de compressão mais comuns
O título da pergunta para isso é simplesmente " Compactar um pasta com tar? " Como este título é muito geral, mas a pergunta e a resposta são muito mais específicas, e devido ao grande número de visualizações que esta pergunta atraiu, eu percebi seria benéfico adicionar uma lista atualizada de exemplos de arquivamento / compactação e extração / descompactação, com vários algoritmos de compactação comumente usados.
Eles foram testados com o Ubuntu 18.04.4. Eles são muito simples para uso geral, mas poderiam ser facilmente integrados ao conteúdo das perguntas mais específicas do OP usando as técnicas na resposta aceita e nos comentários úteis acima.
Uma coisa a ser observada para os mais gerais público é que tar
não adicionará as extensões necessárias (como .tar.gz
) automaticamente – o usuário deve adicioná-las explicitamente, conforme visto no comandos abaixo:
# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball tar cvf filename.tar * # 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory tar xvf filename.tar # 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip tar cvzf filename.tar.gz * # 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory tar xvf filename.tar.gz # Note: same options as 2 above # 5: tar (create bzip2"ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2 tar cvjf filename.tar.bz2 * # Note: little "j" in options # 6: Untar (extract bzip2"ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above # 7: tar (create xz"ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz tar cvJf filename.tar.xz * # Note: capital "J" in options # 8: Untar (extract xz"ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above
Veja a página do manual tar (melhor usar man tar
em sua máquina específica) para obter mais detalhes. Abaixo, resumo as opções usadas acima diretamente da página de manual:
-c, –create
cria um novo arquivo-x, –extract, –get
extrai os arquivos de um arquivo-v, –verbose
listar detalhadamente os arquivos processados-z, –gzip
filtrar o arquivo através do gzip-j, –bzip2
filtrar o arquivo através do bzip2-J, –xz
filtrar o arquivo através de xz-f, –file = ARQUIVO
usar arquivo ou dispositivo ARQUIVO
Não há necessidade de adicionar o -
na frente das opções combinadas ou o sinal =
entre a opção f
e o nome do arquivo.
Peguei tudo isso em meu artigo recente, que será expandido em um artigo muito mais abrangente, pois tenho tempo para trabalhar isso.
$time
também.