Se você gosta de tar
, exceto o arquivo temporário, isso é fácil: não use um arquivo temporário. Use um cano.
cd /home ; tar cf - user | gzip | ssh archivehost -l archiveuser 'cat > user.archived.tar.gz'
Substitua xz
ou o que você preferir por gzip
. Ou mova-o para o outro lado da conexão, se salvar os ciclos da CPU no servidor principal é mais importante do que salvar a largura de banda da rede (e a CPU no servidor de arquivamento)
cd /home ; tar cf - user | ssh archivehost -l archiveuser 'gzip > user.archived.tar.gz'
Você também pode colocar um gpg
nele. Tenha um par de chaves que seja apenas para esses arquivos, criptografe com a chave pública ao armazenar, use a chave privada quando precisar recuperar algo.
Mais detalhes, conforme solicitado:
Pretendo que user
seja o usuário cujo diretório pessoal /home/user
você está arquivando. archivehost
é o servidor no qual você armazenará os arquivos e archiveuser
é uma conta no servidor de arquivamento que possuirá os arquivos.
tar cf - user
significa "criar um arquivo tar de user
e gravá-lo no stdout". O -c
é "criar" e -f -
é "use stdin / stdout como o arquivo". Ele provavelmente funcionará com apenas tar c user
, já que -f -
provavelmente será o padrão, mas originalmente a ação padrão de tar
era ler ou gravar um dispositivo de fita. Usar um -f -
explícito pode ser apenas um sinal de que sou velho.
O sinalizador tar z
ficaria bom, exceto que não consegui mostrar como movê-lo para o outro lado do ssh
. (Além disso, conectando gzip
e tar
com um tubo explícita é uma daquelas "pessoas velhas" coisas - tar
nem sempre tem essa opção.) Além disso, eu pode substituir bzip2
, lzop
, xz -3v
ou qualquer outro programa de compactação sem precisar lembrar as opções tar
correspondentes.
Eu nunca ouvi falar de --checkpoint
antes, então você só precisará confiar em seus próprios testes para esse.