rsync lewat VPN: sisi mana yang menjadi sumber kebenaran?
Terowongan memberi Anda jalur, bukan kebijakan penggabungan. Pilih salinan yang berwenang, pratinjau salinan satu arah, lalu putuskan secara terpisah apakah penghapusan ikut berpindah.
Dua server, satu VPN, satu direktori yang harus ada di kedua tempat, dan satu perintah yang mudah dijalankan tetapi sulit dibatalkan. Sebelum mengetiknya, putuskan salinan mana yang berwenang, karena setiap pertanyaan rsync berikutnya bergantung pada jawaban itu. Replika satu arah, folder kerja bersama, dan arsip berversi memerlukan aturan berbeda untuk perubahan dan penghapusan. Terowongan menyediakan jalur dan tidak berpendapat tentang satu pun dari itu.
Putuskan salinan mana yang menang sebelum mengetik perintah
Tulis arahnya dalam satu kalimat, termasuk nama host dan jalur di setiap sisi, dan dapatkan persetujuan dari pemilik data. Dalam panduan ini sumbernya adalah /srv/publish/ dan tujuannya adalah akun di fileserver.example yang hanya boleh menulis di /srv/mirror/.
Pastikan fakta transportasi sebelum menyalin: kunci host SSH sudah diverifikasi, akun tujuan dapat menulis di area replika dan tidak di tempat lain, dan kedua host memiliki versi rsync yang kompatibel. Prasyarat ini mencegah kesalahan perencanaan kecil menjadi insiden izin. Semuanya juga memberi tahu Anda akun mana yang akan muncul di log tujuan ketika ada yang salah.
Pratinjau salinan dan baca daftar terperinci
Jalankan salinan terlebih dahulu dengan tanda pratinjau dan simpan keluarannya. Perubahan terperinci memberi tahu Anda apa yang akan terjadi pada setiap jalur, yang jauh lebih berguna daripada ringkasan setelah selesai. Simpan keluaran di catatan perubahan agar proses berikutnya punya pembanding.
rsync -rt --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/
Garis miring di akhir itu penting. Di sisi sumber, itu berarti isi direktori tersebut, sedangkan menghilangkannya menambahkan satu tingkat direktori bernama sesuai sumber. Panduan rsync mendokumentasikan kedua bentuk bersama tanda untuk mempertahankan metadata, dan kumpulan opsi yang Anda butuhkan bergantung pada data, bukan pada kebiasaan.
Baca setiap baris terhadap tujuan yang Anda maksudkan. Menghapus tanda pratinjau menjalankan penyalinan dan dapat menimpa file, dan tanpa opsi penghapusan file berlebih yang sudah ada di tujuan tetap berada di tempatnya. Ini hanya default yang aman jika Anda benar-benar telah memutuskan bahwa file usang yang tertinggal dapat diterima. Jika jawabannya tidak, keputusan penghapusan di bawah inilah yang harus diambil, bukan tanda tambahan yang ditaburkan ke perintah ini.
Lalu putuskan apakah penghapusan ikut berpindah
Menjadikan tujuan sebagai cermin adalah keputusan kedua, bukan penyempurnaan yang pertama. Pratinjau secara terpisah, dengan tanda penghapusan ditambahkan dan tidak ada hal lain yang diubah, sehingga perbedaan dalam daftar sepenuhnya milik keputusan itu.
rsync -rt --delete --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/
Penghapusan membuang file berlebih di sisi penerima dalam cakupan yang disinkronkan, itulah sebabnya jalur sumber yang salah, direktori yang tidak ter-mount, atau filter yang mengecualikan lebih dari yang dimaksudkan dapat membuat proses yang merusak tampak seperti cermin yang bersih. Daftar pratinjau adalah satu-satunya tempat perbedaan itu terlihat sebelum menjadi mahal. Simpan salinan pemulihan independen di tempat data membenarkannya, dan ingat bahwa cermin mereproduksi penghapusan tak sengaja dengan setia alih-alih mempertahankan riwayat.
Pratinjau juga tidak mengunci apa pun. Orang mengedit file antara uji coba dan proses sebenarnya, dan sistem file punya pendapatnya sendiri, jadi proses yang Anda setujui dan proses yang dijalankan bukan operasi yang sama kecuali kedua pohon tenang.
Dua pekerjaan satu arah tidak membuat sinkronisasi dua arah
Menjalankan perintah yang sama di kedua arah adalah cara paling umum kehilangan data dalam skenario ini. Setiap arah memperlakukan sisi lain sebagai tujuan dan dengan senang hati menimpa konten yang lebih baru, dan penghapusan dicerminkan dalam urutan jadwal dipicu.
Jika pengguna harus mengedit kedua salinan, itu keputusan produk lain: penanganan konflik, pelacakan penghapusan, dan alat yang dirancang untuk model itu. Mendekatinya dengan urutan jadwal adalah cara folder bersama mendapatkan dua versi setiap dokumen yang tidak dapat didamaikan siapa pun. Putuskan secara eksplisit alih-alih mendekatinya dengan dua entri cron dan harapan.
Otomatiskan hanya setelah kebijakan ditulis
Pekerjaan terjadwal harus membawa arah, jalur, kebijakan metadata, dan keputusan penghapusan yang disetujui. Letakkan kelima fakta itu di dalam berkas pekerjaan itu sendiri, bukan di halaman wiki yang mungkin tidak pernah dibaca administrator berikutnya. Cegah proses yang tumpang tindih, karena dua salinan yang menulis pohon yang sama sekaligus menghasilkan keadaan yang tidak dimaksudkan keduanya.
Ketika sumbernya adalah basis data aktif atau kumpulan data multi-file lainnya, ambil dulu ekspor yang konsisten dengan aplikasi atau snapshot yang terkoordinasi. Penelusuran file rekursif bukan transaksi, dan salinan kumpulan data yang berubah bukanlah salinan yang konsisten.
Catat penyelesaian dan kegagalan, dan periksa kumpulan data di tujuan selain kode keluar. Memulihkan VPN setelah gangguan memulihkan konektivitas; itu tidak mengatakan apa pun tentang apakah salinan terakhir selesai atau apakah pengeditan yang bertentangan pernah diselesaikan.