- accedere al server esterno in ssh
- creare un archivio compattato dei files da trasferire
- disconnettersi dal server
- trasferire l’archivio con scp dal server interno
- ricollegarsi al server per eliminare l’archivio
- disconnettersi nuovamente dal server
- scompattare l’archivio
Mi son chiesto, allora, se fosse possibile agire con un metodo più snello ed elegante, utilizzando ssh, netcat e tar. Rovistando tra le pagine di manuale di ssh ho trovato l’opzione -R che è praticamente inversa a -L (per chi non la conoscesse può leggere qualcosa a riguardo in “Piccoli trucchi con SSH”). Con l'utilizzo di questa opzione di ssh i passi da compiere sono i seguenti:
- collegarsi dal server interno con ssh e l’opzione -R al server esterno.
questo ci permette di aprire una porta sul server remoto che viene inoltrata sul nostro server interno attraverso il collegamento ssh. - aprire un altro terminale sul server interno e posizionarsi nella cartella dove dovranno essere copiati i file del server remoto
- mettere in ascolto netcat su una porta e reindirizzare l’output al comando tar che si occuperà di dearchiviare il flusso di dati che riceverà in input
- tornare nel terminale con il collegamento ssh al server remoto e posizionarsi nella cartella dove ci sono i file da copiare
- fare un archivio tar sullo standard output da reindirizzare sulla porta aperta con l’opzione -R di ssh tramite netcat
- disconnettersi dal server remoto
Problema:
copiare la cartella
/var/www
di mioserver.com nella cartella backup_server nella mia home directory miodesktop.lan in ufficio.Soluzione:
- aprire una finestra di terminale
- digitare il comando ssh per aprire una porta sul server
ssh -R 5555:miodesktop.lan:9999 root@mioserver.com
questo apre la porta 127.0.0.1:5555 su mioserver.com e inoltra tutto il traffico indirizzato a questa porta sulla porta 9999 di miodesktop.lan - posizionarsi nella directory
/var/www
di mioserver.com - aprire un altro terminale e posizionarsi nella cartella backup_server nella home
- mettere in ascolto netcat sulla porta 9999 e inoltrare il traffico al comando tar
nc -l 9999 | tar zxvf -
in questo modo netcat sarà in ascolto sulla porta 9999 e il suo output verrà preso in input dal comando tar che provvederà a decomprimere il flusso di dati dell’archivio - tornare nel terminale con il collegamento al server e fare l’archivio dei file da copiare inoltrando l’output su netcat collegato alla porta 127.0.0.1:5555
tar zcvf - * | nc 127.0.0.1 5555
in questo modo l’archivio diventerà un flusso dati che verrà inoltrato alla porta 5555 da netcat. Questa porta è automaticamente inoltrata alla porta 9999 del desktop tramite l’opzione -R di ssh. Sulla porta 9999 del desktop c’è in ascolto netcat che prende il flusso dei dati e lo “porge” al comando tar che lo elabora.
Articoli correlati
Nessun commento:
Posta un commento