Vorrei trasferire file tra due host remoti utilizzando la shell locale, ma sembra che rsync non supporti la sincronizzazione se due remoti sono specificati come segue:
$ rsync -vuar host1:/var/www host2:/var/www
The source and destination cannot both be remote.
Quali altre soluzioni alternative/comandi potrei utilizzare per ottenere risultati simili?
Risposta accettata:
Come hai scoperto, non puoi usare rsync con una sorgente remota e una destinazione remota. Supponendo che i due server non possano parlare direttamente tra loro, è possibile utilizzare ssh per eseguire il tunneling tramite il computer locale.
Invece di
rsync -vuar host1:/var/www host2:/var/www
puoi usare questo
ssh -R localhost:50000:host2:22 host1 'rsync -e "ssh -p 50000" -vuar /var/www localhost:/var/www'
Nel caso ve lo stiate chiedendo, il -R
l'opzione imposta un canale inverso dalla porta 50000 su host1 che mappa (tramite la tua macchina locale) alla porta 22 su host2. Non esiste una connessione diretta da host1 a host2.