Bagaimana cara menyinkronkan folder rumah antara banyak komputer?

117

Saya memiliki tiga komputer di rumah, dan ingin /home/pohon folder disinkronkan di antara ketiganya.
File / folder apa pun (kecuali yang disembunyikan) yang dimodifikasi / ditambahkan / dihapus di salah satu dari tiga komputer diperbarui di dua lainnya.

Apakah rsynccukup untuk melakukan ini? dan bagaimana?

lamcro
sumber
9
Masalah dengan sebagian besar alat 'sinkronisasi', (termasuk rsync jika saya ingat dengan benar), adalah bahwa mereka tidak memiliki gagasan tentang tindakan pengguna. Jadi jika Anda menghapus file di komputer X, alat tidak tahu apakah (a) Anda benar-benar menghapus file di komputer X, atau (b) bahwa Anda menambahkan file itu di komputer Y. Sebagian besar alat akan menganggap (b), jadi setelah sinkronisasi mereka akan menambahkan file lagi di komputer X (alih-alih menghapusnya di komputer Y).
Rabarberski
5
@Rabarberski banyak alat sinkronisasi (termasuk Serempak atau Sinkron) menyimpan database dengan referensi ke data yang ada (karena alasan ini). Ini tidak akan membantu Anda ketika menyinkronkan folder baru untuk pertama kalinya, tetapi mereka dapat menghapus file untuk Anda (secara otomatis). Masalah sebenarnya dengan sebagian besar alat sinkronisasi adalah ketika file telah diubah di dua lokasi sebelum sinkronisasi berikutnya terjadi - dalam kasus konflik ini Anda umumnya harus melakukan penggabungan manual atau mungkin mengganti dengan versi terbaru.
Chris
2
Menyinkronkan ketika perubahan tidak dapat disalin secara instan di mesin lain benar-benar rumit dan saya belum pernah melihat program melakukannya dengan sempurna, jadi bersiaplah untuk beberapa bug, konflik, muncul kembali file. Saya akan merekomendasikan sinkronisasi hanya beberapa folder tertentu yang Anda tahu akan dikelola oleh program sinkronisasi.
Elzo

Jawaban:

90

