Come usare il comando SCP in Linux

Un semplice tutorial per aiutarti a trasferire file su un sistema remoto dal tuo sistema Linux usando il comando scp.

SCP sta per 'Secure Copy'. scpè un'utilità della riga di comando offerta da Linux che consente il trasferimento di file e directory da una macchina a un'altra su una rete non sicura.

Se desideri copiare file da un sistema a un altro, scppuò essere un'ottima opzione per effettuare un trasferimento sicuro di file e directory. Quando le due macchine comunicanti sono collegate sulla stessa rete, l'utilizzo scpdiventa possibile.

Puoi fare molto affidamento sul scpcomando per la riservatezza e l'integrità poiché il file che viene trasferito e la password utilizzata per il trasferimento sono entrambi crittografati. Nessuna informazione sensibile verrà rivelata anche se qualcuno cerca di curiosare nel traffico mentre questo trasferimento è in corso.

In questo tutorial, vedremo diversi esempi del scpcomando. Vedremo anche alcune delle opzioni usate di frequente con il scpcomando.

Iniziare con il comando scp

Usando il scpcomando puoi trasferire file/directory:

  • Dalla tua macchina locale a una macchina remota.
  • Tra due macchine remote.
  • Da una macchina remota alla tua macchina locale.

Sintassi generale:

scp [Option] [source_file_name] [[email protected]_Host]:destination_folder

Cerchiamo di capire gli attributi di base di questo comando uno per uno.

  • [source_file_name] Questo è il file sorgente che vuoi copiare.
  • [ [email protected] _Host] Questo è il nome utente del sistema remoto in cui si desidera copiare il file. L'indirizzo IP della macchina remota viene utilizzato anche in questo attributo dopo il @simbolo ' '.
  • [ cartella_destinazione ] Questa è la directory in cui si desidera salvare il file copiato.

Nota: il :simbolo dei due punti ( ) viene utilizzato nella sintassi in quanto distingue tra le posizioni locali e remote. Usiamo i due punti ( :) con il sistema remoto per specificare la directory in cui devono essere copiati i file. Nel caso in cui non specifichiamo la directory di destinazione, i file verranno copiati nella directory home dell'utente del sistema remoto.

Opzioni utilizzate con scp

Alcune delle opzioni più popolari utilizzate con il scpcomando sono elencate di seguito.

Opzione Descrizione
-C consentire la compressione del file da trasferire
-v dai l'output dettagliato
-r copiare file e directory in modo ricorsivo
-p preservare permessi, modalità e tempi di accesso dei file
-P cambia la porta predefinita usata dal scpcomando

Opzioni usate di frequente con il comando scp

Vedremo gli esempi di queste opzioni, più avanti nel tutorial.

Copia di file da locale a un sistema remoto

scpconsente di trasferire file dal sistema locale a un sistema remoto utilizzando la seguente sintassi. Ciò ti consente di trasferire o caricare i tuoi file su un server remoto.

Sintassi generale:

scp [file_name] [email protected]:[destination_folder]

Esempio:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

In questo esempio, stiamo copiando un file "apache-tomcat-9.0.8.tar.gz" dal sistema locale al sistema remoto il cui indirizzo IP è "143.110.178.221".

Sul sistema remoto, il file verrà ora copiato nella directory denominata 'gaurav'.

Produzione:

[email protected]:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
[email protected]'s password: 
apache-tomcat-9.0.8.tar.gz                           100% 9589KB  79.8KB/s   02:00    
[email protected]:~$ 

Controlliamo l'output sul sistema remoto per il file.

[email protected]:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
[email protected]:~/gaurav#

Pertanto, il file viene copiato correttamente nel sistema remoto utilizzando il scpcomando.

Copia di più file su un sistema remoto

Nell'esempio precedente, abbiamo imparato a trasferire un file al sistema remoto utilizzando il scpcomando. Vedremo ora il metodo per trasferire più file dal tuo sistema locale a un sistema remoto usando questo comando.

Sintassi generale:

