Trasferimento di file su SSH [chiuso]


461

Sto SSHing in un server remoto dalla riga di comando e sto provando a copiare una directory sul mio computer locale con il scpcomando. Tuttavia, il server remoto restituisce questo messaggio di "utilizzo":

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%

Mi piacerebbe essere in grado di trasferire file in entrambe le direzioni. Da quello che ho letto, ho pensato che il comando sopra avrebbe funzionato per il download e scp -p [localpath] [remotepath]per il caricamento?

Risposte:


735

Hai bisogno di scpqualcosa da qualche parte. Hai scp ./styles/, quindi stai dicendo copia sicura ./styles/, ma non dove copiarlo.

Generalmente, se vuoi scaricare, andrà:

# download: remote -> local
scp user@remote_host:remote_file local_file 

dove local_filepotrebbe effettivamente essere una directory in cui inserire il file che si sta copiando. Per caricare, è l'opposto:

# upload: local -> remote
scp local_file user@remote_host:remote_file

Se vuoi copiare un'intera directory, avrai bisogno -r. Pensa scpa come cp, tranne che puoi specificare un file con user@remote_host:filesolo i file locali.

Modifica: come indicato in un commento, se i nomi utente sugli host locale e remoto sono gli stessi, l'utente può essere omesso quando si specifica un file remoto.


2
Se l'utente è lo stesso sull'host remoto e sull'host locale, è possibile omettere il nome utente: scp hello.c myserver.net:~/projects/
strager

Sì, vero, aggiungerò una nota a riguardo. Ho incluso l'utente perché poi gli esempi che ho dato funzioneranno sempre. :)
Lemnisca,

Sto facendo fatica su questo ... è corretto. scp C: \ nomefile.txt server1 @ server2: home
Vincent

Aggiungi la formattazione in grassetto su "donload" e "upload".
kursus,

2
naturalmente essere interpretato come "remoto", se vedi cosa intendo. Quindi non eseguire prima ssh.
PatrickT

164

Se si esegue la copia da / sul computer desktop, utilizzare WinSCP o, se su Linux, Nautilus supporta SCP tramite l'opzione Connetti al server.

scp può solo copiare file su un computer che esegue sshd, quindi è necessario eseguire il software client sul computer remoto da quello su cui si sta eseguendo scp.

Se si copia dalla riga di comando, utilizzare:

# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile

o

# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile

4
Tu sei l'uomo. Ho distribuito un blog in meno di 10 secondi senza alcuna installazione aggiuntiva sul lato server!
PM

2
Questo ha funzionato perfettamente. Ho usato msysgit in cmd poiché ha sia scp che ssh.
Ibn Saeed,

3
Questo ha funzionato perfettamente. Ho usato scp * user @ host: / path / to / where
Bastin Robin l'

3
Questa dovrebbe essere la risposta migliore.
gsamaras,

3
Grazie per il suggerimento WinSCP. Molto più semplice che provare a scrivere tutti quei comandi manualmente ...
Brian Leishman il

23

È necessario specificare sia l'origine che la destinazione e se si desidera copiare le directory, è necessario esaminare l'opzione -r.

Quindi per copiare ricorsivamente / home / user / qualunque cosa dal server remoto alla tua directory corrente:

scp -pr user@remoteserver:whatever .

19

No, devi comunque procedere in scp [from] [to]qualunque modo

La differenza è che è necessario scp -p server:serverpath localpath


8
qual è lo scopo di -p?
Qinjie il

1
Da man scp: Preserva i tempi di modifica, i tempi di accesso e le modalità dal file originale.
pjmil,

4
Per essere chiari -pè incluso solo qui perché l'OP ha incluso la bandiera nella loro domanda originale. Non è in alcun modo rilevante per la risposta
Gareth,
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.