Berikut adalah daftar hal-hal yang berpotensi memecahkan masalah ini, masing-masing menyeimbangkan pertukaran yang harus Anda buat secara berbeda sehingga Anda harus membuat pilihan sendiri dan mencoba sendiri:

  • Serentak - seperti yang disebutkan oleh orang lain, ini dijalankan secara manual, tetapi sangat cepat, dapat diandalkan dan efektif. Membutuhkan kedua mesin yang disinkronkan untuk hidup pada saat yang sama. Ini memiliki antarmuka pengguna yang bagus untuk memungkinkan Anda menangani konflik yang hampir tak terhindarkan, dan melacak dan menyebarkan penghapusan dengan benar. Aplikasi / paket grafis disebut serempak-gtk.

  • OwnCloud - Penyimpanan cloud dijalankan di server Anda sendiri. Anda akan membutuhkan mesin untuk berangkat. Membutuhkan pengaturan yang wajar. Menjalankan server web Apache 2 lengkap dan database SqlLite atau MySQL di server. Bekerja mirip dengan Dropbox dengan klien desktop, tetapi server berada di bawah kendali Anda. sunting: OwnCloud baru-baru ini telah melalui beberapa perubahan dalam bagaimana proyek dijalankan, dan sekarang memiliki sumber terbuka sepenuhnya baru (yaitu tidak ada edisi 'perusahaan' sumber tertutup) dengan kedok NextCloud , (lihat wawancara youtube ini dengan pengembang OwnCloud asli untuk lebih jelasnya).

  • SparkleShare - menggunakan git untuk menjaga file tetap sinkron. Menurut beranda: bagus untuk banyak file kecil, tidak bagus untuk banyak file besar seperti musik atau koleksi foto.

  • Seafile - Menyediakan komponen server yang dapat Anda instal di mesin lokal. Seafile menggunakan model data yang mirip dengan git untuk melacak perubahan. Menyediakan klien sinkronisasi untuk desktop, tablet, dan smartphone. Posting blog yang menjelaskan pengaturan dapat ditemukan di http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - "... alat sinkronisasi file dua arah yang ditulis dalam bash dan berdasarkan rsync. Ia bekerja pada direktori lokal dan / atau jauh melalui terowongan ssh. Ini terutama ditargetkan untuk diluncurkan sebagai tugas cron" (teks dari situs web)

  • PowerFolder - proyek GPL v2 berbasis java. Situs web utama mendorong penawaran komersial sehingga tidak jelas cara menggunakan file .jar yang disediakan.

  • Rsync - cepat dan efektif dan telah ada selama beberapa dekade, namun itu tidak menyimpan sejarah sehingga Anda harus memilih arah untuk memutuskan apakah file tersebut baru atau dihapus. Alat grafis tersedia seperti gwRsync .

  • Lsyncd - memonitor folder / file untuk memicu replikasi rsync

  • dvcs-autosync - ditulis dengan python, menggunakan git untuk menyimpan dan berbagi perubahan antar mesin, dan XMPP untuk mengkomunikasikan perubahan.

  • git-annex - alat baris perintah untuk men-shunting file, berdasarkan git. Ada langkah-langkah ilustratif di sini: http://git-annex.branchable.com/walkthrough/

  • Tonido - freeware. Menyediakan aplikasi desktop yang akan membagikan file ke perangkat lain. Juga menyediakan penawaran cloud komersial, dan komputer plug TonidoPlug.

  • BitTorrent Sync (freeware) - sinkronisasi file peer-to-peer berdasarkan BitTorrent. Saya tidak tahu banyak tentang ini karena saya tidak akan menggunakannya karena itu bukan open source dan tidak percaya untuk menyimpan data saya di dalam LAN saya, silakan mengedit jawaban ini dengan informasi yang lebih baik / pengalaman nyata.

  • SyncThing - Dikembangkan sebagai alternatif sumber terbuka untuk BitTorrent Sync. Saat ini tidak memiliki beberapa fitur canggih dari BitTorrent Sync, seperti rekan yang tidak tepercaya. Itu sedang dalam pengembangan aktif.

  • Layanan yang diinangi secara komersial seperti dropbox, ubuntu satu, google drive, apple iCloud semuanya cepat murah dan nyaman, namun semuanya memerlukan kepercayaan perusahaan dengan semua data Anda, dan memerlukan koneksi internet yang cukup cepat.

  • Git / subversi - Gunakan sistem kontrol sumber secara langsung. Benar-benar manual dan bisa menjadi pendekatan yang sedikit rumit namun populer dengan beberapa pengguna yang akrab dengan sistem ini karena menggunakannya sebagai alat pemrograman.

  • CloudFS - menyinkronkan seluruh sistem file, berbasis teknologi cluster

  • NFS mount - pada dasarnya rumah Anda tinggal di satu mesin dan Anda mengaksesnya melalui jaringan, tidak baik untuk laptop yang Anda bawa. Info lebih lanjut: http://www.linuxjournal.com/article/4880


