it-swarm.asia

Bagaimana cara menyinkronkan folder rumah antara banyak komputer?

Saya memiliki tiga komputer di rumah, dan ingin pohon /home/ 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 rsync cukup untuk melakukan ini? dan bagaimana?

116
lamcro

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:

  • Serempak - 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 berjalan 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 cara proyek dijalankan, dan sekarang memiliki sumber terbuka sepenuhnya baru (yaitu tidak ada edisi 'perusahaan' sumber tertutup) dengan kedok NextCloud , (lihat ini wawancara youtube dengan pengembang OwnCloud asli untuk detail lebih lanjut).

  • 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 pada mesin lokal. Seafile menggunakan model data 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 ditulis dalam bash dan berdasarkan rsync. Ini berfungsi pada direktori lokal dan/atau jarak jauh melalui terowongan ssh. Ini terutama ditargetkan akan 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 suatu file adalah 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-lampiran - alat baris perintah untuk shunting file di sekitar, 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 / Subversion - Gunakan sistem kontrol sumber secara langsung. Benar-benar manual dan bisa menjadi pendekatan yang sedikit rumit tapi populer dengan beberapa pengguna yang akrab dengan sistem ini dari 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 keharusan menyelesaikan konflik di mana sesuatu diubah 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 semua 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 berdasarkan pengalamatan berbasis konten yang digunakan tetapi tidak tahu pasti karena saya belum tahu 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 Sepotong Mat Honan di peretasan untuk penjelasan yang baik tentang apa yang dapat terjadi jika Anda meletakkan semua telur digital Anda dalam satu keranjang digital, jadi untuk berbicara .


Saya sarankan untuk tidak menyinkronkan seluruh folder beranda, tetapi malah memilih folder tertentu untuk disinkronkan seperti Documents/, Pictures/ dll. Ini akan menghindari rasa sakit karena dipaksa berurusan dengan masalah kecepatan/kinerja/ruang disk untuk menyinkronkan semuanya secara otomatis. 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 /

88
Tim Abell

Serentak mungkin kandidat yang baik:

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

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, Serentak dapat menyinkronkan lebih dari 2 mesin. Dari manual pengguna mereka :

Menggunakan Serentak untuk Menyinkronkan Lebih dari Dua Mesin

Serempak 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.

28
nagul

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 di git Anda mendapatkannya dengan 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.

19
Johan

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 karenanya menimbulkan konflik) Anda kemudian dapat mengatur pekerjaan rsync untuk dijalankan saat login untuk "mendapatkan perubahan" dan keluar ke "Push changes" ... 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.

6
Ira Cooke

Saya pikir Anda dapat mencapai apa yang Anda inginkan dengan lebih baik dengan memasang folder rumah NFS. Lihat artikel ini http://www.linuxjournal.com/article/4880

5
jspeaks

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 cermin hidup 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 tingkat lanjut 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.

4
eric

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/*
4
Matt Cofer

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

2
Xenoactive

Lihatlah dropbox http://www.getdropbox.com/ Lintas platform Menang/Linux/Mac

2
Boxdog

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.

1
Molly7244

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.

1
schlypel

Jika Anda juga ingin menyinkronkan konfigurasi - alat yang disebutkan di atas sama sekali 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;)

1
kolypto

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.

1
Ilari Kajaste

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.

0
Orsiris de Jong

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 tempat kerja. 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.

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, akhir-akhir ini harganya cukup terjangkau (mulai $ 150 atau lebih) dan yang bagus tidak menghabiskan banyak energi. Tidak pernah ada masalah sinkronisasi.
    Kelemahan utama: lebih lambat daripada salinan lokal

0
Rabarberski