Cum să copiez fișiere de la o mașină la alta folosind ssh

Eu folosesc mașina Linux (centos), m-am conectat deja la celălalt sistem folosind ssh. Acum întrebarea mea este cum pot copia fișiere dintr-un sistem în alt sistem?

Să presupunem că, în mediul meu, am două sisteme precum System A și System B. Utilizez mașina System A și altele care folosesc System B machine.

Cum pot copia un fișier din System B în System A? Și copiați un fișier de la System A la System B?

Comentarii

  • Consider că scp este deseori o piatră greoaie. Dacă ar putea satisface nevoile dvs., încercați acest lucru linuxjournal.com/article/8904 Montează sistemul de fișiere la distanță local.
  • @Alan Cred că vrei să spui ” greoaie „? Cumber Stone este o carte Magic 😉
  • oarecum legată: face o arhivă criptată de dir/ local pe mașină la distanță folosind ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Dacă aveți acces la ftp-ul serverului la distanță, putem folosi și wget pentru a descărca ca $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Reference1 Reference2
  • Nu este duplicat, întrebarea legată solicită în mod specific să nu utilizați scp; pentru că scp este bine și cel mai simplu mod ca răspuns, așa că modificările vă rugăm să eliminați semnalizatorul duplicat ca și cum cineva va merge la altul, cel mai util răspuns va fi omis.

Răspuns

Sintaxă:

scp <source> <destination> 

To copiați un fișier din B în A în timp ce sunteți conectat la B:

scp /path/to/file username@a:/path/to/destination 

Pentru a copia un fișier din B în A în timp ce sunteți conectat la A:

scp username@b:/path/to/file /path/to/destination 

Comentarii

  • Pentru a clarifica, de obicei nu ‘ nu utilizați scp pentru a copia un fișier pe sau de pe mașina dvs. locală (Sistem A) în timp ce sunteți conectat la un server la distanță (Sistem B) cu ssh. scp vă va conecta la serverul de la distanță, va copia fișierul, apoi vă va deconecta din nou într-un singur proces, deci rulați-l de pe un shell pe mașina dvs. locală. Acestea fiind spuse, puteți utiliza scp dacă ‘ v-ați conectat din nou la System B prin SSH și doriți să copiați fișiere între System B și System C.
  • @DopeGhoti. Da, nu puteți ‘ muta fișierele între două computere la distanță. Fie sursa, fie destinația trebuie să fie un fișier local. Cu toate acestea, dacă vă conectați la o mașină la distanță cu ssh, puteți copia fișiere între două mașini la distanță pe linia de comandă ‘ a mașinii respective.
  • De asemenea, un lucru important de reținut este că puteți scp doar într-un folder de pe mașina țintă pentru care aveți permisiuni. Dacă încercați să îl copiați într-o destinație către care utilizatorul țintă nu are permisiunea, copiați mai întâi fișierul în directorul de acasă sau subdirectorul utilizatorului ‘ și apoi ssh în mașina țintă și sudo mută-o la destinația finală
  • Amintiți -r (recursiv) și -p (păstrați metadatele sistemului): scp -rp < fișier1 > < file2 >
  • Da, utilizați -P pentru a specifica portul TCP pe gazda la distanță. Acest lucru mă prinde de fiecare dată, deoarece ssh folosește -p.

Răspunde

În cazul în care aveți nevoie de o abordare alternativă.

Instalați sshfs. dacă utilizați ubuntu / debian:

sudo apt-get install sshfs 

sau, dacă utilizați centos / rhel:

sudo yum install fuse-sshfs 

sau, în macOS

brew install sshfs 

Creați un director gol

mkdir /home/user/testdir 

„link” sau „mount” cele două directoare

sshfs [email protected]:/remote/dir /home/user/testdir 

„deconectați” directoare

fusermount -u /home/user/testdir 

Pe BSD și macOS, pentru a demonta sistemul de fișiere:

umount mountpoint 

sau

diskutil unmount mountpoint 

Pentru mai multe, consultați aici, linuxjournal.com libfuse / sshfs

