GNU/Linux >> Belajar Linux >  >> Linux

RSync:Bagaimana cara menyinkronkan di kedua arah?

Jalankan saja dua kali, dengan mode "lebih baru" (-u atau --update flag) plus -t (untuk menyalin waktu modifikasi file), -r (untuk folder rekursif), dan -v (untuk output verbose untuk melihat apa itu lakukan):

rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a

Ini tidak akan menangani penghapusan, tetapi saya tidak yakin ada solusi yang baik untuk masalah itu hanya dengan sinkronisasi berkala.


Apakah Anda tahu Sinkronisasi File Unison?

Unison adalah alat sinkronisasi file untuk Unix dan Windows. Ini memungkinkan dua replika kumpulan file dan direktori untuk disimpan di host yang berbeda (atau disk berbeda di host yang sama), dimodifikasi secara terpisah, dan kemudian dimutakhirkan dengan menyebarkan perubahan di setiap replika ke replika lainnya. ...

Perhatikan juga bahwa ini tahan terhadap kegagalan:

Unison tahan terhadap kegagalan. Berhati-hatilah untuk membiarkan replika dan struktur pribadinya sendiri dalam keadaan yang masuk akal setiap saat, bahkan jika terjadi penghentian yang tidak normal atau kegagalan komunikasi.


Anda perlu menjalankan rsync dua kali dan saya sarankan untuk menjalankannya dengan -au :

rsync -au /local/source/* /remote/destination
rsync -au /remote/destination/* /local/source

-a (a untuk arsip) adalah pintasan untuk -rlptgoD :

  • -r Berulang ke sub direktori
  • -l Sinkronkan juga tautan simbolis
  • -p Sinkronkan juga izin file
  • -t Sinkronkan juga waktu modifikasi file
  • -g Sinkronkan juga grup file
  • -o Sinkronkan juga pemilik file
  • -D Sinkronkan juga file khusus (bukan reguler/meta)

Pada dasarnya kapan pun Anda ingin membuat salinan satu-ke-satu yang identik menggunakan rsync , Anda harus selalu menggunakan -a karena itulah yang sebagian besar pengguna harapkan terjadi ketika mereka berbicara tentang "sinkronisasi ". Jawaban lain di sini sepertinya mengabaikan bahwa terkadang konten file tetap tidak berubah tetapi pemiliknya mungkin telah berubah atau izin aksesnya mungkin telah berubah dan dalam hal ini rsync tidak akan menyinkronkan file yang bisa berakibat fatal.

Tetapi Anda juga membutuhkan -u seperti yang dikatakan rsync untuk sepenuhnya meninggalkan file/folder apa pun, jika sudah ada di tujuan dan memiliki tanggal modifikasi terakhir yang lebih baru. Tanpa -u rsync akan disinkronkan terlepas dari apakah file/folder lebih baru atau tidak.

Harap perhatikan bahwa solusi ini tidak dapat menangani file yang dihapus. Menangani penghapusan tidak mudah dilakukan mengingat situasi berikut:Sebuah file telah dihapus dari sumbernya, sekarang bagaimana caranya rsync tahu apakah file itu pernah ada dan telah dihapus (dalam hal ini harus dihapus di tempat tujuan juga) atau apakah tidak pernah ada di sumber (dalam hal ini harus disalin dari tujuan). Kedua situasi ini terlihat identik dengan rsync sehingga tidak dapat mengetahui bagaimana harus bereaksi dengan benar. Sinkronisasi sebaliknya tidak akan membantu karena dapat menyebabkan situasi yang sama:File ada di sumber tetapi tidak di tujuan. Mengapa? Apakah tidak pernah ada di tempat tujuan atau sudah dihapus? Kedua case terlihat identik dengan rsync .

Alat sinkronisasi yang andal dapat menyinkronkan file yang dihapus biasanya mengelola log sinkronisasi tentang semua operasi sinkronisasi sebelumnya. Jika log itu mengungkapkan bahwa pernah ada file dan telah disinkronkan tetapi sekarang hilang, jelas itu telah dihapus. Jika tidak pernah ada file seperti itu menurut log, itu harus disinkronkan. Dengan menyimpan semua entri log dengan stempel waktu, bahkan mungkin file yang dihapus kembali dan dihapus berkali-kali namun alat sinkronisasi akan selalu tahu apa yang harus dilakukan dan hasilnya selalu benar. rsync tidak memiliki log seperti itu, hanya bergantung pada status file saat ini dari dua sisi operasi.

Namun Anda dapat membuat sendiri perintah sinkronisasi menggunakan rsync dan sedikit skrip shell POSIX yang sudah sangat dekat dengan alat sinkronisasi seperti dijelaskan di atas. Karena saya sendiri membutuhkan alat seperti itu, inilah jawaban di Stackoverflow yang memandu Anda melalui pembuatan skrip semacam itu.


Linux
  1. Bagaimana cara membuat file jarang?

  2. Cara grep \n dalam file

  3. Cara mengurutkan file di tempat

  1. Cara Menggunakan Rsync untuk Menyinkronkan File Baru atau Berubah/Dimodifikasi di Linux

  2. Bagaimana Cara Menjadwalkan Perintah Rsync?

  3. Bagaimana cara menyalin file secara transaksional?

  1. Menyinkronkan Direktori Di Kedua Arah Dengan Rsync?

  2. Bagaimana Mengganti Nama File di Linux?

  3. Menggunakan rsync untuk Menyinkronkan File