Compactando diretórios e transferindo via pipe por SSH
Dica publicada em Shell Script / Miscelânea
Compactando diretórios e transferindo via pipe por SSH
Essa dica é para quem possui pouco espaço livre e precisa copiar muitos arquivos (backup) por SSH.
O comum é usarmos o scp, porém, se não temos espaço para gerar um tar ou mesmo um tar.bz2 dos arquivos localmente e adicionando-se ao fato do scp não suportar pipe, as coisas ficam complicadas, pois seria necessário copiar um a um os arquivos.
Dentre todas as possibilidades, há dois modos básicos de se fazer isso:
1. Usando processamento da máquina local para gerar o bzip2:
# tar -cf - /home/diretório_de_backup | bzip2 -9vv | ssh root@192.168.0.1 "cat > /backup_diretorio.tar.bz2"
2. Usando processamento da máquina remota para gerar o bzip2:
# tar -cf - /home/diretório_de_backup | ssh root@192.168.0.1 "cat | bzip2 -9vv > /backup_diretorio.tar.bz2"
O comum é usarmos o scp, porém, se não temos espaço para gerar um tar ou mesmo um tar.bz2 dos arquivos localmente e adicionando-se ao fato do scp não suportar pipe, as coisas ficam complicadas, pois seria necessário copiar um a um os arquivos.
Dentre todas as possibilidades, há dois modos básicos de se fazer isso:
1. Usando processamento da máquina local para gerar o bzip2:
# tar -cf - /home/diretório_de_backup | bzip2 -9vv | ssh root@192.168.0.1 "cat > /backup_diretorio.tar.bz2"
2. Usando processamento da máquina remota para gerar o bzip2:
# tar -cf - /home/diretório_de_backup | ssh root@192.168.0.1 "cat | bzip2 -9vv > /backup_diretorio.tar.bz2"
Máquina que recebe (abre a conexão na porta 1234):
nc -l 1234 | bzip2 -9vv > /backup_diretorio.tar.bz2
Máquina que envia:
tar -cf - "./Minhas músicas"/ | nc 192.168.0.1 1234