Saya telah berhasil menggunakan rsync untuk menyinkronkan direktori home saya antara laptop dan netbook saya (keduanya menggunakan ext4 dengan Linux). Satu-satunya masalah dengan itu adalah bahwa kadang-kadang saya ingin sepenuhnya mengatur ulang direktori tertentu, dan rsync melihat ini sebagai penghapusan dan pembuatan file baru, yang membuatnya sangat lambat dan tidak efisien.
Apakah ada yang tahu perangkat lunak yang menangani file bergerak dengan baik?
Saya telah menemukan bahwa serempak harus mampu melakukan ini, tetapi tampaknya tidak berhasil dalam praktiknya. Saya menguji serentak dengan menyinkronkan dua direktori lokal, masing-masing dengan file besar di dalamnya, dan masih mendeteksi langkah saya sebagai penghapusan + kreasi dan berlaku bahkan lebih lambat daripada rsync .
Terlebih lagi, jika saya mengingat dengan benar dari melihat kode sumber serentak beberapa bulan yang lalu, ia mencoba melakukan sesuatu seperti melakukan jumlah sha — dan saya tidak ingin solusi ideal saya melakukan jumlah sha — itu terlalu lambat pada umumnya file / direktori. Saya ingin sesuatu yang memperhatikan hal-hal seperti:
"Mitra sumber terakhir dari file ini tampaknya telah dihapus dan ada file baru di tempat lain di pohon direktori sumber yang memiliki nomor mdate, ukuran, dan inode yang sama, jadi saya hanya akan berasumsi bahwa ini adalah langkah dan pindahkan mitra targetnya dengan sesuai alih-alih melakukan delete + copy. "
Penting bagi saya bahwa saya dapat menyinkronkan mesin ini dengan cepat.
Ada saran?
sumber
Serentak melakukan apa yang Anda inginkan, tetapi hanya untuk sinkronisasi jarak jauh. Coba gunakan
ssh://localhost/path/to/dir
sebagai salah satu akarnya.Unison memang mendasarkan keputusannya pada konten file, itu tidak melacak nomor inode.
sumber
Anda dapat menangani file yang dipindahkan dan diganti namanya dengan rsync jika sistem file pada direktori sumber dan target memiliki dukungan untuk tautan keras. Idenya adalah membiarkan rsync merekonstruksi tautan keras sebelum transfer nyata. Anda dapat menemukan penjelasan yang bagus di sini
Kami berakhir dengan solusi sederhana yang membuat pohon tautan keras yang tersembunyi di dalam direktori sumber / target, skrip dasarnya bisa seperti ini:
Saya punya contoh skrip di GitHub . Tetapi saya menyarankan Anda untuk melakukan sejumlah besar pengujian sebelum menggunakan metode ini pada produksi.
sumber
Jika Anda ingin menyinkronkan file antara beberapa mesin, maka Anda mungkin ingin menggunakan sistem kontrol versi terpusat seperti Subversion (atau FSVS, yang menggunakan SVN sebagai backend). Bagian yang bagus adalah bahwa semua yang ada di / home Anda (yang Anda tambahkan ke kontrol versi) kemudian diversi dan dapat dengan mudah disinkronkan ke mesin lain, atau digulirkan kembali.
sumber
lsyncd juga menangani file yang dipindahkan dengan perilaku rsync + ssh, meskipun agak buggy (saya mendapatkan sekitar 15% gerakan yang ditangani sebagai delete / copy, belum menemukan alasannya). Sebagian besar waktu itu berhasil.
sumber