Bagaimana rsync menyelesaikan konflik?


14

Bagaimana jika mesin A dan mesin B berbagi memiliki direktori yang sebelumnya disinkronkan melalui rsync, dan A mengubah file dan B mengubah file yang sama, dan Anda rsyncdari A ke B?

Apakah mungkin ada konflik penggabungan git?

Bisakah konflik dengan mudah diselesaikan?

Jawaban:


25

Rsync tidak mencoba menyelesaikan konflik. Ini bukan tugasnya. Rsync bahkan tidak memiliki cara untuk mendeteksi bahwa kedua belah pihak telah memodifikasi file, karena tidak memiliki informasi tentang leluhur yang sama.

Dengan opsi default, file sumber disalin tanpa syarat ke tujuan, menimpa file tujuan. Dengan opsi -u, file sumber disalin hanya jika file tujuan hilang atau lebih tua dari file sumber. Dengan opsi --ignore-existing, file sumber hanya disalin jika file tujuan tidak ada.

Jika Anda ingin mendeteksi konflik, Anda memerlukan alat yang mengetahui kapan file terakhir disinkronkan, sehingga dapat membedakan {tujuan = versi lama, sumber = versi baru} dari {tujuan = versi baru 1, sumber = versi baru 2 }. Gunakan Unison , yang melakukan hal itu. Unison adalah sinkronisasi dua arah: menyalin file yang telah dimodifikasi sejak sinkronisasi terakhir ke sisi di mana file belum dimodifikasi. Jika tidak ada pihak yang dimodifikasi, atau jika kedua belah pihak telah dimodifikasi secara identik, itu tidak melakukan apa-apa. Jika kedua belah pihak telah dimodifikasi dengan cara yang berbeda, ini memberitahu Anda dan memungkinkan Anda memilih untuk melompat, menyalin satu arah atau menyalin ke arah lain.

Jika Anda menginginkan resolusi konflik otomatis, yaitu penggabungan otomatis (bila memungkinkan - selalu ada kasus di mana penggabungan manual diperlukan), gunakan sistem kontrol revisi seperti git.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.