Come estrarre un file da un server usando scp?


31

Sono sulla macchina A e voglio estrarre un file dalla macchina B.

A$ scp <myuserid>@hostB:<path of file in B> .

dice che:

scp: <path of file in B>: No such file or directory

Ma sulla macchina B, questo file esiste in questo percorso.

Cosa non va?


È questo il formato esatto del comando che hai eseguito? O c'era un nome di file dopo ':'?
dtyler,

Risposte:


43

Non hai specificato alcun file: devi aggiungere il file (con percorso) dopo i due punti:

A$ scp <myuserid>@hostB:/absolutepath/file .

o

A$ scp <myuserid>@hostB:relativepath/file .

per un percorso relativo alla tua home directory.

Se non si specifica un utente diverso (ovvero, l'utente su A e B sono gli stessi) non è necessario @

A$ scp hostB:/path/file .

2
Ho corretto la formattazione della domanda, ma forse la tua risposta è ancora valida. Il problema potrebbe derivare da una confusione tra percorsi assoluti e relativi (verso casa).
Stéphane Gimenez,

@ StéphaneGimenez ora che vedo la risposta modificata capisco. Sembrava una domanda strana :-)
Matteo,

4
$ scp username@remoteip:remote_location_file /location/where/you/save

Funziona solo quando si copia il file. se si desidera copiare una directory utilizzare

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Opzione che puoi usare su tua richiesta

-P port
Specifica la porta a cui connettersi sull'host remoto. Nota che questa opzione è scritta con la "P" maiuscola, poiché -p è già riservata per preservare i tempi e le modalità del file in rcp.

-p
Preserva i tempi di modifica, i tempi di accesso e le modalità dal file originale.

-r
Copia ricorsivamente intere directory.

-v

Modalità dettagliata. Fa sì che scp e ssh stampino i messaggi di debug sui loro progressi. Ciò è utile per il debug di problemi di connessione, autenticazione e configurazione.


1
L'OP ha chiesto di copiare un file, non una directory.
contromodale

2

usa il percorso scp corretto

scp ssh://user@hostname/tmp/foo.txt .

1

È possibile specificare un percorso file relativo alla directory principale o un percorso file assoluto. Ad esempio, se si foo.txttrova in una directory chiamata docssotto la home directory ed bar.txtè in /var/tmp, è possibile farlo

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

Notare che se il nome del file contiene caratteri speciali per la shell remota (in genere spazi bianchi o !"#$&'*;<>?[\]^`{|}~), è necessario evitarli per la shell remota oltre a salvarli per la shell locale. Ad esempio, se il file viene chiamato foo bar.txted è nella tua home directory:

scp username@host.example.com:'foo\ bar.txt' .

In caso di problemi con i file contenenti caratteri di punteggiatura, provare a utilizzare sftpinvece di scptrasferirli. Oppure usa un metodo ancora più conveniente, se puoi usare FUSE : monta il filesystem della macchina remota usando sshfs e quindi usa i normali comandi di manipolazione dei file.

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

Si può fare facilmente SCP in entrambi i modi se si hanno l'utente e la password DMZ. Siete sulla vostra macchina locale: dalla DMZ alla vostra macchina linux locale (pull). Significa copiare abc.text all'interno della cartella2 nel tuo PWD attualmente connesso.

scp user@111111:folder1/folder2/abc.txt .

Chiederà la password

È tutto

Ora vuoi inviare una cartella con le sottocartelle e i file dal tuo computer locale a DMZ:

usr @ localmachine: ~ / abc / defs> scp -r cartella / usr @ 111111: vkrishna / docker /

verrà nuovamente richiesta la password

: è la cartella principale del computer remoto e vkrishna è una cartella lì e di nuovo sottocartella finestra mobile. Localmente la cartella defs ha una cartella chiamata "cartella" che vogliamo trasferire completamente.

Come / abc / defs / cartella

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.