Comentarii

  • Întrebarea specifică în mod specific faptul că sistemul de operare în cauză este CentOS; nu derivat din Debian. apt-get este un debianism; managerul de pachete corect ar fi yum sau, pentru arome foarte vechi ale CentOS, up2date sau rpm.
  • +1 răspunsul la această întrebare poate fi în afara contextului, dar totuși m-a ajutat și, din câte văd, și alții.
  • Nu are legătură, dar ‘ un milion de dolari răspuns xD
  • Dacă înțeleg corect, acesta oferă ACCES la fișierele de la distanță, dar nu le COPIE?
  • @ ToolmakerSteve ‘ ești perfect corect: creează un director fals (montare), astfel încât să poți folosi toate instrumentele preferate pentru a copia sau muta lucruri: cp, mv, rm, rsync, unison … Comanda scp ar putea copia numai fișiere.

Răspuns

Uneori trebuie să fii elegant cu tar:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Comentarii

  • Creativitate? Acesta este modul în care obișnuiam să partajăm unitățile de bandă. 🙂
  • Ne puteți spune ce face asta? De exemplu, habar n-am ce are de făcut ‘ cron ‘ cu copierea fișierului!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget sunt fișiere individuale care trebuie incluse în arhiva tar. Ideea a fost de a ilustra de ce uneori trebuie să vă faceți plăcere. Această serie de comenzi transmite arhiva tar pe o conexiune ssh și o dezarhivează pe cealaltă parte. Astfel, nici o arhivă tar nu este scrisă vreodată pe disc. Folosesc asta uneori pentru a alege fișierele care pot fi copiate într-o singură comandă.
  • Ow! Am învățat că primul ‘ / ‘ a fost calea sursă! (Ce este?) Deci, a fost o întrebare prostească! Mulțumiri. 🙂
  • Tar va chdir la ” / ” astfel toate căile următoare sunt relative la ” / „.

Răspuns

Dacă doriți să păstrați fișierele de pe ambele sisteme sincronizate, aruncați o privire la programul rsync:

(vezi tutorialul aici)

Comentarii

  • Acesta este un adevărat instrument profesional.

Răspuns

Dacă aveți unul dintre sistemele de operare comune, puteți instala pigz care este același cu gzip, cu excepția faptului că va folosi mai multe nuclee și să fii mai rapid într-o rețea rapidă. Comanda mea este puțin diferită.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

sau alt mod de a obține fișiere

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

sau faceți backup fișierelor root cu

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

Comentarii

Răspuns

O metodă mai simplă care funcționează prin intermediul computerelor NVIDIA Jetson controlate prin SSH este să vă conectați cu SFTP (SSH File Transfer Protocol).

Să presupunem că doresc să mut documentul UFO_blueprint.odt de pe serverele de la distanță ale NASA și mutați-le în Documentele mele.

  1. cd în locul în care doriți să fiți salvat fișierul
$ cd Documents 
  1. Conectare
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Accesați directorul care conține fișierul de transferat.
$ cd NASA/secret_files/ 
  1. Transfer
$ get UFO_blueprint.odt 

Pentru a obține directorul complet, utilizați în schimb

$ get -r secret_files/ 

Comentarii

  • utilizați pentru încărcarea fișierelor

Răspuns

Copie recursivă Unix / Linux a fișierelor și folderelor peste un shell sigur folosind codul următor:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Un exemplu complet ar putea arăta ca:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Rețineți dacă nu aveți un server DNS pentru a rezolva numele de gazdă, utilizați în schimb adresa dvs. IP. Exemplul de mai sus ar putea arăta astfel

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Răspuns

Dacă rulează SCP / SSH pe un alt port, asigurați-vă că specificați opțiunea de port majuscul -P.

Exemplu:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Comentarii

  • Această întrebare are șapte ani și are multe răspunsuri deja. Deși este adevărat că ssh poate utiliza porturi care nu sunt implicite, iar opțiunea ‘ s -P ssh este atunci necesară, nu ‘ nu ajută cu adevărat la problema la îndemână. Încercați să vă concentrați asupra întrebărilor recente.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *