Di SSH, bagaimana saya mv ke sistem lokal saya?

129

Saya sshmasuk ke direktori webhost saya, dan tarmengakses webapp untuk mengunduh. Ketika saya mencoba untuk mvke ~/mydirectory/backupsatau /home/mydirectory/backups, ia mendefinisikan "rumah" sebagai root saya di hosting bahwa aku ssh'ed ke dalam.

Bagaimana cara mv di ssh ke drive lokal sementara masih di dalam sistem webhost?

JeanSibelius
sumber
OS apa yang Anda hubungkan?
Zoredache

Jawaban:

181

Hal pertama yang pertama: ssh adalah cara untuk login dari jarak jauh ke komputer lain. Shell (command line) yang Anda dapatkan setelah Anda ssh adalah (cukup banyak) sama seperti jika Anda telah membuka xterm di mesin remote. Jika tidak menawarkan cara seperti itu untuk memindahkan file.

Namun, fakta bahwa komputer jarak jauh menerima koneksi ssh memberi Anda beberapa opsi untuk bertukar file:

Gunakan scp Untuk menyalin dari komputer lokal Anda ke remote, ketik, di komputer lokal:

scp /tmp/file [email protected]:/home/name/dir

(di mana / tmp / file dapat diganti dengan file lokal dan / home / name / dir dengan direktori remote)

Untuk menyalin dari komputer jarak jauh ke komputer lokal, ketik, di komputer lokal :

scp [email protected]:/home/name/dir/file /tmp

Gunakan sshfs Ini sedikit lebih maju tetapi jauh, lebih bagus (ketika koneksi internet kedua komputer baik. Jika tidak, tetap gunakan scp)

Anda dapat "menautkan" direktori dari komputer jarak jauh ke direktori (kosong) komputer lokal. Katakan Anda "menautkan" / some / remote / dir dari komputer jarak jauh ke / home / youruser / remotecomp di komputer Anda. Jika ada file / some / remote / dir / file di komputer jarak jauh, Anda dapat melihatnya di / home / youruser / remotecomp / file. Anda dapat menyalin dan mv seperti biasa, dan Anda bahkan dapat mengubah file dan direktori jarak jauh.

Namun perhatikan, bahwa ketika koneksi berakhir, / home / youruser / remotecomp menjadi direktori kosong lagi, dan Anda hanya menyimpan di komputer lokal file yang Anda salin ke direktori lain

Untuk mencapai ini:

1) instal sshfs:

sudo apt-get install sshfs

2) buat dir kosong

mkdir /home/youruser/remotecomp

3) "menautkan" kedua direktori (istilah yang tepat adalah mount)

sshfs [email protected]:/some/remote/dir /home/youruser/remotecomp

4) Nikmati

5) "putuskan tautan" dir

fusermount -u /home/youruser/remotecomp

Jika komputer lokal menjalankan windows Anda dapat menemukan versi scpuntuk windows. Lihat, misalnya, wincp

josinalvo
sumber
Apakah ada cara untuk menyalin file dari mesin jarak jauh ke mesin lokal melalui "terminal pada mesin jarak jauh"? Dalam kasus Anda, Anda menggunakan terminal pada mesin lokal. Saya berbicara tentang situasi di mana mesin lokal adalah windows dan remote adalah ubuntu dan saya login ke mesin remote melalui ssh.
chandresh
Biasanya tidak. Sejauh yang saya tahu, menyalin melalui "terminal di mesin jarak jauh" berarti bahwa Anda memerlukan server SSH di "mesin lokal" (Saya sengaja melewatkan itu selama jawaban saya, tetapi "fakta bahwa komputer jarak jauh menerima koneksi ssh" dimaksudkan mengatakan "fakta bahwa komputer jarak jauh menjalankan server ssh")
josinalvo
Namun, Anda dapat menemukan "klien scp" untuk windows. Lihat, misalnya, winscp.net/eng/download.php
josinalvo
Saya suka sshfspilihan
Fibo Kowalsky
Jika Anda mentransfer file besar, gunakan rsync over ssh with rsync -P -e ssh /tmp/file [email protected]:/home/name/dir. Ini karena jika transfer file gagal setengah jalan, scphanya akan menghapus file. Di sisi lain, jika Anda menggunakan rsyncdengan -Popsi, itu akan menyimpan file yang tidak lengkap pada mesin jarak jauh dan ketika Anda memulai kembali transfer, itu akan memastikan bahwa apa yang sudah ada di mesin jarak jauh cocok dengan file di mesin lokal Anda dan kemudian lanjutkan ke tempat pemindahan yang tersisa.
Boris
16

Anda dapat menggunakan scpatau rsync. Di sistem lokal Anda:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

Tapi, karena Anda menyebutkan cadangan, saya berasumsi bahwa itu akan menjadi tambahan dan Anda harus melakukannya setiap saat. Jadi, rsyncadalah pilihan yang lebih baik untuk cadangan inkremental. Di shell lokal Anda:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

lihat rsync(1)dan scp(1)halaman manual untuk opsi.

Mohammad Hedayati
sumber
10

Anda dapat menggunakan salinan aman scp .

Dari Anda shell lokal:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Contoh ini akan menyalin melalui ssh dari /path/of-the/tar.archive dari hosting Anda ke / home / mydirectory / backups /

Opsi tambahan:

-C : Mengaktifkan kompresi

pl1nk
sumber
6

Saya memiliki masalah yang sama. Inilah solusi mudahnya: -

  1. Buka nautilus (file explorer)
  2. Klik + Other Locationsdi bagian bawah panel kiri.
  3. Di bagian bawah ada strip Connect to server. Tulis alamat ssh di kotak input seperti ssh://111.222.333.444/.
  4. Masukkan nama pengguna dan kata sandi Anda di kotak dialog yang akan terbuka.
  5. Setelah otentikasi berhasil, Anda akan berada di homelokasi terpencil. Jangan ragu untuk memindahkan file ke sana-sini.
rushi
sumber
Jawaban bagus! Sederhana dan paling dekat dengan jawaban untuk pertanyaan aktual, yaitu Bagaimana Anda dapat dari dalam komputer remote ssh. Jawabannya adalah Anda tidak bisa, Anda melakukannya dari komputer lokal. Atau ini! Anda melakukannya secara grafis dari penjelajah Anda sehingga setidaknya untuk pengguna itu memang tampak seperti Anda dapat memindahkan file langsung dari jarak jauh ke lokal.
Kvothe
2

Jawaban lain merekomendasikan rsyncatau scp, keduanya mengharuskan Anda untuk mengetahui lokasi file yang ingin Anda salin pada mesin jarak jauh.

Jika Anda ingin dapat melihat-lihat pada mesin remote, seperti yang Anda bisa lakukan ssh, Anda ingin menjalankannya sftp. Masuk ke server sangat mirip ssh, tetapi begitu Anda masuk, ketik helpuntuk mendapatkan daftar perintah - memungkinkan Anda bergerak di kedua mesin lokal dan jarak jauh, dan mentransfer file bolak-balik dengan mudah.

Xanthir
sumber
1

Sangat aneh bahwa itu tidak mungkin dari dalam ssh. Di terminal reguler, seseorang dapat mengirim / menerima file menggunakan perintah zmodem.

Ini membantu untuk google zssh: http://zssh.sourceforge.net/ . Satu harus menjalankannya sebagai pembungkus ke aslinya ssh.

Victor Sergienko
sumber