Com utilitzar l'ordre SCP a Linux

Un tutorial senzill per ajudar-vos a transferir fitxers a un sistema remot des del vostre sistema Linux mitjançant l'ordre scp.

SCP significa "Còpia segura". scp és una utilitat de línia d'ordres que ofereix Linux que permet transferir fitxers i directoris d'una màquina a una altra a través d'una xarxa insegura.

Si voleu copiar fitxers d'un sistema a un altre, aleshores scp pot ser una molt bona opció per fer una transferència segura dels fitxers i directoris. Quan les dues màquines que es comuniquen estan connectades a la mateixa xarxa, s'utilitza scp es fa possible.

Podeu confiar molt en el scp comanda per a la confidencialitat i la integritat, ja que el fitxer que s'està transferint i la contrasenya utilitzada per a la transferència estan xifrats. No es revelarà cap informació confidencial encara que algú intenti esquirir el trànsit mentre aquesta transferència està en curs.

En aquest tutorial, veurem diferents exemples de scp comandament. També veurem algunes de les opcions que s'utilitzen amb freqüència amb el scp comandament.

Com començar amb l'ordre scp

Utilitzant el scp comanda podeu transferir fitxers/directoris:

  • De la vostra màquina local a una màquina remota.
  • Entre dues màquines remotes.
  • Des d'una màquina remota a la vostra màquina local.

Sintaxi general:

scp [Opció] [nom_fitxer_origen] [usuari@amfitrió_destinació]:carpeta_destinació

Entenem un per un els atributs bàsics d'aquesta comanda.

  • [nom_fitxer_font] Aquest és el fitxer font que voleu copiar.
  • [usuari@amfitrió_destinació] Aquest és el nom d'usuari del sistema remot on voleu copiar el fitxer. L'adreça IP de la màquina remota també s'utilitza en aquest atribut després del "@'símbol.
  • [carpeta de destinació] Aquest és el directori on voleu desar el fitxer copiat.

Nota: El còlon (:) s'utilitza a la sintaxi ja que diferencia entre les ubicacions locals i remotes. Utilitzem els dos punts (:) amb el sistema remot per especificar el directori al qual s'han de copiar els fitxers. En cas que no especifiquem el directori de destinació, els fitxers es copiaran al directori inicial de l'usuari del sistema remot.

Opcions utilitzades amb scp

Algunes de les opcions més populars utilitzades amb el scp comanda es mostren a continuació.

OpcióDescripció
-Cpermeten transferir la compressió del fitxer
-vdonar la sortida detallada
-rcopieu fitxers i directoris de manera recursiva
-ppreservar els permisos, els modes i els temps d'accés dels fitxers
-Pcanviar el port predeterminat utilitzat per scp comandament

Veurem els exemples d'aquestes opcions, més endavant al tutorial.

S'està copiant el fitxer del sistema local a un sistema remot

scp us permet transferir fitxers del vostre sistema local a un sistema remot mitjançant la sintaxi següent. Això us permet transferir o carregar els vostres fitxers a un servidor remot.

Sintaxi general:

scp [nom_fitxer] usuari_remot@amfitrió:[carpeta_destinació]

Exemple:

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

En aquest exemple, estem copiant un fitxer "apache-tomcat-9.0.8.tar.gz" del sistema local al sistema remot l'adreça IP del qual és "143.110.178.221".

Al sistema remot, ara el fitxer es copiarà al directori anomenat "gaurav".

Sortida:

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

Comprovem la sortida al sistema remot del fitxer.

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Per tant, el fitxer es copia correctament al sistema remot mitjançant l' scp comandament.

Còpia de diversos fitxers a un sistema remot

A l'exemple anterior, vam aprendre a transferir un fitxer al sistema remot mitjançant el scp comandament. Ara veurem el mètode per transferir diversos fitxers del vostre sistema local a un sistema remot mitjançant aquesta ordre.

Sintaxi general:

scp [fitxer 1] [fitxer 2] [fitxer n] nom_usuari_remot@amfitrió_remot:[directori específic]

Entenem aquest senzill procés amb un exemple.

Exemple:

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

Aquí, s'esmenten diversos fitxers a l'ordre per copiar al sistema remot.

Sortida:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] contrasenya de: ath.html 100KB/s% 194.078.221 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 gaurav@ubuntu:~$

Al sistema remot:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 root root 0 Oct 5 08:58 abc.txt -rw-r-- r-- 1 arrel arrel 9818695 5 d'octubre 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 arrel arrel 204057 5 d'octubre 08:58 ath.html -rw-r-- r-- 1 arrel arrel 4360 5 d'octubre 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Ara els tres fitxers es copien al sistema remot.

Còpia d'un directori al sistema remot