scp [file 1] [file 2] [file n] [email protected]_host:[specific directory]

Cerchiamo di capire questo semplice processo con un esempio.

Esempio:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Qui, più file sono menzionati nel comando da copiare sul sistema remoto.

Produzione:

[email protected]:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav 
[email protected]'s password: 
ath.html                                      100%  199KB  94.7KB/s   00:02    
abc.txt                                       100%    0     0.0KB/s   00:00    
ppa-purge_0.2.8+bzr56_all.deb                 100% 4360    42.2KB/s   00:00    
[email protected]:~$

Sul sistema remoto:

[email protected]:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root       0 Oct  5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 08:58 ppa-purge_0.2.8+bzr56_all.deb
[email protected]:~/gaurav#

Tutti e tre i file vengono ora copiati sul sistema remoto.

Copiare una directory nel sistema remoto

Puoi usare il scpcomando per copiare una directory dal tuo sistema locale al sistema remoto. Il processo è simile a quello della copia di un file. Per copiare anche il contenuto della directory, puoi utilizzare l' -ropzione con il scpcomando.

L' -ropzione viene utilizzata per copiare una directory in modo ricorsivo. Ciò significa che verranno copiati anche tutte le sottocartelle e i file all'interno della directory.

Sintassi generale:

scp -r [directory path] [email protected]_host:[target_directory]

Esempio:

scp -r PycharmProjects [email protected]:gaurav

Produzione:

[email protected]:~$ scp -r PycharmProjects [email protected]:gaurav
[email protected]'s password: 
__main__.py                                   100%  623     7.8KB/s   00:00    
__init__.py                                   100%   23     0.4KB/s   00:00    
completion.py                                 100% 2929    28.1KB/s   00:00    
search.py                                     100% 4728    38.7KB/s   00:00    
uninstall.py                                  100% 2963    32.5KB/s   00:00    
hash.py                                       100% 1681    21.3KB/s   00:00    
check.py                                      100% 1430    16.8KB/s   00:00    
configuration.py                              100% 7125    50.4KB/s   00:00    
show.py                                       100% 6289    49.8KB/s   00:00    
download.py                                   100% 6623    48.2KB/s   00:00  
[email protected]:~$  

L'utilizzo -rdell'opzione con il scpcomando copia tutte le sottocartelle ei file all'interno della directory dalla macchina locale al sistema remoto.

Visualizzazione di informazioni dettagliate sul processo scp

È possibile utilizzare l' opzione -v(minuscolo v) per visualizzare le informazioni sui file che vengono copiati su un sistema remoto o locale. Questo tipo di output è anche chiamato output dettagliato.

Quando si utilizza questa opzione, sullo schermo vengono visualizzate le informazioni di debug complete sul file.

Sintassi generale:

scp -v [file_name] [email protected]_host:

Esempio:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

Produzione:

[email protected]:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/gaurav/.ssh/id_rsa type -1
apache-tomcat-9.0.8.tar.gz                                                                                          100% 9589KB  99.8KB/s   01:36    
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 0
[email protected]:~$

Qui, nell'output, puoi vedere che le informazioni di debug del file vengono visualizzate sul tuo terminale quando il scpcomando viene utilizzato con l' -vopzione.

Trasferimento di file tra due host remoti

Linux ti consente di connetterti a più host remoti. È possibile trasferire file e directory tra due host remoti utilizzando il scpcomando.

Sintassi generale:

scp [email protected]_1:/[file_name] [email protected]_2:[folder_to_save]

La sintassi può sembrare un po' più ampia ma è piuttosto semplice. Qui, la prima parte del comando fornisce l'input sull'utente remoto da cui deve essere copiato il file. due punti (:) e /viene utilizzato per specificare il nome del file o il nome della directory che deve essere trasferito tra le due macchine remote.

La seconda parte fornisce informazioni sul sistema remoto di destinazione in cui deve essere copiato il file.

Esempio:

scp -r [email protected]:gaurav [email protected]:/team

