A razão pela qual vários comandos rsync sucessivos são lentos é que o estabelecimento de uma conexão SSH demora um pouco. Você pode resolver esse problema usando um canal SSH estabelecido . Configure o compartilhamento de conexão principal e abra um mestre conexão, use seus comandos rsync inalterados (note que -e ssh
tem sido o padrão desde uma década ou mais) e, finalmente, feche a conexão SSH:
ssh -Nf remote
rsync -avz out/bin/$BINFILES remote:/usr/bin
rsync -avz out/lib/$LIBFILES remote:/usr/lib
rsync -avz out/etc/$ETCFILES remote:/etc
ssh -O exit remote
Se você não pode usar o compartilhamento de conexão SSH (por exemplo, porque um lado está executando o Dropbear ou uma versão muito antiga do OpenSSH), você pode estabelecer um túnel , mas isso é mais complicado.
Alternativamente, com um pouco de trabalho, você pode refatorar seu comando rsync em um, jogando com filtros rsync e links simbólicos. Se você pode mover os diretórios bin
e lib
, é muito fácil:
mkdir out/usr
mv out/bin out/lib out/usr/
rsync -avz \
--include='/bin/***' --include='/lib/***' --include='/etc/***' \
--exclude='*' out/ remote:/
Se você não conseguir movê-los, mas não houver nenhum link simbólico absoluto nas árvores copiadas, use um link simbólico absoluto e diga ao rsync para tratá-lo como um diretório:
ln -s "$PWD" out/usr
rsync -avz --copy-unsafe-links \
--include='/bin/***' --include='/lib/***' --include='/etc/***' \
--exclude='*' out/ remote:/