Bagaimana saya bisa menyinkronkan folder rumah saya melalui jaringan dan internet?

8

Saya menggunakan laptop saya dengan Ubuntu-desktop untuk melakukan semua pekerjaan saya, tetapi saya juga memiliki desktop low-end di kantor saya hanya duduk di sana. Saya telah memutuskan untuk menginstal Ubuntu-server di atasnya dan menggunakannya untuk mencerminkan seluruh folder rumah laptop saya, untuk mempermudah ketika saya memutuskan untuk memformat hard-disk laptop saya.

Setiap kali saya sedang bekerja, kedua mesin terhubung ke jaringan dan berkomunikasi dengan mudah (dan berkecepatan tinggi) melalui ssh. Ketika saya sedang tidak bekerja, desktop masih dapat diakses melalui ssh. Idealnya, sinkronisasi akan dilakukan secara otomatis di latar belakang, setiap kali saya mengubah sesuatu. Hanya perlu satu cara: perubahan yang saya lakukan pada laptop harus disinkronkan ke server, tetapi kebalikannya tidak perlu.

Saya tahu ada perangkat lunak untuk ini di luar sana, pertanyaan saya adalah: Perangkat lunak apa yang dapat saya gunakan untuk mencapai tujuan di atas dan juga mengambil keuntungan penuh dari kecepatan jaringan lokal ketika saya sedang bekerja? Karena saya kadang-kadang akan berurusan dengan file besar, proses sinkronisasi perlu menyadari bahwa kedua komputer berbagi jaringan lokal, dan kemudian mengambil keuntungan dari itu (bukannya selalu menyinkronkan melalui internet).

Untuk lebih jelasnya, sinkronisasi melalui jaringan sebenarnya lebih penting bagi saya di sini daripada sinkronisasi melalui internet. Saya idealnya perangkat lunak akan memeriksa apakah yang pertama tersedia dan, jika tidak, coba yang kedua; tetapi jika itu tidak mungkin, kasus pertama adalah prioritas saya.

Semoga ini tidak terlalu lama. Terima kasih sebelumnya.

Malabarba
sumber

Jawaban:

11

Jika Anda hanya dapat terhubung ke server kantor Anda melalui SSH, maka pilihan terbaik Anda adalah menggunakan rsync : ia dapat menggunakan SSH sebagai protokol transport dan menggunakan algoritma pintar untuk mempercepat transfer file besar, dengan hanya mengirim blok yang diubah.

Karena Anda hanya perlu sinkronisasi satu arah, cukup atur otentikasi SSH tanpa kata sandi dari laptop Anda ke server kantor, dan kemudian Anda bisa mulai dengan perintah sesederhana:

rsync -e ssh -a $HOME/ myuser@officeserv:

menambahkan --includedan --excludeopsi untuk memperbaiki daftar file / direktori yang ingin Anda sinkronkan. Misalnya, mentransfer pengaturan program ("file dot") dapat berisiko jika kedua komputer tidak menjalankan OS yang sama (versi yang sama). Saran saya adalah mulai dengan mengecualikan semua "file dot" (jadi, gunakan --exclude="$HOME/.[a-z]*") dan kemudian secara selektif menambahkan direktori konfigurasi program yang dapat dibagikan dengan aman (ini harus dilihat pada program berdasarkan program). Selain itu, cache dan browser web $HOME/.cacheselalu dapat dikecualikan. Lihat bagian "ATURAN FILTER" di rsynchalaman manual untuk diskusi terperinci tentang sintaksis sertakan / kecualikan aturan.

Namun, rsynctidak memiliki mode "operasi kontinu", jadi Anda harus menjalankannya secara berkala dari crontab Anda .

Riccardo Murri
sumber
Ini terdengar bagus. Saya akan mengujinya segera setelah saya menginstal server. Satu pertanyaan: apakah protokol SSH secara otomatis menggunakan koneksi terpendek ke server? Maksud saya: apakah akan terhubung melalui jaringan lokal jika klien dan server berada di jaringan kantor, atau akankah ia selalu mencoba koneksi internet?
Malabarba
Omong-omong, Anda benar tentang cache browser. Ada saran lain dari folder yang harus saya kecualikan? Tujuan saya adalah menyinkronkan semua file pribadi, profil, pengaturan, dan file konfigurasi.
Malabarba
1
@ Bruce Connor: SSH akan terhubung ke host jarak jauh menggunakan algoritma IP routing yang biasa. Teks jawaban yang diperbarui dengan saran untuk daftar pengecualian awal.
Riccardo Murri
Terima kasih. Untuk menghindari konflik, saya mungkin menyinkronkan folder beranda laptop saya ke subfolder di server (dan bukan folder home server yang sebenarnya).
Malabarba
@riccardomurri oleh "otentikasi SSH tanpa kata sandi" maksud Anda berdasarkan keyfile? atau sesuatu yang lain?
david.libremone
3

Saya akan menyarankan menggunakan rdiff-backup melalui rsync. Cukup banyak hanya rsync ++.

tidak seperti rsync yang hanya 1-1 cermin yang mentransfer diffs, rsync memiliki mekanisme sejarah. Jadi, jika Anda mengacaukan dan menghapus sesuatu yang penting, Anda dapat kembali ke seminggu yang lalu dan mendapatkannya kembali.