Qui, copieremo una directory chiamata 'gaurav' in modo ricorsivo dal sistema locale a un sistema remoto. Il file verrà copiato in una cartella 'team' sul sistema remoto.

Produzione:

[email protected]:~$ scp -r [email protected]:/gaurav [email protected]:/team 
[email protected]'s password: 
1.py                                          100%  134   261.3KB/s   00:00    
variables.py                                  100%  377   949.2KB/s   00:00    
abc.txt                                       100%    0     0.0KB/s   00:00    
ath.html                                      100%  199KB  41.8MB/s   00:00    
[email protected]:~$

Qui, abbiamo usato il scpcomando sul sistema locale per trasferire una directory chiamata 'gaurav' da un server remoto a un altro.

Trasferisci file dal sistema remoto al tuo sistema locale

È possibile trasferire facilmente i file o le directory dal sistema remoto al sistema locale utilizzando il scpcomando. In parole più semplici, puoi scaricare più file o directory dal server remoto sul tuo sistema locale usando il scp comando.

Sintassi generale:

scp [email protected]_host:/files/file.txt /[folder_of_local_system]

Produzione:

[email protected]:~$ scp [email protected]:how.txt .
[email protected]'s password: 
how.txt                                                                                                             100%   11     0.1KB/s   00:00    
[email protected]:~$

Qui, ho scaricato (copiato) il file dal server remoto nella mia home directory. Quindi, ho usato il punto ( .) per specificare nel comando di copiare il file nella mia directory home.

Uscita campione:

[email protected]:~$ ls -l how.txt
-rw-r--r-- 1 gaurav gaurav 11 Oct  6 09:49 how.txt
[email protected]:~$ 

Qui, il file è ora copiato nella mia home directory dal server remoto.

Allo stesso modo, puoi scaricare più file o directory dal server remoto utilizzando il scpcomando con le opzioni appropriate.

Comprimere i file per effettuare trasferimenti più veloci

A volte, il trasferimento di file di grandi dimensioni può richiedere molto tempo. Questo problema può essere risolto utilizzando il scpcomando con l' opzione -C(maiuscolo C).

Utilizzando l' -C opzione, comprime i file di dimensioni maggiori che facilita un trasferimento più veloce e quindi fa risparmiare tempo.

Un fatto interessante di questa opzione è che il file viene copiato con la sua dimensione originale sul sistema di destinazione, ma durante il processo di trasferimento, la dimensione viene compressa per consentire un trasferimento più veloce. Pertanto, la compressione viene eseguita solo sulla rete.

Sintassi generale:

scp -C [file_name] [email protected]_host:[target_folder]

Vediamo un esempio comparativo per capire la differenza.

Trasferimento senza opzione -C:

[email protected]:~$ scp -rv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
[email protected]:~$ 

Da quanto sopra, dall'output possiamo vedere che il tempo necessario per il trasferimento è di 74,6 secondi. Cercheremo di trasferire lo stesso file usando l'opzione -C e osserveremo la differenza.

Trasferimento con opzione -C:

[email protected]:~$ scp -Crv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img                                                                                                       100% 1834KB  98.7KB/s   00:18    
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img                                                                                                          100% 1834KB 100.3KB/s   00:18    
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
DSL-2750U-Release-IN-T-01.00.07.zip                                                                                 100% 3666KB 218.5KB/s   00:16    
Sink: E
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
[email protected]:~$

Qui possiamo facilmente osservare che l'utilizzo -Cdell'opzione con il scpcomando ci ha permesso di comprimere il file in rete rivelandosi così un'opzione per risparmiare tempo.

Utilizzo di una porta ssh diversa per il trasferimento di file

Durante l'utilizzo del scpcomando, la porta predefinita distribuita è port 22. L'utente ha la libertà di personalizzare questa scelta di porta. Puoi usare l' -Popzione (opzione P maiuscola) con il scpcomando per usare la porta che preferisci.

Sintassi generale:

cp -P [new_port_number] [file_name/directory_name] [email protected]:[destination_folder]

Esempio:

scp -P 4248 dlink [email protected]:team

