Come copiare un file da un server remoto a un computer locale?


238

Nella mia shell di terminale, sono entrato in un server remoto e io cdnella directory che desidero.

Ora in questa directory, c'è un file chiamato tableche voglio copiare sul mio computer locale /home/me/Desktop.

Come posso fare questo?

Ho provato, scp table /home/me/Desktopma ha dato un errore su nessun file o directory.

Qualcuno sa come fare questo?


Se ti ritrovi a copiare spesso con scp, puoi montare la directory remota nel tuo browser di file e trascinare la selezione. Sul mio host Ubuntu 15, è sotto la barra dei menu "Vai"> "Inserisci posizione"> debian@10.42.4.66:/home/debian. In alternativa, è possibile utilizzare sshfsper montare il filesystem della macchina remota sull'host. Ma quella configurazione è un po 'più complicata.
ConvexMartian,

Dare rsyncuna prova. È ottimo sia per le copie locali che per quelle remote, ti dà progressi nella copia, ecc. Un esempio
sakisk l'

Risposte:


383

La sintassi per scpè:

Se ti trovi sul computer dal quale desideri inviare il file a un computer remoto:

scp /file/to/send username@remote:/where/to/put

Qui remotepuò essere un nome di dominio completo o un indirizzo IP.

D'altra parte se sei sul computer che desidera ricevere file da un computer remoto:

scp username@remote:/file/to/send /where/to/put

scp può anche inviare file tra due host remoti:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Quindi la sintassi di base è:

scp username@source:/location/to/file username@destination:/where/to/put

Puoi leggere man scpper avere più idee su questo.


4
Cosa succede se desidero copiare più file? Ho aggiunto uno spazio e ne ho appena usato un altro /file/to/sendGrazie per la tua fantastica risposta!
Camdixon,

6
scp -rcopierà in modo ricorsivo.
Henry,

Quello che voglio copiare i file dalla rete alla mia VM ... come ottenere lo stesso usando scp
Sushivam

2
@heemayl +1 per la buona risposta. Pensato di aggiungere che nel caso in cui si tratti di una connessione protetta (che richiede un'autenticazione) è possibile utilizzare quanto segue (per copiare file da locale a remoto): scp -i mykey.pem somefile.txt root@remotehost.ip.address : / some / folder / in / remote
Guy Avraham,

1
Utilizzare scp -P 123per specificare la porta personalizzata
aexl,

14

Puoi usare rsynccome alternativa. È principalmente per la sincronizzazione dei file .. ma puoi usarlo anche per questo scopo.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

per aggiungere opzioni ssh:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progresse --statssono utili per la visualizzazione in tempo reale del trasferimento.


12
scp root@10.240.179.4:/root/Jmeter/reports.jtl Downloads/

4
Mi piace questo tipo di risposta.
xtluo,

8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Se stai usando con la porta:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Questo copierà il file nella stessa directory remota.
Max Yudin,

3

Se vi fidate completamente tutti in rete e si può collegare una porta della macchina di destinazione direttamente, è possibile utilizzare netcat: nc.

Supponiamo che l'indirizzo IP del computer di destinazione sia 192.168.1.123

Sulla corsa di destinazione:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Puoi scegliere una porta diversa e anche associarti a un altro IP delle tue interfacce, 0.0.0.0 cattura solo tutte le interfacce.

In esecuzione sorgente:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO, questo è il modo più veloce possibile per inviare un file da un computer a un altro utilizzando reti digitali.

Gli argomenti e le opzioni della riga di comando potrebbero cambiare leggermente tra le diverse versioni di nce tar, ma funzionerà sicuramente con le recenti distribuzioni Linux.


2

Su Linux, per copiare una cartella e il suo contenuto dalla directory dell'utente (root in questo esempio), in una cartella nella directory dell'utente locale, eseguo questo comando sul computer locale:

scp -r root@178.62.54.83: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Nota il ~ / che spesso mi sembra di dimenticare ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.