Sinkronkan folder antara 2 komputer, dengan pengamat sistem file sehingga setiap kali file diubah, segera direplikasi

20

Saya sudah:

  • server Linux yang saya hubungkan melalui SSH pada IP 203.0.113.0 port 1234

  • komputer di rumah (di belakang router), IP publik 198.51.100.17, yang merupakan Debian atau Windows + Cygwin

Apa yang paling mudah untuk memiliki folder yang /home/inprogress/ disinkronkan (di kedua arah), agak mirip rsync, tetapi dengan pengamat sistem file , sehingga setiap kali file diubah, segera direplikasi di sisi lain? (yaitu tidak perlu memanggil program sinkronisasi secara manual)

Saya mencari solusi command-line / no-GUI, karena server tidak memiliki kepala.

Apakah ada solusi bawaan Linux / Debian?

Basj
sumber
7
Anda menggambarkan syncthing.
Kusalananda
Ada lsync, tapi saya tidak tahu apakah itu berfungsi berguna untuk sinkronisasi dua arah.
Ulrich Schwarz
lsync, csync2, inotify + rsync, tapi saya lebih suka menggunakannya dalam pengaturan jaringan lokal.
Rui F Ribeiro
2
Pada tingkat filesystem, ini terdengar seperti OCFS2, atau bahkan RAID 1 lebih dari NBD
roaima
3
Sinkronisasi satu arah mudah. Sinkronisasi dua arah menyiratkan resolusi konflik (ya, itu AKAN terjadi di beberapa titik), yang pada gilirannya berarti semacam UI (meskipun tidak diperlukan GUI).
jcaron

Jawaban:

23

Mengikuti komentar @ Kusalananda, saya akhirnya menghabiskan beberapa jam menguji Syncthing untuk use case ini dan ini bekerja dengan baik. Secara otomatis mendeteksi perubahan di kedua sisi dan replikasi sangat cepat.

Contoh: bayangkan Anda bekerja secara lokal di server.pydalam perangkat lunak Notepad favorit Anda, Anda menekan CTRL + S (Simpan). Beberapa detik kemudian secara otomatis direplikasi di server jauh (tanpa dialog sembulan).

Satu hal hebat yang saya perhatikan adalah Anda tidak perlu memikirkan IP komputer rumah dan server dengan Syncthing: setiap "perangkat" (komputer, server, telepon, dll.) Memiliki DeviceID yang unik dan jika Anda berbagi ID dengan perangkat lain, itu akan mengetahui secara otomatis bagaimana mereka harus terhubung satu sama lain.

Melakukan:

  • Sisi komputer rumah (Windows atau Linux):

    Gunakan alat konfigurasi di-browser Syncthing yang normal

  • Sisi VPS:

    Pertama-tama sambungkan VPS dengan penerusan port:

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    Opsi terakhir akan mengarahkan alat konfigurasi web Syncthing VPS mendengarkan pada port 8384 ke port 8385 komputer di rumah.

    Kemudian jalankan ini di VPS:

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    Kemudian pada browser komputer di rumah, buka http: // localhost: 8385 : ini akan menjadi konfigurasi Syncthing VPS!


Solusi lain yang saya coba:


Keuntungan tambahan dari Syncthing yang baru saja saya perhatikan:

  • Anda dapat mengurangi fsWatcherDelaySdalam config.xmldari 10ke 2detik sehingga setelah melakukan CTRL + S, 2 detik kemudian (+ waktu untuk mengunggah, yaitu kurang dari 1 detik untuk file teks kecil) ada di komputer lain

  • jika Anda menyinkronkan dua komputer yang berada di jaringan lokal yang sama (hanya dengan memberikan DeviceID satu sama lain, tidak perlu peduli dengan alamat IP lokal), secara otomatis akan melihat bahwa ia tidak perlu transit melalui internet, tetapi dapat berurusan secara lokal. Ini hebat dan memungkinkan sinkronisasi kecepatan sangat cepat (4 MB / s!) Dari phone <--> computerkeduanya terhubung ke router rumah yang sama melalui WiFi ... ... sedangkan itu akan terjebak pada 100 KB / s pada ADSL dengan sinkronisasi Dropbox ! (ADSL saya terbatas pada 100 KB / dtk saat diunggah)

Basj
sumber
@sudodus Seorang teman sudah merekomendasikannya kepada saya beberapa minggu yang lalu, dan saya telah mencobanya untuk komputer <-> sinkronisasi telepon, tetapi saya tidak membayangkan itu akan bekerja dengan baik untuk server pengembangan juga! Edit kode Anda, tekan save, 1 2 3 ada di komputer lain!
Basj
1
+1. Saya memiliki masalah yang sama selama beberapa waktu, menggunakan rsync + beberapa skrip selama bertahun-tahun, dan akhirnya mencoba sinkronisasi, csync, serempak, dan beberapa lainnya 2 bulan lalu. Bekerja dengan baik, dengan sejumlah komputer, dan bahkan ketika beberapa dari mereka tidak memiliki koneksi jaringan permanen. Dapat merekomendasikan 100%.
Guntram Blohm mendukung Monica
1
Hebat bahwa Anda telah menguji semua solusi berbeda ini @GuntramBlohm! Jika Anda memiliki beberapa menit untuk mengirim jawaban untuk memberikan umpan balik / perbandingan antara sinkronisasi, rsync, csync, serentak, dll. Pro / kontra untuk masing-masing, akan sangat menarik untuk referensi di masa mendatang!
Basj
16

Kedengarannya seperti Unison yang harus melakukan pekerjaan.

Unison adalah alat sinkronisasi file untuk OSX, Unix, dan Windows. Ini memungkinkan dua replika kumpulan file dan direktori untuk disimpan pada host yang berbeda (atau disk berbeda pada host yang sama), dimodifikasi secara terpisah, dan kemudian dimutakhirkan dengan menyebarkan perubahan dalam setiap replika ke replika yang lain.

Itu memang memiliki GUI opsional yang dapat membuat penyelesaian konflik agak lebih mudah, tetapi semuanya juga dapat dilakukan menggunakan antarmuka pengguna berbasis teks. Anda juga dapat menentukan cara menyelesaikan konflik untuk operasi yang tidak dijaga sepenuhnya.

Ada komponen pengamat file (fsmonitor) untuk memicu sinkronisasi kapan pun diperlukan. Cari "repeat watch" di manual untuk detailnya.

Sepertinya Debian memiliki versi yang tepat (2.48+) yang dikemas di luar kotak .

TooTea
sumber
Terima kasih! Apakah file watcher fsmonitor termasuk di luar kotak dengan Unison, atau kita harus menginstal alat ini dan menghubungkannya dengan Unison secara manual?
Basj
1
@ Basj Sudah termasuk dalam versi yang cukup baru dan sangat mudah untuk diatur. Saya telah menambahkan tautan ke manual.
TooTea
Saya menggunakannya di masa lalu di Mac lama. Itu hanya bekerja dengan kerumitan minimum. Tidak tahu apakah itu sesuai untuk skenario server.
Rui F Ribeiro