Pots fer servir scp comanda per copiar un directori del vostre sistema local al sistema remot. El procés és similar al de copiar un fitxer. Per copiar el contingut del directori també, podeu utilitzar el -r opció amb el scp comandament.

El -r s'utilitza per copiar un directori de forma recursiva. Això vol dir que també es copiaran totes les subcarpetes i fitxers dins del directori.

Sintaxi general:

scp -r [camí del directori] nom_usuari_remot@amfitrió_remot:[directori_destinació]

Exemple:

scp -r PycharmProjects [email protected]:gaurav

Sortida:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] contrasenya: __main__.py 100% 623 7.8KB/s 00:00 __20.00 KB/s __20_% :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%/21168.py 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% 100% 6289 49,8KB/s KB/s 00:00 gaurav@ubuntu:~$ 

Utilitzant el -r opció amb el scp L'ordre copia totes les subcarpetes i fitxers del directori des de la màquina local al sistema remot.

Mostra informació detallada sobre el procés scp

Podeu utilitzar el -v (en minúscula v) per mostrar la informació sobre els fitxers que s'estan copiant en un sistema remot o local. Aquest tipus de sortida també s'anomena sortida detallada.

Quan s'utilitza aquesta opció, es mostra a la pantalla la informació completa de depuració del fitxer.

Sintaxi general:

scp -v [nom_fitxer] nom_usuari@amfitrió_usuari:

Exemple:

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

Sortida:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Executant: programa /usr/bin/ssh host 159.89.170.11, root d'usuari, comanda scp -v -t equip OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 de desembre de 2017 debug1: lectura de dades de configuració /home/gaurav/.ssh/config debug1: lectura de dades de configuració /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config línia 19: Aplicació d'opcions per a * debug1: Connexió a 159.89.170.11 [159.89.170.11] port 22. debug1: Connexió establerta. debug1: key_load_public: no hi ha cap fitxer o directori debug1: fitxer d'identitat /home/gaurav/.ssh/id_rsa tipus -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input:_channel_re canal 0 rtype exit-status resposta 0 debug1: canal 0: lliure: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferit: enviat 9826736, rebut 4016 bytes per segon, 2 segons enviats per 97 segons. 101133.9, s'ha rebut 41.3 depuració1: estat de sortida 0 gaurav@ubuntu:~$ 

Aquí, a la sortida, podeu veure que la informació de depuració del fitxer es mostra al vostre terminal quan scp l'ordre s'utilitza amb el -v opció.

Transferència de fitxers entre dos hosts remots

Linux us permet connectar-vos a diversos hosts remots. Podeu transferir fitxers i directoris entre dos amfitrions remots mitjançant el scp comandament.

Sintaxi general:

scp usuari_remot_1@amfitrió_1:/[nom_fitxer] usuari_remot_2@amfitrió_2:[carpeta_a_desar]

La sintaxi pot semblar una mica més àmplia, però és bastant senzilla. Aquí, la primera part de l'ordre proporciona l'entrada sobre l'usuari remot des d'on s'ha de copiar el fitxer. dos punts (:) i / s'utilitza per especificar el nom del fitxer o el nom del directori que s'ha de transferir entre les dues màquines remotes.

La segona part proporciona informació sobre el sistema remot de destinació on s'ha de copiar el fitxer.

Exemple:

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

Aquí, copiarem un directori anomenat 'gaurav' de manera recursiva des del sistema local a un sistema remot. El fitxer es copiarà a una carpeta "equip" del sistema remot.

Sortida:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] contrasenya: 1.py 100% 134 261.3KB/s variables 00:00 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 gaurav@ubuntu:~$

Aquí, hem utilitzat el scp comanda al sistema local per transferir un directori anomenat "gaurav" d'un servidor remot a un altre.

Transferiu fitxers del sistema remot al vostre sistema local

Podeu transferir fàcilment els fitxers o directoris del sistema remot al vostre sistema local mitjançant el scp comandament. En paraules més senzilles, podeu descarregar diversos fitxers o directoris des del servidor remot al vostre sistema local mitjançant el scp comandament.

Sintaxi general:

scp nom_usuari_remot@amfitrió_usuari:/fitxers/fitxer.txt /[carpeta_del_sistema_local]

Sortida:

gaurav@ubuntu:~$ scp [email protected]:how.txt . Contrasenya de [email protected]: how.txt 100% 11 0,1KB/s 00:00 gaurav@ubuntu:~$

Aquí, he baixat (copiat) el fitxer del servidor remot al meu directori d'inici. Per tant, he utilitzat el punt (.) per especificar a l'ordre per copiar el fitxer al meu directori d'inici.

Sortida de mostra:

gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 oct 6 09:49 how.txt gaurav@ubuntu:~$ 

