Bagaimana cara menyalin file dari server jauh ke mesin lokal?

238

Di shell terminal saya, saya ssh'ed ke server jauh, dan saya cdke direktori yang saya inginkan.

Sekarang di direktori ini, ada file bernama tableyang ingin saya salin ke mesin lokal saya /home/me/Desktop.

Bagaimana saya bisa melakukan ini?

Saya mencoba scp table /home/me/Desktoptetapi memberikan kesalahan tentang tidak ada file atau direktori tersebut.

Adakah yang tahu bagaimana melakukan ini?

akhir
sumber
Jika Anda sering menyalin dengan scp, Anda dapat memasang direktori jarak jauh di peramban file dan menyeret-dan-jatuhkan. Di host Ubuntu 15 saya, itu di bawah menu bar "Go"> "Enter Location"> [email protected]:/home/debian. Atau, seseorang dapat menggunakan sshfsuntuk memasang sistem file mesin jarak jauh pada host. Tetapi pengaturan itu sedikit lebih terlibat.
ConvexMartian
Berikan rsyncmencoba. Ini bagus untuk salinan lokal dan jarak jauh, memberi Anda kemajuan salin, dll. Contoh
sakisk

Jawaban:

383

Sintaksnya scpadalah:

Jika Anda menggunakan komputer tempat Anda ingin mengirim file ke komputer jarak jauh:

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

Di sini remotedapat berupa FQDN atau alamat IP.

Di sisi lain jika Anda berada di komputer yang ingin menerima file dari komputer jarak jauh:

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

scp juga dapat mengirim file antara dua host jarak jauh:

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

Jadi sintaks dasarnya adalah:

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

Anda dapat membaca man scpuntuk mendapatkan lebih banyak ide tentang ini.

heemayl
sumber
4
Bagaimana jika saya ingin menyalin banyak file? Saya menambahkan spasi dan hanya menggunakan yang lain /file/to/sendTerima kasih atas jawaban Anda yang luar biasa!
camdixon
6
scp -rakan menyalin secara rekursif.
Henry
Apa yang saya ingin salin file dari jaringan ke VM saya ... bagaimana mencapai hal yang sama menggunakan scp
Sushivam
2
@ heemayl +1 untuk jawaban yang bagus. Diperkirakan untuk menambahkan bahwa dalam hal ini adalah koneksi aman (yang memerlukan otentikasi) Anda dapat menggunakan yang berikut (untuk menyalin file dari lokal ke jarak jauh): scp -i mykey.pem somefile.txt [email protected] : / some / folder / in / remote
Guy Avraham
1
Gunakan scp -P 123untuk menentukan port khusus
aexl
14

Anda bisa menggunakannya rsyncsebagai alternatif. Ini terutama untuk menyinkronkan file .. tetapi Anda dapat menggunakannya untuk tujuan ini juga.

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

untuk menambahkan opsi ssh:

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

--progressdan --statsberguna untuk tampilan transfer waktu-nyata.

buronan
sumber
12
scp [email protected]:/root/Jmeter/reports.jtl Downloads/
pengguna135545
sumber
4
Saya suka jawaban seperti ini.
xtluo
8
scp username@ipaddress:pathtofile localsystempath

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

Jika Anda menggunakan dengan port:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Sadanand Kenganal
sumber
Ini akan menyalin file ke direktori jarak jauh yang sama.
Max Yudin
3

Jika Anda benar-benar percaya semua orang di jaringan dan Anda dapat menghubungkan pelabuhan mesin tujuan langsung, Anda dapat menggunakan netcat: nc.

Katakanlah alamat IP mesin tujuan adalah 192.168.1.123

Di tempat tujuan:

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

Anda dapat memilih port yang berbeda, dan juga mengikat ke IP lain dari antarmuka Anda, 0.0.0.0 hanya menangkap semua antarmuka.

Di jalankan sumber:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO, ini adalah cara tercepat untuk mengirim file dari satu komputer ke komputer lain menggunakan jaringan digital.

Opsi argumen dan baris perintah mungkin sedikit berubah di antara berbagai versi ncdan tar, tetapi pasti akan berfungsi dengan distribusi Linux terbaru.

onur güngör
sumber
2

Di Linux, untuk menyalin folder dan kontennya dari direktori pengguna (root dalam contoh ini), ke folder di direktori pengguna lokal, saya menjalankan perintah ini di mesin lokal:

scp -r [email protected]: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Perhatikan ~ / yang sepertinya sering saya lupakan ...

Otak Kecil
sumber