Com base na sua sugestão em um comentário (que deve estar na sua pergunta), isso parece ser o que você quer
cd /path/to/directory
tar cf /var/tmp/directory.tar .
rsync -azv /var/tmp/directory.tar remote:/var/tmp/directory.tar
ssh remote 'cd /path/to/destination && tar xf /var/tmp/directory.tar'
Você precisa de espaço suficiente para armazenar directory.tar
em ambos os lados.
Já me perguntaram se essa solução aparentemente trivial pode funcionar na situação em que uma pequena quantidade, como um único byte, é adicionada (ou removida) do início do arquivo tar.
Espero que esta amostra mostre como rsync
é bom em lidar com tais situações. Ele funciona melhor se você tiver um login de equivalência (chave de certificado) para o servidor remoto, de modo que nenhum tempo seja gasto inserindo uma senha.
# Generate some data
dd iflag=fullblock bs=1M count=200 </dev/urandom >200M.dat
# See how long it takes to transfer
time rsync -av 200M.dat remote:
# See how long it takes to transfer "nothing"
time rsync -av 200M.dat remote:
# Generate one byte of data and prepend it to another data file
dd bs=1 count=1 </dev/urandom >1b.dat
cat 1b.dat 200M.dat >200M1b.dat
# Copy the new file across to the original target
time rsync -av 200M1b.dat remote:200M.dat
# Clean up
rm 1b.dat 200M.dat 200M1b.dat
ssh remote rm 200M.dat
Se o algoritmo puder manipular o byte único inserido no início do fluxo de dados, a transferência deverá demorar alguns instantes. Se não puder, você esperaria que o tempo de transferência fosse amplamente semelhante ao primeiro.