tar zcf home-backup.tar.gz --excluir ./home-backup.tar.gz.
Eu gostaria de fazer backup do meu diretório pessoal inteiro no Linux. Suponha que esse diretório seja o único para o qual tenho permissões de gravação.
Como eu iria tar-gzip este diretório e colocar o resultado dentro de si mesmo?
tar zcf home-backup.tar.gz --excluir ./home-backup.tar.gz.
O já sugerido
tar zcf home-backup.tar.gz --exclude home-backup.tar.gz .
funcionaria, mas eu realmente não gosto desse tipo de tars que contém muitos arquivos em vez de apenas um diretório. Se você quiser fazer o mesmo, mas como um diretório:
cd /home
tar -czf yourhome/yourhome.tgz --exclude yourhome.tgz yourhome/
Em ambos os casos, você receberá uma mensagem de erro:
tar: yourhome: file changed as we read it
que pode ser um problema se você quiser fazer backup de um script e verificar o código de saída e, de qualquer maneira, se você ignorar isso, poderá ocultar outro problema. Você pode eliminar isso criando um tgz vazio antes de iniciar o backup:
touch yourhome.tgz
Se você usar uma implementação moderna de tar, isso funcionará do jeito que você gosta:
star -cz . > archive.tar.gz
imprimirá o aviso:
star: 'archive.tar.gz' is the archive. Not dumped.