Faktor-faktor yang perlu dipertimbangkan dalam membuat keputusan Anda:

  • Server pusat - beberapa solusi mengharuskan mesin selalu menyala (atau setidaknya saat Anda perlu menyinkronkan) agar mesin lain dapat melakukan sinkronisasi. Ini bisa menjadi salah satu mesin Anda yang ada, atau mesin yang terpisah seperti NAS. Waspadai tagihan listrik yang meningkat.

  • Otomatis / Manual / Dijadwalkan - Cara terbaik untuk menghindari penyelesaian konflik di mana ada sesuatu yang berubah pada lebih dari mesin adalah dengan memiliki program pada setiap mesin yang mengawasi perubahan dan sinkronisasi segera, dengan cara ini Anda mengurangi peluang untuk berakhir dengan banyak versi. Dengan proses manual Anda harus selalu ingat untuk menjalankan sinkronisasi.

  • Akses jarak jauh - apakah Anda ingin menyinkronkan jauh dari LAN Anda (alias rumah), pikirkan tentang implikasi keamanan ini.

  • Keamanan - apakah data Anda meninggalkan jaringan Anda dienkripsi atau tidak, seberapa aman transfer antar mesin. Bagaimana jika seseorang menangkap data Anda saat bepergian dan kemudian enkripsi ditemukan memiliki kekurangan? Siapa yang mengendalikan server yang menyimpan data Anda, apakah data dienkripsi, dapatkah Anda mempercayai pihak ketiga? Apakah Anda harus menyodok lubang di router Anda untuk mendapatkan akses jarak jauh. Berapa lama file 'dihapus' dan meta-data terkait bertahan pada perangkat yang disinkronkan dan di server pusat. Apakah Anda menyinkronkan antara penyimpanan terenkripsi dan tidak terenkripsi?

  • Memindahkan folder besar - solusi yang saya coba semuanya memiliki masalah bahwa ketika Anda memindahkan / mengganti nama file atau folder sinkronisasi tidak memahami ini dan mengunggahnya lagi sebagai yang baru dan kemudian menghapus salinan lama. Tolong bantu dengan menandai solusi apa pun di atas yang mampu menangani ini (saya menduga solusi berbasis git lakukan karena git tidak menderita karena ini karena pengalamatan berbasis konten yang digunakan tetapi tidak tahu pasti seperti apa yang saya miliki) dapat menggunakannya).

  • Kapasitas disk

  • Cadangan - sinkronisasi bukan cadangan. Hapus file penting karena kesalahan dan banyak dari yang di atas akan dengan senang hati menghapus semua salinan Anda yang lain. Saya sarankan membaca artikel Mat Honan tentang peretasan untuk mengetahui apa yang bisa terjadi jika Anda memasukkan semua telur digital Anda ke dalam satu keranjang digital, jadi untuk berbicara.


Saya sarankan untuk tidak menyinkronkan seluruh folder rumah, tetapi malah memilih folder tertentu untuk disinkronkan seperti Documents/, Pictures/dll. Ini akan menghindari rasa sakit karena dipaksa untuk berurusan dengan masalah kecepatan / kinerja / ruang disk yang secara otomatis mensinkronkan semuanya. Itu juga menghindari keharusan memelihara daftar pengecualian.

Ketika saya terus mencoba dan menemukan sesuatu yang bekerja untuk saya secara pribadi, saya akan mencoba dan terus memperbarui jawaban ini dengan info yang bermanfaat. Saya telah mengumpulkan informasi dari semua jawaban lain menjadi satu jawaban lengkap.

Referensi:

  • LinuxFormat - Februari 2014 LXF180 p31, "Hosted Storage Roundup"

peretasan / semua /

Tim Abell
sumber
Saya memiliki server tanpa akses root (yang diperlukan untuk menginstal secara bersamaan, misalnya). Apakah ada skrip yang dapat saya miliki di mesin klien saya yang tidak perlu diinstal pada server saya?
Ben Kushigian
Saya telah melihat perangkat lunak bernama freefilesync ( sourceforge.net/projects/freefilesync ) disebutkan beberapa kali di sana-sini. Mungkinkah disebutkan dalam daftar Anda?
YoungFrog
28

Serentak bisa menjadi kandidat yang baik:

Unison adalah alat sinkronisasi file untuk 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.

Sudah melakukan sinkronisasi 2 arah. Lihat pembaruan di bawah.

Saya telah belajar bahwa ada sangat sedikit hal yang tidak dapat dilakukan rsync, dan itu mungkin dapat memberikan solusi yang sama atau lebih baik, tetapi Anda harus menunggu ahli rsync muncul untuk solusi itu.

Pembaruan: Ya, Unison dapat menyinkronkan lebih dari 2 mesin. Dari manual pengguna mereka :

Menggunakan Unison untuk Menyinkronkan Lebih dari Dua Mesin

Unison dirancang untuk menyinkronkan pasangan replika. Namun, dimungkinkan untuk menggunakannya untuk menjaga kelompok mesin yang lebih besar dalam sinkronisasi dengan melakukan beberapa sinkronisasi berpasangan.