Aquí, el fitxer ara es copia al meu directori d'inici des del servidor remot.

De la mateixa manera, podeu descarregar diversos fitxers o directoris des del servidor remot mitjançant el scp comanda amb les opcions adequades.

Comprimir fitxers per fer transferències més ràpides

De vegades, la transferència de fitxers grans pot consumir molt de temps. Aquest problema es pot solucionar mentre s'utilitza scp comanda amb el -C (majúscula C) opció.

Utilitzant el -C opció, comprimeix els fitxers de mida més gran que facilita una transferència més ràpida i, per tant, estalvia temps.

Un fet interessant sobre aquesta opció és que el fitxer es copia amb la seva mida original al sistema de destinació, però durant el procés de transferència, la mida es comprimeix per permetre una transferència més ràpida. Així, la compressió només es fa a la xarxa.

Sintaxi general:

scp -C [nom_fitxer] nom_usuari@amfitrió_usuari:[carpeta_destinació]

Vegem un exemple comparatiu per entendre la diferència.

Transferència sense opció -C:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Executant: programa /usr/bin/ssh host 68.183.82.183, root d'usuari, comanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 de desembre de 2017 debug1: lectura de dades de configuració /home/trinity/.ssh/config debug1: lectura de dades de configuració /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config línia 19: aplicació d'opcions per a *debug1 : En connexió al port 22 68.183.82.183 [68.183.82.183]. debug1: Connexió establerta. debug1: client_input_channel_req: canal 0 rtype exit-status resposta 0 debug1: canal 0: gratuït: client-session, nchannels 1 debug1: fd 0 esborrant O_NONBLOCK debug1: fd 1 esborrant O_NONBLOCK Transferit: enviat 7516 4047 segons en 45047 segons. per segon: enviat 100693.7, rebut 53.7 debug1: Estat de sortida 0 gaurav@ubuntu:~$ 

A partir de l'anterior, la sortida podem veure que el temps necessari per a la transferència és de 74,6 segons. Intentarem transferir el mateix fitxer amb l'opció -C i observarem la diferència.

Transferència amb l'opció -C:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Executant: programa /usr/bin/ssh host 68.183.82.183, root d'usuari, comanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 de desembre de 2017 debug1: lectura de dades de configuració /home/trinity/.ssh/config debug1: lectura de dades de configuració /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config línia 19: aplicació d'opcions per a *debug1 : En connexió al port 22 68.183.82.183 [68.183.82.183]. debug1: Connexió establerta. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Modes d'enviament de fitxers: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 1834KB 1003KB/s Modes d'enviament de fitxers: E: 1006 Sink: E 6003: 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Aigüera: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-0-071.zip 100% 3666KB 218,5KB/s 00:16 Sink: E debug1: client_input_channel_req: canal 0 rtype exit-status resposta 0 debug1: canal 0: lliure: client-session, nchannels 1 debug1: fd 0 rtype exit-status respost 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 fd 0 clearing debug O_NONB_ Transferit: enviat 7518864, rebut 3828 bytes, en 51,0 segons Bytes per segon: enviat 100245.4, rebut 51.0 debug1: Estat de sortida 0 debug1: comprimir sortint: dades en brut 7511925, comprimit 75131925, comprimit 75131925, comprimit 75131925, comprimit 7513136, factor 1:1. 999, factor 0,68 gaurav@ubuntu:~$

Aquí, podem observar fàcilment que utilitzant el -C opció amb el scp L'ordre ens ha permès comprimir el fitxer a la xarxa, demostrant així una opció per estalviar temps.

S'utilitza un port ssh diferent per a la transferència de fitxers

Mentre s'utilitza el scp comanda el port predeterminat que es desplega és el port 22. L'usuari té la llibertat de personalitzar aquesta elecció de port. Podeu utilitzar el -P (opció P majúscula) amb el scp comanda per utilitzar el port que escolliu.

Sintaxi general:

cp -P [número_port_nou] [nom_fitxer/nom_directori] usuari_remot@amfitrió:[carpeta_destinació]

Exemple:

scp -P 4248 dlink [email protected]:equip

Mitjançant l'ordre anterior, el fitxer es transferirà al servidor remot. Però aquesta vegada, el port utilitzat serà port 4248 en lloc de la predeterminada port 22.

Conclusió

Després de revisar aquest tutorial, hem après la naturalesa dinàmica del scp ordre que s'utilitza per transferir o copiar fitxers d'un sistema a un altre. Aquesta opció també es pot utilitzar per descarregar fitxers o directoris des del servidor remot. Així, podem concloure que scp L'ordre resulta molt útil per a la transferència de fitxers quan heu de gestionar més d'un sistema i servidors remots alhora.