Saya memiliki folder a / dan folder jarak jauh A /. Sekarang saya menjalankan sesuatu seperti ini di Makefile:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
ketika saya membuat musik sinkronisasi, pertama-tama ia mendapatkan semua perbedaan dari server ke lokal dan kemudian sebaliknya, mengirim semua perbedaan dari lokal ke server.
Ini bekerja dengan sangat baik hanya jika hanya ada pembaruan atau file baru di masa mendatang. Jika ada penghapusan, tidak melakukan apa-apa.
Di rsync ada opsi --delete dan --delete-after untuk membantu mencapai apa yang saya inginkan tetapi masalahnya, ini tidak berfungsi pada sinkronisasi 2-arah.
Jika saya ingin menghapus file server pada syn, ketika file lokal telah dihapus, itu berfungsi, tetapi jika, karena alasan tertentu (dijelaskan setelah) saya memiliki beberapa file yang tidak ada di server tetapi ada secara lokal dan dihapus, Saya ingin menghapusnya secara lokal dan tidak disalin ke server (seperti yang terjadi).
Masalahnya saya memiliki 3 mesin dalam konteks:
- Desktop
- buku catatan
- server rumah
Jadi, terkadang, server akan memiliki file yang dihapus dengan sinkronisasi notebook, misalnya dan kemudian, ketika saya menjalankan sinkronisasi dengan desktop saya (di mana file server yang dihapus masih ada), saya ingin file ini dihapus dan tidak digunakan. disalin lagi ke server.
Saya kira ini hanya mungkin dengan database dan jalur operasi: P
Ada solusi yang lebih sederhana? Terima kasih.
Jawaban:
Coba Serempak: http://www.cis.upenn.edu/~bcpierce/unison/
Sintaksis:
unison dirA/ dirB/
Serentak menanyakan apa yang harus dilakukan jika file berbeda, tetapi Anda dapat mengotomatiskan proses dengan menggunakan berikut ini yang menerima opsi default (tidak berkonflik):
unison -auto dirA/ dirB/
unison -batch dirA/ dirB/
tidak mengajukan pertanyaan sama sekali, dan menulis ke keluaran berapa banyak file yang diabaikan (karena bentrok).sumber
:)
Anda juga dapat mencoba bitpocket: https://github.com/sickill/bitpocket
sumber
Anda dapat menggunakan Osync: http://www.netpower.fr/osync , yang berbasis rsync dengan propagasi penghapusan cerdas. itu juga memiliki beberapa opsi seperti melanjutkan eksekusi yang dihentikan, penghapusan lunak, dan kontrol waktu.
sumber
Karena pertanyaan asli juga melibatkan desktop dan laptop dan contoh yang melibatkan file musik (maka dia mungkin menggunakan GUI), saya juga akan menyebutkan salah satu program bi-directional, multi-platform, gratis dan open source terbaik sampai saat ini: FreeFileSync .
Berbasis GUI, sangat cepat dan intuitif, hadir dengan pemfilteran dan banyak opsi lainnya, termasuk kemampuan untuk menghubungkan jarak jauh, untuk melihat dan secara interaktif mengelola "tabrakan" (misalnya, file dengan cap waktu serupa) dan untuk beralih antara transfer dua arah, pencerminan dan begitu seterusnya.
sumber
Coba ini,
Saya baru saja menguji ini dan berhasil untuk saya. Saya melakukan sinkronisasi 2 arah antara Windows7 (menggunakan cygwin dengan paket rsync terinstal) dan fileserver FreeNAS (FreeNAS berjalan di FreeBSD dengan paket rsync yang sudah diinstal sebelumnya).
sumber
-u
melewatkan file yang lebih baru di tujuan, tetapi rsync tidak memiliki cara untuk melacak usia penghapusan, jadi bagaimana skrip ini bisa membedakan antara kapan file lokal baru (dan harus disimpan) atau lama (dan harus dihapus) ? Atau apakah saya salah paham?--delete-excluded
menghapus file yang ada di direktori tujuan tetapi bukan direktori sumber? Saya pikir Anda harus mendefinisikan--exclude=<filename>
jadi bukankah rsync hanya menghapus pengecualian ini? Atau apakah rsync memperlakukan semua file direktori non-sumber sebagai "tidak termasuk"?--delete-excluded
dijalankan dengan server yang sebagai sumber pertama: file ditambahkan secara lokal akan dihapus selama menjalankan bahwa (sedangkan file yang ditambahkan ke server yang sedang disalin ke target lokal). Satu-satunya file lokal yang disinkronkan kembali ke server adalah file yang juga ada di server dan dimodifikasi secara lokal (lebih baru dari versi server) - yang tidak mungkin ada dalam skenario OP. Seperti yang Anda berikan petunjuk, sinkronisasi 2-arah yang benar dari methinks tidak dapat dilakukan denganrsync
, karena status penyimpanan antar proses diperlukan.Anda dapat mencoba csync , ini adalah mesin sinkronisasi di bawah kap owncloud .
sumber
Saya sekarang menggunakan SparkleShare https://www.sparkleshare.org/
bekerja di mac, linux dan windows.
sumber
Saya tidak yakin apakah ini berfungsi dengan dua sinkronisasi tetapi agar --delete berfungsi, Anda juga perlu menambahkan parameter --recursive juga.
sumber
--recurse
adalah-r
, yang OP adalah menggunakan (tertanam dalam kelompok terkompresi-opsi-avzru
).Anda dapat menggunakan cloudync untuk menjaga folder tetap sinkron dengan remote:
Jika remote-nya adalah NFS, Anda dapat menggunakan:
sumber
Rclone adalah apa yang Anda cari. Rclone ("rsync for cloud storage") adalah program baris perintah untuk menyinkronkan file dan direktori ke dan dari penyedia penyimpanan cloud yang berbeda termasuk sistem file lokal. Rclone sebelumnya dikenal sebagai Swiftsync dan telah tersedia sejak 2013.
sumber