Jika Anda perlu melakukan ini, cara yang paling dapat diandalkan untuk mengatur berbagai hal adalah dengan mengatur mesin menjadi "topologi bintang," dengan satu mesin yang ditunjuk sebagai "hub" dan sisanya sebagai "jari-jari," dan dengan masing-masing sinkronisasi mesin bicara hanya dengan hub. Keuntungan besar dari topologi bintang adalah menghilangkan kemungkinan "konflik palsu" yang membingungkan yang timbul dari fakta bahwa arsip terpisah dikelola oleh Unison untuk setiap pasangan host yang disinkronkan.

nagul
sumber
Saya punya beberapa pengalaman buruk dengan berbarengan, karena alasan tertentu dari waktu ke waktu alih-alih menambahkan file baru dari komputer lain, itu menghapusnya sementara waktu lain itu berfungsi dengan baik.
jhcaiced
1
Saya sarankan mengedit contoh a / b / c untuk mengikuti rekomendasi dalam manual untuk tidak membuat loop.
Tim Abell
Mengenai referensi Anda ke rsync. Tidak itu tidak bisa dipercaya melakukan sinkronisasi dua arah. Lihatlah jawaban berikut untuk melihat mengapa serentak dapat menangani kasus yang rsync tidak bisa: stackoverflow.com/questions/4504357/…
ndemou
19

Bagaimana kalau menaruh file Anda di sistem kontrol versi seperti SubVersion atau git?

Saya tidak versi seluruh dir rumah saya, tetapi hanya beberapa subdir dengan beberapa hal penting. Tapi saya berpikir untuk pindah ke git karena sepertinya lebih baik untuk jenis pekerjaan ini. ( pencarian cepat akan mengirim Anda ke arah yang benar ).

Semoga berhasil


Pembaruan : Efek samping yang bagus dengan git adalah mudahnya memiliki file khusus komputer, karena Anda hanya perlu memiliki cabang untuk komputer itu (dan pada git Anda mendapatkannya secara default). Jadi Anda tidak perlu memiliki file yang persis sama di semua komputer, mereka hanya perlu serupa, dan memiliki cabang "utama" yang sama dengan hal-hal yang Anda inginkan di semua komputer yang berbeda.

Johan
sumber
Astaga. Gagasan menggunakan kontrol versi untuk sinkronisasi file benar-benar membuat kulit saya merayap.
JohnD
Ya idenya aneh tapi benar-benar bermanfaat. Pikirkan tentang dir seperti ~ / bin / untuk skrip pembantu pribadi, dir semacam itu sangat bagus dalam sistem kontrol versi. Sementara dir seperti .kde mungkin akan berperilaku buruk dalam sistem kontrol versi dan akan dimasukkan ke dalam daftar abaikan untuk file yang tidak ditangani.
Johan
Ini adalah cara yang bagus untuk menjaga file Anda tetap disinkronkan, Anda harus terbiasa dengan gagasan menggunakan "git add" dan "git rm" untuk menambah / menghapus file tetapi berfungsi dengan sangat baik.
jhcaiced
Saya suka ide ini karena saya mengendalikan bagian file mana dalam sampah yang saya miliki di rumah saya akan dibagikan. Satu-satunya pertanyaan adalah bagaimana mengelola komit. yaitu beberapa file harus masuk ke komit awal dan kemudian mencerminkan perubahan untuk menunjukkan bahwa mereka didasarkan pada sistem / etc / skel.
ony
Apakah memelihara beberapa cabang terpisah dengan file Anda benar-benar nyaman, ketika Anda mencoba menyinkronkan direktori? Tentu, ini berhasil, tetapi saya tidak akan merekomendasikannya untuk tugas ini. Anda umumnya dapat mengecualikan file dari sebagian besar alat sinkronisasi (baik dengan nama, folder, dll) dan untuk apa yang Anda gambarkan (menggunakannya hanya untuk beberapa sub-direktori penting), itu tidak benar-benar berguna dalam hal pertanyaan awal.
Chris
6

Masalah utama Anda ketika mencoba melakukan ini adalah memutuskan bagaimana menggabungkan perubahan, menyebarkan propaganda, dan menyelesaikan konflik. Ini sulit dilakukan dengan cara yang sepenuhnya otomatis, terutama jika Anda memiliki 3 pengaturan komputer yang digunakan oleh banyak orang.