Utilizzando il comando precedente, il file verrà trasferito al server remoto. Ma questa volta, la porta utilizzata sarà port 4248invece di quella predefinita port 22.

Conclusione

Dopo aver seguito questo tutorial, abbiamo appreso la natura dinamica del scpcomando utilizzato per trasferire o copiare file da un sistema a un altro. Questa opzione può essere utilizzata anche per scaricare file o directory dal server remoto. Pertanto, possiamo concludere che il scpcomando si rivela molto utile per i trasferimenti di file quando devi gestire più di un sistema e server remoti contemporaneamente.


Come copiare e incollare su Chromebook

Come copiare e incollare su Chromebook

La prima cosa che potresti chiederti mentre passi a un Chromebook è come fare le cose di base, il tipo di cose che avevi sul palmo della tua mano nel tuo sistema operativo precedente. Copiare e incollare è una di queste funzioni fondamentali che devi usare prima o poi.

Come fare un test di digitazione su Linux con tt

Come fare un test di digitazione su Linux con tt

Nell'era moderna della tecnologia, la dattilografia è diventata una delle attività più comuni per molte professioni. Imparare a digitare più velocemente con precisione può aiutarti a fare più cose nello stesso lasso di tempo.

Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Ubuntu è famoso per la sua robustezza e relativamente meno errori. Ma non è senza problemi, di sicuro. Uno di questi problemi è con il suo driver Wi-Fi. Potresti accendere il tuo sistema solo per scoprire che il tuo Wi-Fi non funziona.

Come creare e scansionare codici QR su Chromebook

Come creare e scansionare codici QR su Chromebook

I codici di risposta rapida, o codici QR in breve, sono codici a barre avanzati che contengono più informazioni rispetto a un codice a barre tradizionale. Questi codici sono bidimensionali, consentendoti di scansionarli verticalmente o orizzontalmente.

Come installare e rimuovere i pacchetti in Arch Linux

Come installare e rimuovere i pacchetti in Arch Linux

Vuoi installare pacchetti su Arch Linux ma non sai come fare? Molte persone affrontano questo problema quando migrano per la prima volta dalle distribuzioni basate su Debian ad Arch. Tuttavia, puoi facilmente gestire i pacchetti sul tuo sistema basato su Arch utilizzando i gestori di pacchetti.

10+ migliori estensioni GNOME per Ubuntu 20.04

10+ migliori estensioni GNOME per Ubuntu 20.04

Molte delle estensioni popolari come Gno-Menu, Extended Gestures non funzionano con Ubuntu 20.04. Quindi, ecco un elenco delle migliori estensioni GNOME funzionanti

Come installare Spotify su Linux

Come installare Spotify su Linux

Spotify è uno dei più grandi servizi di streaming musicale in circolazione. Ha client nativi sia per dispositivi mobili (Android e iOS) che desktop (Mac e Windows).

9 comandi di base per iniziare con Linux

9 comandi di base per iniziare con Linux

Le guide pratiche di Linux spesso si aspettano che tu esegua determinate operazioni nel terminale, il che all'inizio può sembrare intimidatorio. Ma non preoccuparti; questo cheat sheet del comando Linux coprirà il processo di apertura di un terminale e l'emissione di alcuni comandi utili.

5 migliori app di trasferimento file Wi-Fi da Ubuntu ad Android

5 migliori app di trasferimento file Wi-Fi da Ubuntu ad Android

Un meccanismo come FTP, trasferimento file peer-to-peer, trasferimento Wi-Fi ti farà risparmiare tempo se condividi spesso file tra il tuo Android e Ubuntu.

Come spostare file Linux con il comando Mv

Come spostare file Linux con il comando Mv

Anche se probabilmente sai già come spostare un file in Linux utilizzando il browser di file della GUI, potresti chiederti se c'è un comando di spostamento nel terminale che ti consente di spostare rapidamente i file in directory diverse. Il comando mv è quello che desideri ed è facile da usare con la sua sintassi semplice e alcuni flag di sicurezza opzionali.