Sinkronkan direktori lokal dengan direktori jarak jauh di Linux

14

Saya memiliki folder dengan beberapa file di dalamnya, dan beberapa ruang di server web. Saya ingin melakukan sinkronisasi dua arah antara folder lokal dan yang jauh di linux, hanya pada waktu modifikasi. Bagaimana saya melakukan ini? tapi saya tidak bisa menginstal apa pun di server, untuk semua maksud dan tujuan itu hanya ruang.

Catatan: Saya sudah menyiapkan pasangan kunci rsa, sehingga itu bisa terjadi secara diam-diam.

Andrew Redd
sumber

Jawaban:

12

Alat pilihan untuk sinkronisasi searah adalah rsync, dan alat pilihan untuk sinkronisasi dua arah adalah Unison . Keduanya membutuhkan eksekusi yang tersedia di kedua sisi. Jika Anda dapat membuat file yang dapat dieksekusi di sisi server, jatuhkan biner serentak dan buatlah itu dapat dieksekusi.

Jika Anda memiliki Linux, * BSD, Solaris atau Mac OS X secara lokal, Anda mungkin dapat menggunakan sistem file FUSE untuk membuat ruang server web muncul sebagai sistem file lokal - sshfs harus bekerja karena Anda tampaknya memiliki akses ssh. Kemudian gunakan serempak "secara lokal".

Perhatikan juga bahwa sebagian besar perangkat lunak kontrol versi (CVS / Subversion serta VCS yang didistribusikan) memiliki sinkronisasi sebagai fitur by-the-way (check in di satu mesin dan keluar di yang lain).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
4

Jika diinstal di server, gunakan rsyncbuild untuk pekerjaan itu.

Untuk mendapatkannya dua arah lakukan ini (kutipan dari http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Untuk bidirectionally sinkronisasi direktori /src/foopada hostAke /dest/fooatas hostB, termasuk semua sub-direktori, Anda akan menjalankan perintah ini di hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

Perintah pertama mendorong semua file yang baru di hostAke hostB.

Perintah kedua akan menarik semua file yang baru di hostBke hostA. Opsi kritis adalah:

saat menyalin, Anda harus menjaga waktu modifikasi file. -amelakukan ini dan hal-hal lain;

Jika Anda ingin menghemat waktu modifikasi saja, gunakan -tsaja.

Untuk melewati semua file yang lebih baru di tujuan: -ulakukan ini.

tante
sumber
sejauh yang saya baca rsync tidak melakukan dua arah dan ketika saya mencoba itu memberi saya kesalahan "versi protokol tidak cocok - apakah shell Anda bersih?"
Andrew Redd
hostanswers.net/linux-hosting/rsync-protocol-version-mismatch dapat membantu Anda memperbaiki versi ketidakcocokan versi. Untuk hal dua arah saya memperbarui jawaban saya.
tante
1
Rsync sama sekali tidak disesuaikan dengan sinkronisasi dua arah. Untuk satu hal itu tidak akan memperingatkan Anda jika ada konflik. Gunakan Unison sebagai gantinya, itu adalah alat yang tepat untuk pekerjaan itu.
Gilles 'SO- stop being evil'
1
Ini sangat buruk jika server A di masa depan dari server B. Dalam kasus saya, saya 13 jam lebih awal dari server jarak jauh.
Tim Post
1

Setiap kali Anda membutuhkan sinkronisasi antara dua folder rsyncadalah pilihan yang fleksibel. Masalahnya adalah, rsync itu tidak akan mendukung protokol ftp. Solusi yang bagus untuk ini adalah curlFtpFS :

CurlFtpFS adalah sistem file untuk mengakses host FTP berdasarkan FUSE dan libcurl.

Dengan curlFtpFs cukup mudah untuk memasukkan folder ftp jarak jauh di sistem berkas Anda.

Ini adalah contoh singkat yang menunjukkan penggunaan kedua alat:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Baca halaman manual untuk informasi lebih lanjut.

Jika Anda tidak ingin upaya seperti itu untuk menginstal curlFtpFS dan hanya ingin menyimpan beberapa file dalam sinkronisasi, ada banyak alat ftp yang menawarkan fitur sinkronisasi seperti:

  • FTPSync.pl - skrip PERL sederhana untuk menjaga direktori lokal dan remote tetap sinkron
  • weex - klien FTP non-interaktif untuk memperbarui halaman web
  • filezilla - GUI FTP client dengan banyak fitur
  • ...
echox
sumber
1. Rsync tidak baik untuk sinkronisasi dua arah , gunakan Unison sebagai gantinya. 2. Dari mana asal FTP? penyebutan kunci RSA dalam pertanyaan ini agaknya menyarankan ssh (dan dengan demikian sshfs).
Gilles 'SO- stop being evil'
Anda benar, FTP tidak disebutkan dalam pertanyaan. Sejujurnya saya pikir itu adalah kombinasi dari "ruang web" dan "itu hanya ruang." dan sedikit kelelahan saya kemarin.
echox