Normalmente posso copiar arquivos com segurança de uma máquina para outra usando
> scp [email protected] ssh [email protected]:/home/user/my_files/* .
o que é muito lento para grandes conjuntos de dados.
Disseram-me que as máquinas que estou usando possuem um link muito rápido que pode ser acessado com o wget. Como executo a mesma transferência de arquivos usando o wget?
Responder1
Se você tiver um link de rede rápido, seguro e estável entre essas duas máquinas, poderá usar uma combinação de netcat
e tar
, como esta.
Na máquina de destino, execute:
nc -l 10000 | tar -C /destination/directory -xzf -
Na máquina de origem, execute:
tar -cz /source/directory | nc dst-machine-ip-address 10000
Esteja ciente de que nenhuma criptografia será usada, então o tráfego pode ser detectado e, se por algum motivo a conexão cair, você terá que reiniciá-la.
Pessoalmente, eu acompanharia rsync
.
Responder2
O desempenho descppode ser causada por dois fatores:
- O custo da criptografia, que pode ser muito alto para processadores lentos,
- O número de viagens de ida e volta necessárias para solicitar um único arquivo.
Para um grande número de arquivos pequenos, é o segundo. Minha primeira ideia foi aconselhar o usosftp, pois usa um programa diferente no host remoto. Mas depois de um teste, isso proporciona um desempenho semelhante.
A solução que funciona é usar um programa instalado no cliente e no servidor e que envia apenas um fluxo de dados de volta (em vez de milhares desshcanais):
Se você temsincronizar novamenteno servidor remoto (e você instala no cliente) use:
rsync -av -e "ssh [email protected]" [email protected]:/home/user/my_files .
Caso contrário, você pode usaralcatrão:
ssh -o [email protected] -e none [email protected] \ tar -c /home/user/my_files | tar -x