Rsync lewat ssh, atau yang lain?

10

Saya sudah mencoba menggunakan rsync pada OSX ke Linux atau kotak Unix yang saya tidak punya banyak kontrol. Saya sudah melakukan hal seperti ini

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

Kesalahan yang dikembalikan adalah:

bash: rsync: perintah tidak ditemukan rsync: koneksi tiba-tiba ditutup (0 byte diterima sejauh ini) [penerima] kesalahan rsync: perintah jarak jauh tidak ditemukan (kode 127) di /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [penerima = 2.6.9]

Namun, setelah membaca dokumen saya mulai berpikir bahwa saya benar-benar perlu menginstal daemon rsync pada host jarak jauh.

  1. Haruskah saya menginstal server rsync pada host jarak jauh?
  2. Alternatif gratis - GUI atau non-GUI - yang tidak memerlukan instalasi apa pun pada host jarak jauh ?

Terima kasih!

Dan Rosenstark
sumber
1
Apa masalah sebenarnya yang Anda miliki dengan perintah Anda saat ini?
fideli
@ Faleli, maaf, lupa tentang itu. Mengedit pertanyaan sekarang
Dan Rosenstark
1
Terima kasih atas pertanyaan ini, tetapi bisakah Anda memberi tag rsynctolong?
Andrew Grimm

Jawaban:

21

Anda memerlukan perintah rsync di server, tetapi Anda tidak perlu menjalankan daemon.

Dapatkan biner rsync yang bekerja di server, meletakkannya di suatu tempat di rumah Anda, dan menambahkan bendera ini ke baris perintah Anda: --rsync-path=/home/user/path/to/rsync.

Jika Anda tidak ingin menyalin rsync ke server, Anda dapat menggunakan scp, atau sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

Dalam hal ini rsync akan berjalan sepenuhnya secara lokal, tetapi perubahan akan disebarkan ke server.

Tobu
sumber
Saya suka solusi itu, terutama karena servernya adalah paket hosting murah di GoDaddy dan saya ragu saya bisa menjalankan rsync di server. +1 untuk sekarang!
Dan Rosenstark
Apa rute termudah untuk menginstal sshfs di OSX? MacFuse atau ada sesuatu yang lebih mudah?
Dan Rosenstark
MacFuse + (MacFusion atau sshfs-static-leopard), saya pikir (saya bukan pengguna OSX)
Tobu
Ya MacFuse yang melakukannya. Hanya saja halaman unduh untuk binary sshfs memberi Anda biner dengan ekstensi .gz. Jadi, Anda harus mengganti nama itu alih-alih gunzip'ing itu. Mengganggu tapi baiklah sekarang! Terima kasih
Dan Rosenstark
6

Anda perlu memiliki rsync pada host jarak jauh - belum tentu server rsync (yang, saya percaya, toh tidak akan menangani koneksi ssl), tetapi rsync pada kotak lokal perlu berbicara dengan rsync pada kotak remote. Anda menggunakan ssh untuk menghubungkan keduanya.

Dengan asumsi rsync memang ada pada kotak remote, itu tidak dalam jalur pencarian default untuk shell login ssh Anda. Bergantung pada preferensi dan izin Anda pada kotak jarak jauh, Anda dapat mencoba

  • menggunakan opsi --rsync-path =
  • mengubah PATH default untuk shell ssh jarak jauh Anda
  • menambahkan alias untuk rsync di shell ssh jarak jauh
  • mengubah perintah jarak jauh yang dijalankan ke jalur absolut ke rsync

atau yang serupa. Jika rsync sebagai executable (vice server) tidak ada pada remote host, itu harus ditambahkan.

mpez0
sumber
Ini sangat membantu, jadi +1, tapi saya ingin tahu bagaimana menentukan direktori awal untuk rsync di sisi Windows jika saya menjalankannya dari Mac ke PC seperti ini: superuser.com/questions/1462861/…
Ryan
1

Tidak banyak gunanya menggunakan rsync tanpa menjalankan daemon rsync pada remote host, terlepas dari solusi sshfs kreatif yang diusulkan di atas. Seluruh gagasan efisiensi dalam rsync adalah untuk memiliki dua contoh membandingkan salinan lokal mereka dari dataset dengan menghitung checksum secara lokal, membandingkannya melalui jaringan, dan hanya mentransmisikan data aktual untuk bagian-bagian dari file-file yang sebenarnya berbeda.

Jika Anda menggunakan sshfs atau pemasangan jaringan apa pun, itu hanya menyembunyikan fakta bahwa ia harus menyalin seluruh dataset di jaringan dari host jarak jauh untuk menghitung checksum secara lokal, dan kemudian mengirimkan perbedaan di atas itu. Akan lebih cepat dan lebih murah untuk menghapus semuanya secara lokal dan 'scp -r' lot.

besar sekali
sumber
3
Tidak juga, karena rsync memeriksa apakah file dimodifikasi berdasarkan ukuran dan stempel waktu, dan itu masih jauh lebih efisien daripada scp'ing semua file. Tapi memang, mekanisme pembaruan rsync inkremental dalam file tidak masuk akal dibandingkan sshfs.
Jaap Eldering
0

Coba SCP . Karena Anda sudah mendapatkan akses ssh, Anda tidak perlu menginstal apa pun di host jarak jauh :)

Untuk menyalin file dari host jarak jauh ke localhost gunakan:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Atau salin file dari localhost ke host jarak jauh dengan:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
kayu lyar
sumber
1
Terima kasih Lee, SCP itu hebat tetapi tidak melakukan "sinkronisasi" bukan?
Dan Rosenstark
1
itu harus berupa "r" kecil:scp -r
0x4a6f4672