Di "server" ubuntu Anda hanya perlu menjalankan ssh untuk menginstal apt-get install rdiff-backup.

pada klien. Saya akan menjalankan ini secara manual .. atau melalui crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Jika Anda membuka port 22 Anda ke internet .. Anda harus dapat menjalankan skrip yang sama dengan cara apa pun .. lakukan saja nama host Anda tetapkan secara lokal ke IP lokal Anda.

yaitu. backupSrv.penguins.org akan menyelesaikan ke IP eksternal. 2.3.4.5 tetapi di dalam lan Anda: ke 192.168.1.253

csgeek
sumber
Saya pikir skrip Anda kehilangan beberapa jeda baris.
Malabarba
2

Tidak ada solusi lengkap dan pra-paket untuk masalah Anda yang saya tahu. Anda mungkin harus menulis sendiri skrip kecil untuk itu.

Sinkronisasi itu sendiri dapat dilakukan oleh rsync, seperti yang sudah dijelaskan oleh Riccardo Murri. Rsync hanya mentransfer bagian file yang diubah, sehingga sangat cocok untuk tugas ini.

Anda dapat menggunakan NetworkManagerDispatcher untuk menjalankan skrip pada koneksi / pemutusan antarmuka jaringan. Jadi, Anda dapat menulis skrip yang memeriksa apakah Anda berada di jaringan yang benar dan kemudian memanggil rsync. Dengan cara ini data Anda akan disinkronkan secara otomatis ketika Anda terhubung ke jaringan perusahaan Anda.

Untuk menyinkronkan data Anda secara berkala, Anda dapat menggunakan cron, sebagaimana telah disebutkan.

Anda juga harus mempertimbangkan keamanan saat menggunakan rsync via ssh. Untuk menyinkronkan tanpa campur tangan pengguna, Anda akan memerlukan file kunci kata sandi. Siapa pun yang memiliki keyfile ini dapat memperoleh akses ke server miliknya. Saya sangat merekomendasikan untuk mengenkripsi folder rumah Anda untuk melindungi data di notebook dan di server.

Ilmuwan gila
sumber
1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox harus bagus untuk Anda, berfungsi di Linux, mac, windows, pengaturan dan manajemen yang mudah.

Unduh DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Bacalah - ini mendukung sinkronisasi melalui symlink dan jika ada dokumen, grafik, spreadsheet yang harus Anda sinkronkan - Anda masih dapat menyimpan salinannya di dropbox atau menyimpannya secara permanen di lokasi dropbox untuk menghemat kerumitan.

rihatum
sumber
Saya tidak percaya Anda dapat mengatur Dropbox Anda menjadi folder Beranda Anda (setidaknya belum).
Matius
superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Sudah membaca - ini mendukung sinkronisasi melalui symlink dan jika ada dokumen, grafik, spreadsheet tertentu, Anda harus disinkronkan - Anda masih dapat menyimpan salinannya di dropbox atau menyimpannya secara permanen di lokasi dropbox untuk menghemat kerumitan.
rihatum
1
Terima kasih, tapi saya sudah menggunakan platform dropbox. Apa yang saya cari di sini adalah sesuatu yang memungkinkan saya menyinkronkan banyak GB file tanpa biaya, dan mengambil keuntungan dari jaringan lokal.
Malabarba
1

Coba Sparkleshare: http://sparkleshare.org/

Ada klien di repo Ubuntu dan memiliki instruksi tentang cara menyiapkan server di situs web mereka.

pengguna60876
sumber
tampak seperti program yang bagus - solusi paling tidak hack; versi 1.0 dirilis bulan lalu.
Abe
0

Solusi terbaik untuk 2015 adalah Seafile: https://www.seafile.com/en/download/

Pengembang Sparkleshare mengatakan sendiri alat mereka baik untuk banyak file teks kecil dan terutama, tetapi tidak begitu baik untuk file yang lebih besar dan biner.

Dan dalam hal kinerja itu mengungguli Sparkleshare dan Owncloud.

Selain itu, jauh lebih sedikit sumber daya ressource daripada OwnCloud - sehingga sebuah instance dapat berjalan pada Banana atau Raspberry tanpa masalah sebagai komputer yang beroperasi 24/7. (Saya akan merekomendasikan Pi Pisang, karena jaringan Gigabit dan antarmuka SATA, itu adalah pilihan yang baik untuk file server setidaknya untuk saya.)

Saya menyinkronkan folder rumah saya dengan tiga komputer. Saya mengecualikan dotfile, mereka ditangani melalui git repo dan beberapa logika sekitar karena - seperti yang Ricardo sebutkan - ada beberapa masalah dalam berbagi dotfile dan konfigurasi lainnya melalui komputer yang berbeda, bahkan ketika itu adalah OS dan rilis yang sama. Pikirkan tentang monitor.xml misalnya, atau beberapa tata letak yang berbeda untuk IDE pada laptop Anda dan desktop multiscreen - atau program yang dibuka di kedua komputer.

Selain sinkronisasi, saya membuat cadangan data ini - melalui borgbackup. Ini adalah program cadangan baru yang sangat bagus, yang melakukan deduplikasi, sangat cepat setelah pencadangan awal dan dan memiliki banyak fitur yang tidak dimiliki banyak alat.

Ini pengaturan yang sempurna bagi saya.

simpatik
sumber