Come copiare file da una macchina a unaltra usando ssh

Sto usando una macchina Linux (centos), mi sono già connesso allaltro sistema usando ssh. Ora la mia domanda è: come posso copiare file da un sistema a un altro?

Supponiamo, nel mio ambiente, di avere due sistemi come System A e System B. Sto” utilizzando System A macchina e qualche altra macchina che utilizza System B machine.

Come posso copiare un file da System B a System A? Inoltre, copia un file da System A a System B?

Commenti

  • Trovo che scp sia spesso un cumber stone. Se può soddisfare le tue esigenze, prova questo linuxjournal.com/article/8904 . Monta localmente il file system remoto.
  • @Alan Penso che intendi ” ingombrante “? Cumber Stone è una carta Magic 😉
  • piuttosto correlata: crea un archivio crittografato di dir/ sul computer remoto utilizzando ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Se hai accesso allftp del server remoto, possiamo anche usare wget per scaricare come $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Riferimento1 Riferimento2
  • Non duplicato, la domanda collegata richiede specificamente di non utilizzare scp; per quella scp va bene e il modo più semplice come risposta, quindi le mod rimuovono la bandiera duplicata come se qualcuno andasse a unaltra, la risposta più utile sarà persa.

Risposta

Sintassi:

scp <source> <destination> 

A copia un file da B a A dopo aver eseguito laccesso a B:

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

Per copiare un file da B a A dopo aver effettuato laccesso a A:

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

Commenti

  • Per chiarire, in genere don ‘ t utilizzare scp per copiare un file sul o dal computer locale (Sistema A) mentre sei connesso a un server remoto (Sistema B) con ssh. scp ti accederà al server remoto, copierà il file, quindi ti disconnetterà di nuovo in un unico processo, quindi eseguilo da una shell sul tuo computer locale. Detto questo, puoi utilizzare scp se ‘ sei connesso al sistema B tramite SSH e desideri copiare file tra il sistema B e il sistema C.
  • @DopeGhoti. Sì, puoi ‘ t spostare file tra due computer remoti. Lorigine o la destinazione deve essere un file locale. Tuttavia, se accedi a una macchina remota con ssh, puoi copiare file tra due macchine remote su quella macchina ‘ s riga di comando.
  • Inoltre, una cosa importante da ricordare è che puoi solo scp in una cartella sulla macchina di destinazione per la quale hai i permessi. Se stai tentando di copiarlo in una destinazione per la quale lutente di destinazione non dispone dellautorizzazione, copia prima il file nella directory home o sottodirectory dellutente ‘ e poi ssh nella computer di destinazione e sudo lo spostano nella destinazione finale
  • Ricorda -r (ricorsivo) e -p (conserva i metadati di sistema): scp -rp < file1 > < file2 >
  • Sì, utilizza -P per specificare la porta TCP sullhost remoto. Questo mi cattura ogni volta, perché ssh utilizza -p.

Risposta

In caso avessi bisogno di un approccio alternativo.

Installa sshfs. se usi ubuntu / debian:

sudo apt-get install sshfs 

o, se usi centos / rhel:

sudo yum install fuse-sshfs 

oppure, in macOS

brew install sshfs 

Crea una directory vuota

mkdir /home/user/testdir 

“link” o “monta” le due directory

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

“unlink” le directory

fusermount -u /home/user/testdir 

Su BSD e macOS, per smontare il filesystem:

umount mountpoint 

o

diskutil unmount mountpoint 

Per ulteriori informazioni, vedere qui, linuxjournal.com libfuse / sshfs

Commenti

  • La domanda specifica che il sistema operativo in questione è CentOS; non derivato da Debian. apt-get è un Debianismo; il gestore di pacchetti corretto sarebbe yum o, per versioni molto vecchie di CentOS, up2date o rpm.
  • +1 la risposta a questa domanda potrebbe essere fuori contesto, ma mi ha comunque aiutato e, per quanto ne so, anche altre.
  • Non correlato, ma ‘ è una risposta da un milione di dollari xD
  • Se ho capito bene, questo dà ACCESS ai file remoti, ma non li COPIA?
  • @ ToolmakerSteve ‘ hai perfettamente ragione: crea una falsa directory (mount), in modo che tu possa usare tutti i tuoi strumenti preferiti per copiare o spostare cose: cp, mv, rm, rsync, unison … Il comando scp sarebbe in grado di copiare solo file.

Risposta

A volte devi essere fantasioso con 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 - 

Commenti

  • Creatività? Questo è il modo in cui condividevamo le unità a nastro. 🙂
  • Puoi dirci cosa fa? Ad esempio, non ho idea di cosa abbia a che fare ‘ cron ‘ con la copia del file!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget sono file individuali da includere nellarchivio tar. Il punto era illustrare perché a volte è necessario essere fantasiosi. Questa serie di comandi trasmette larchivio tar su una connessione ssh e lo disarchivia sullaltro lato. Quindi nessun archivio tar viene mai scritto su disco. A volte lo uso per selezionare i file da copiare in un unico comando.
  • Ow! Ho insegnato che il primo ‘ / ‘ era il percorso di origine! (Cosè?) Quindi era una domanda stupida! Grazie. 🙂
  • Tar eseguirà il chdir su ” / ” quindi tutti i seguenti percorsi sono relativi a ” / “.

Risposta

Se desideri mantenere sincronizzati i file su entrambi i sistemi, dai unocchiata al rsync programma:

(guarda il tutorial qui)

Commenti

  • Questo è un vero strumento professionale.

Risposta

Se hai uno dei sistemi operativi comuni, puoi installare pigz che è lo stesso di gzip tranne per il fatto che utilizzerà più core ed essere più veloce su una rete veloce. Il mio comando è leggermente diverso.

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

o laltro modo per ottenere i file

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

o esegui il backup del file root fs con

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

Commenti

Risposta

Un metodo più semplice che funziona con computer NVIDIA Jetson controllati tramite SSH consiste nel connettersi con SFTP (SSH File Transfer Protocol).

Supponiamo che io voglia spostare il documento UFO_blueprint.odt dai server remoti della NASA e spostalo nei miei documenti.

  1. cd dove vuoi salvare il file
$ cd Documents 
  1. Connect
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Vai alla directory che contiene il file da trasferire.
$ cd NASA/secret_files/ 
  1. Trasferisci
$ get UFO_blueprint.odt 

Per ottenere la directory completa, utilizza invece

$ get -r secret_files/ 

Commenti

  • usa per caricare file

Risposta

Copia ricorsiva Unix / Linux di file e cartelle su una shell sicura utilizzando il codice seguente:

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

Un esempio completo potrebbe essere:

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

Nota se non hai un server DNS per risolvere i nomi host, usa invece il tuo indirizzo IP. Lesempio sopra potrebbe essere simile a questo

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

Risposta

Se sono in esecuzione SCP / SSH su una porta diversa, assicurati di specificare lopzione -P maiuscola della porta.

Esempio:

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

Commenti

  • Questa domanda ha sette anni e ha molte risposte già. Anche se è vero che ssh può usare porte non predefinite e lopzione ‘ s -P del client ssh è quindi richiesta, non devi ‘ t davvero aiutare con il problema a portata di mano. Prova a concentrarti sulle domande recenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *