SSH: copiare file; copertina

scp permette di postare file come se operassimo con un pendrive.

Facciamo un po' di chiarezza.
scp è un comando del pacchetto ssh dedicato a copiare file e directory verso (o da) server e computer remoti.
Per chi usa le shell in ambienti *NIX è l'equivalente del comando cp.
Esistono utility grafiche che rendono più facile l'uso soprattutto nel mondo Windows dove non troviamo nativamente il pacchetto SSH.
Questo comando offre tutti i vantaggi di SSH:

  • connessione criptata;
  • autenticazione con account e\o con chiavi digitali;
  • è piuttosto veloce.

Prima di passare al pratico vediamo lo scenario in cui operiamo.
Nella conclusione alcune considerazioni

Scenario

Pensiamo alla seguente situazione:

  • abbiamo un computer, accessibile via internet, a Milano equipaggiato con Linux Mint (hostname: milano.example.com );
  • siamo a Roma e abbiamo un computer con Linux Mint (hostname: roma.example.com );
  • abbiamo dei file da copiare da\su Milano.

Uso

Siamo a Roma, sul computer roma.example.com, e dobbiamo copia dei file da\su Milano, sul computer milano.example.com .
Il computer roma.example.com, è equipaggiato con Linux Mint.

1. Copia di un file

Vogliamo copiare il file caso1R.odt, presente in /home/userroma/Documenti, sul computer a Milano nella posizione /home/usermilano/Documenti/DaRoma:

scp -C /home/userroma/Documenti/caso1R.odt Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti/DaRoma/

Viceversa ora vogliamo copiare il file caso1M.odt, presente in /home/usermilano/Documenti a Milano, sul proprio computer nella posizione /home/userroma/Documenti/DaMilano:

scp -C Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti/caso1M.odt /home/userroma/Documenti/DaMilano/

L'opzione -C è opzionale. Istruisce scp a comprimere il traffico. È utile quando trasferiamo quantità rilevanti di dati.

2. Copia di una directory

Vogliamo, ora, fare un'operazione simile alla precedente, ma copiando un'intera cartella, contenuto incluso.
Iniziamo copiando la cartella caso2R, presente in /home/userroma/Documenti/caso2R, sul computer a Milano nella posizione /home/usermilano/Documenti/DaRoma :

scp -rC /home/userroma/Documenti/caso2R Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti/DaRoma/

Viceversa ora copiamo la cartella caso2M, presente in /home/usermilano/Documenti a Milano, sul proprio computer nella posizione /home/userroma/Documenti/DaMilano :

scp -rC Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti/caso2M /home/userroma/Documenti/DaMilano/

3. Copia ricorsiva

Abbiamo già usato sopra l'opzione -r . Essa istruisce scp a copiare in modo ricorsivo. Sopra è stata necessaria per copia tutto il contenuto della cartella. Ora poniamoci l'obbiettivo di vole copiare l'intera cartella Documenti.

Iniziamo copiando la cartella Documenti, presente in /home/userroma, sul computer a Milano nella posizione /home/usermilano/Documenti/DaRoma :

scp -rC /home/userroma/Documenti Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti/DaRoma/

Viceversa ora copiamo la cartella Documenti, presente in /home/usermilano a Milano, sul proprio computer nella posizione /home/userroma/Documenti/DaMilano :

scp -rC Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.:/home/usermilano/Documenti /home/userroma/Documenti/DaMilano/

Conclusione

Le opzioni ed i casi qui presentati sono semplici. scp ha svariate opzioni che ne modificano il comportamento per farlo correttamente dialogare con il destinatario. Possiamo elencare tra gli aspetti di merito e di difficoltà:

  • applicazione e protocollo disponibile per tutti i sistemi operativi. Ciò significa che possiamo tranquillamente copiare tra computer e server completamente differenti;
  • i trasferimenti sono totalmente criptati e le autenticazioni sono tramite chiavi cifrate (usa i meccanismi di ssh);
  • per molti ambienti *NIX è presente di serie;
  • le copie sono veloci perché aggiunge poco overhead. Se aggiungiamo l'opzione -C le performance vengono massimizzate;
  • se abbiamo salvato le chiavi di autenticazione (con ssh-copy-id) il trasferimento è automatico, sicuro e non viene chiesta nessuna password;
  • facilmente integrabile in eventuali script, magari per creare copie automatiche di backup.

Di contro rileviamo:

  • la sintassi non è semplice soprattutto per i principianti;
  • manca un tool grafico nativo, anche se esistono estensioni soprattutto per il mondo Windows;
  • non permette di /vedere dall'altra parte/, ovvero dobbiamo conoscere prima i nomi dei file e i path;
  • in alcuni ambienti, come quelli Windows, non è di serie.