Jika Anda memisahkan pengguna, banyak hal menjadi lebih sederhana. Karena satu pengguna tidak dapat berada di dua tempat sekaligus (dan karena itu menimbulkan konflik) Anda kemudian dapat mengatur pekerjaan rsync untuk dijalankan saat login untuk "mendapatkan perubahan" dan keluar untuk "mendorong perubahan" ... ke salah satu komputer Anda yang akan menjadi master ... jadi pada level granularity ini Anda akan menyinkronkan / home / myuser setiap kali daripada seluruh / home /. Penyempurnaan tambahan (jika orang tidak keluar) akan menjalankan skrip push setelah beberapa saat tidak aktif.

Ada banyak solusi potensial lainnya, tetapi tidak ada yang secara ajaib menyelesaikan masalah ini sejauh yang saya ketahui. Langkah pertama mungkin adalah memikirkan bagaimana Anda menggunakan mesin dan membuat kebijakan sinkronisasi yang sesuai dengan perilaku pengguna Anda.

Ira Cooke
sumber
4

Ini tidak akan sepenuhnya memberikan solusi, tetapi ini akan memberi Anda permulaan:

Atur pekerjaan cron sesering mungkin untuk mensinkronisasi ulang file. Saya menggunakan perintah seperti berikut:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh [email protected]:/path/to/home/

Ini akan menggunakan rsync untuk hanya menyalin perubahan yang diperlukan, bukan menyalin ulang semuanya setiap kali perintah dijalankan.

--stats dan --progress adalah opsional dan mungkin harus dikecualikan dari skrip Anda

isi file rsync_backup_excludes.conf saya adalah:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
Matt Cofer
sumber
Anacron akan menyinkronkan ketika mesin hidup, menghindari slot yang hilang karena downtime.
Tim Abell
Ini menyalin seluruh root lokal Anda ke folder rumah jauh. Bukan itu yang diminta OP, saya juga tidak bisa membayangkan mengapa ada orang yang menginginkan itu ...
Cerin
4

Lihat lsyncd

Lsyncd jam tangan antarmuka direktori acara pohon direktori lokal (inotify atau fsevents). Ini mengumpulkan dan menggabungkan acara selama beberapa detik dan kemudian memunculkan satu (atau lebih) proses untuk menyinkronkan perubahan. Secara default ini adalah rsync. Dengan demikian, Lsyncd adalah solusi live mirror yang ringan yang relatif mudah dipasang tanpa memerlukan sistem file baru atau perangkat blok dan tidak menghambat kinerja sistem file lokal.

Rsync + ssh adalah konfigurasi tindakan lanjutan yang menggunakan SSH untuk bertindak file dan direktori bergerak langsung pada target alih-alih mentransmisikan ulang tujuan pindah melalui kabel.

Kustomisasi berbutir halus dapat dicapai melalui file konfigurasi. Konfigurasi aksi kustom bahkan dapat ditulis dari awal dalam lapisan cascading mulai dari skrip shell hingga kode yang ditulis dalam bahasa Lua. Pemutar mulai dari skrip shell hingga kode yang ditulis dalam bahasa Lua.

eric
sumber
2

Lihatlah dropbox http://www.getdropbox.com/ Cross platform Win / Linux / Mac

Boxdog
sumber
3
Terima kasih, tapi tidak. Sudah mencobanya. Bukan itu yang saya cari.
lamcro
Dropbox luar biasa dan saya menggunakan 2GB gratis untuk menyimpan tautan, foto, dan data penting non-misi lainnya antara rumah, kantor, dan laptop saya. Bukan apa yang Anda butuhkan dalam situasi ini, tetapi menurut saya, Dropbox pasti memiliki tempatnya.
Matt Cofer
2

Pasang /homedari satu komputer ke dua lainnya. Automount bekerja dengan sangat baik untuk ini.

Xenoaktif
sumber
1

