Comprimir uma pasta com tar?

268

Estou tentando compactar uma pasta ( /var/www/) para ~/www_backups/$time.taronde $timeestá a data atual.

Isto é 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 -czfestá correto. Eu simplesmente quero copiar todo o conteúdo em /var/wwwum $time.tararquivo e quero manter as permissões de arquivo para todos os arquivos. Alguém pode me ajudar?

qwerty
fonte
você precisa de um "do outro lado $timetambém.
gauteh 4/15/15

Respostas:

373

Para tare gzipuma pasta, a sintaxe é:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar

O -é opcional. Se você deseja taro diretório atual, use .para designar isso.

Para construir seu nome de arquivo, use o dateutilitário (consulte a página de manual para obter as opções de formato disponíveis). Por exemplo:

cd /var/www && sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .

Isso teria criado um arquivo chamado algo como 20120902-185558.tar.gz.

No Linux, é provável que você tartambém suporte a compactação BZip2 com a opção em jvez de z. E possivelmente outros. Verifique a página do manual no seu sistema local.

Esteira
fonte
1
Isso é perfeito, obrigado. Eu tenho um pequeno problema embora. Após criar um arquivo tar de / var / www, ele é colocado nos diretórios / var / www no arquivo tar. Aqui está o código que estou usando agora sudo tar -czf ~/www_backups/$time.tar /var/www/"Imagine ter um arquivo chamado test.txt dentro de / var / www. Depois de fazer uma cópia do arquivo tar, quando extraí-lo, ele será colocado dentro dos diretórios / var / www. Isso faz sentido? Espero que sim, meio difícil de explicar. Vou verificar o suporte ao BZip2, obrigado pela sugestão!
Qwerty
1
É por isso que você primeiro cdleva ao diretório que deseja empacotar tar cf file.tar .- o último, em .vez de especificar o caminho completo, tornará os caminhos dentro do arquivo em relação ao diretório atual. Você também pode usar a -Copção para tar (veja a página de manual).
Tapete de
1
Sim, isso funcionou muito melhor. Muito obrigado, agradeço!
Qwerty '
3
@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.
Kolob Canyon
1
sudoestava na pergunta, não mudou ou questionou isso. Ter o diretório de destino de backup restrito à raiz não é uma má idéia.
26418 Mat