Bagaimana cara menarik file dari server menggunakan scp?

31

Saya menggunakan mesin A dan ingin menarik file dari mesin B.

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

dikatakan bahwa:

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

Tetapi pada mesin B, file ini ada di jalur ini.

Apa yang salah?

xyz
sumber
Apakah ini format tepat dari perintah yang Anda jalankan? Atau adakah nama file setelah ':'?
dtyler

Jawaban:

43

Anda tidak menentukan file apa pun: Anda harus menambahkan file (dengan path) setelah titik dua:

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

atau

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

untuk jalur relatif ke direktori home Anda.

Jika Anda tidak menentukan pengguna yang berbeda (yaitu, pengguna pada A dan B adalah sama) Anda tidak perlu @

A$ scp hostB:/path/file .
Matteo
sumber
2
Saya memperbaiki pemformatan dalam pertanyaan, tetapi mungkin jawaban Anda masih valid. Masalahnya mungkin berasal dari kebingungan antara jalur absolut dan relatif (ke rumah).
Stéphane Gimenez
@ StéphaneGimenez sekarang saya melihat jawaban yang diedit, saya mengerti. Rasanya pertanyaan aneh :-)
Matteo
4
$ scp username@remoteip:remote_location_file /location/where/you/save

Ini hanya berfungsi ketika Anda menyalin file. jika Anda ingin menyalin penggunaan direktori

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

Opsi yang dapat Anda gunakan atas permintaan Anda

-P port
Menentukan port yang akan dihubungkan pada host jarak jauh. Perhatikan bahwa opsi ini ditulis dengan huruf besar "P", karena -p sudah disediakan untuk menjaga waktu dan mode file dalam rcp.

-p
Mempertahankan waktu modifikasi, waktu akses, dan mode dari file asli.

-r
Salin seluruh direktori secara rekursif.

-v

Mode Verbose. Menyebabkan scp dan ssh untuk mencetak pesan debug tentang kemajuan mereka. Ini membantu dalam men-debug koneksi, otentikasi, dan masalah konfigurasi.

Rakib
sumber
1
OP meminta untuk menyalin file, bukan direktori.
countermode
2

gunakan jalur scp yang tepat

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

sumber
1

Anda dapat menentukan path file yang relatif terhadap direktori home Anda, atau path file absolut. Misalnya, jika foo.txtada di direktori yang disebut di docsbawah direktori home Anda dan bar.txtberada di /var/tmp, Anda bisa melakukannya

scp [email protected]:docs/foo.txt .
scp [email protected]:/var/tmp/bar.txt .

Perhatikan bahwa jika nama file berisi karakter yang khusus untuk shell jarak jauh (biasanya spasi atau !"#$&'*;<>?[\]^`{|}~), Anda perlu menghindarinya untuk shell jarak jauh selain melarikan diri untuk shell lokal. Misalnya, jika file tersebut dipanggil foo bar.txtdan ada di direktori home Anda:

scp [email protected]:'foo\ bar.txt' .

Jika Anda mengalami kesulitan dengan file yang mengandung karakter tanda baca, coba gunakan sftpalih-alih scpmentransfernya. Atau gunakan metode yang bahkan lebih nyaman, jika Anda dapat menggunakan FUSE : pasang sistem file mesin jarak jauh menggunakan sshfs , dan kemudian gunakan perintah manipulasi file biasa.

mkdir host.example.com
sshfs [email protected]:/ host.example.com
cp host.example.com/path/to/file .
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Seseorang dapat dengan mudah melakukan SCP jika memiliki pengguna DMZ dan Kata Sandi Anda berada di mesin lokal Anda: Dari DMZ ke mesin linux lokal Anda (tarik). Berarti menyalin abc.text di dalam folder2 ke PWD Anda saat ini login.

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

Ia akan meminta kata sandi

itu saja

Sekarang Anda ingin mengirim folder akan subfolder dan file dari mesin lokal Anda ke DMZ:

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

lagi kata sandi akan ditanyakan

: adalah folder root dari mesin jarak jauh dan vkrishna adalah folder di sana & lagi docker subfolder. Folder defs lokal memiliki folder bernama "folder" yang ingin kita transfer sepenuhnya.

Suka / abc / defs / folder

krishna vimal
sumber