Ubuntu One mungkin yang Anda cari. Sayangnya ini masih dalam tahap beta, dan saya tidak punya pengalaman dengannya, jadi saya tidak yakin apakah itu akan berhasil untuk Anda.

Ilari Kajaste
sumber
Saya akan mengatakan ini masih dalam pengembangan berat saat ini - ada pembaruan setiap beberapa hari saat tim Ubuntu menyelesaikan masalah. Ini berfungsi, tetapi saya tidak akan merekomendasikannya ke Dropbox.
nagul
1

Jika Anda juga ingin menyinkronkan konfigurasi - alat yang disebutkan di atas benar-benar tidak berdaya: konfigurasi sering diubah, dan banyak file log akan membuat konflik sehingga tidak dapat digabungkan.
Deceision saya sederhana, dan bodoh :) Saya punya workstation Master, dan semua file dari "~" hanya disalin ke "Slave" kedua. Saat saya menyadari saya perlu memodifikasi sesuatu - saya melakukannya di Master, dan Slave menangkap perubahan ini pada sinkronisasi.

Juga, beberapa skrip bash harus berjalan berbeda pada mesin ini, jadi saya mengedit /etc/bash.bashrc saya:

ekspor OOHOST = Tuan

Sekarang, skrip tahu host mana yang mereka layani;)

kolypto
sumber
1

Coba dvcs-autosync .

Ini didasarkan pada git, menggunakan XMPP untuk memberi tahu klien terkait tentang perubahan file dan bereaksi pada peristiwa perubahan file melalui perubahan inode. Jadi selalu mendapat informasi segera setelah perubahan file, dalam kasus konflik itu bergantung pada metode terbukti git.

Saya telah menggunakannya untuk sementara waktu sekarang sebagai pengganti Dropbox melalui kunci publik SSH dan itu benar-benar berfungsi.

schlypel
sumber
0

PowerFolder - Menyinkronkan File, Folder Sinkronisasi, Penyimpanan Jarak Jauh, Pencadangan dan Berbagi File Pribadi. Sinkronkan PC rumah dan kantor, bagikan gambar liburan atau bekerja bersama dalam dokumen. Teknologi peer-to-peer aman PowerFolder berfungsi melalui Internet atau LAN.

Molly7244
sumber
0

Solusi yang akan saya pertimbangkan:

  • Dropbox.
    Kelemahan utama: tidak gratis untuk jumlah data yang masuk akal. Kalau tidak, ia bekerja tanpa cacat IMHO

  • Server NAS. Letakkan file Anda di server NAS, mereka menjadi cukup terjangkau akhir-akhir ini (dari $ 150 atau lebih) dan yang bagus tidak menghabiskan banyak energi. Tidak pernah ada masalah sinkronisasi.
    Kelemahan utama: lebih lambat dari salinan lokal

Rabarberski
sumber
Dengan NAS, Anda masih belum membahas bagaimana sinkronisasi terjadi. Memiliki NAS dan dua komputer pada prinsipnya tidak berbeda dengan memiliki tiga komputer seperti yang ditanyakan OP. Jika Anda menyarankan agar semua yang perlu disinkronkan hanya disimpan di NAS, maka itu umumnya tidak mungkin - pertimbangkan sinkronisasi file konfigurasi misalnya - mereka harus ada di setiap mesin.
kba
0

Saya menggunakan SyncTwoFolders untuk Mac dan Syncback untuk PC - yang pertama untuk tiga mac saya di rumah (termasuk laptop), dan yang kedua untuk PC saya di kantor. Kedua program memiliki berbagai opsi cadangan dan sinkronisasi yang menjadikannya mudah setelah pra-setel diatur. Mudah sekali! Saya yakin ada versi lain dari perangkat lunak serupa yang tersedia untuk Linux dan Ubuntu.

Henk ThinkTank
sumber
0

Anda dapat menggunakan skrip sinkronisasi seperti osync yang dapat menyebarkan file yang terhapus dan hanya memperbarui yang dimodifikasi. http://www.netpower.fr/osync osync berbasis rsync tetapi dapat menangani banyak skenario sinkronisasi antara folder lokal atau yang jauh melalui ssh.

Orsiris de Jong
sumber