Apakah ada solusi cadangan Linux yang berfungsi yang menggunakan inotify?

17

Dibutuhkan selamanya untuk membuat cadangan. Sebelum kita bisa mempercayai btrfs atau ZFS untuk membackup snapshot tambahan, bukankah menyenangkan jika ada daemon yang menggunakan inotify untuk melacak file mana yang benar-benar berubah sehingga backup akan berjalan lebih cepat? Di mana program ini?

Bagaimana cara mencadangkan kotak Linux saya tanpa harus merayapi seluruh sistem file setiap saat? Saya ingin sebuah program yang akan mendeteksi foto-foto baru atau yang diubah, kode sumber, dll dan mengantriya untuk disalin ke NAS saya.

joeforker
sumber
Anda belum benar-benar memberikan banyak informasi di sini, terutama mengenai apa yang saat ini Anda gunakan untuk membuat cadangan, jenis data apa. Ada beberapa perangkat lunak cadangan yang menggunakan jurnal untuk melacak perubahan pada sistem file, dan kemudian merujuk ke jurnal itu selama cadangan. Apa sebenarnya yang Anda coba cadangkan, ke jenis perangkat / aplikasi, apa sifat data, dan apa metode Anda saat ini untuk mencadangkannya?
WerkkreW
@WerkkreW, saya tidak berpikir apa yang dia coba backup adalah yang terpenting. Saya menduga apa pun yang memungkinkan untuk pencadangan berbasis acara akan menarik untuk dipelajari. Permintaannya tidak biasa, OSX memiliki mesin waktu yang berbasis acara.
Zoredache
Saya masih merasa pertanyaan itu perlu sedikit klarifikasi sebelum dapat dijawab.
WerkkreW
1
@Zoredache, tentu saja apa yang saya cadangkan itu penting! Jika itu tidak penting ... oh tunggu ;-) Saya ingin mencadangkan direktori rumah saya tanpa memiliki mesin yang tidak dapat digunakan selama n jam yang diperlukan untuk rsync untuk merayapi semuanya, ketika satu-satunya barang baru adalah satu set foto-foto bayi saya yang baru lahir.
joeforker
3
Pertanyaan itu tampaknya sangat jelas bagi saya: Pencadangan Time Machine Mac OS X cepat karena memonitor beberapa orang sehingga ia tahu ke mana harus mencari ketika menjalankan pencadangan. Linux memiliki inotify, fasilitas yang mirip dengan fsevents, namun solusi cadangan Linux yang mencoba mendekati Time Machine (mis. Dirvish) sangat lambat karena mereka tidak memanfaatkan inotify. Apakah ada yang berhasil?
bendin

Jawaban:

11

Saya menjawab pertanyaan saya sendiri dengan "yum search inotify". Ini disebut lsyncd dan di-host di kode google.

Sayangnya sepertinya itu selalu menjalankan rsync penuh terlebih dahulu, jadi masih tidak akan membantu saya jika komputer saya tidak dinyalakan selama lebih dari 14 jam pada suatu waktu.

Lsyncd menggunakan rsync untuk menyinkronkan direktori lokal dengan mesin jarak jauh yang menjalankan rsyncd. Lsyncd mengawasi banyak direktori pohon melalui notifikasi. Langkah pertama setelah menambahkan jam tangan adalah rsync semua direktori dengan host jarak jauh, dan kemudian menyinkronkan satu file dengan mengumpulkan acara yang tidak sah. Jadi lsyncd adalah solusi cermin langsung berbobot ringan yang seharusnya mudah dipasang dan digunakan sambil menyatu dengan sistem Anda. Lihat lsyncd --help untuk opsi baris perintah terperinci.

joeforker
sumber
Itu tautan yang menarik, saya bahkan berpikir untuk mengimplementasikannya sendiri. Tetapi mengapa ia mengatakan pada halaman bahwa ia akan mengirim ulang file besar untuk setiap perubahan? Saya pikir rsync sendiri sudah akan menghindari itu?
Hanno Fietz
rsync masih harus membaca ulang seluruh file di kedua ujung untuk mentransfernya seefisien mungkin. Dokumentasi lsyncd bermaksud mengatakan bahwa ini mungkin tidak efisien untuk file besar. Untuk file besar, skema replikasi tingkat blok akan lebih sesuai.
joeforker
3

Ada sistem baru yang disebut fsnotifyyang dirancang untuk mengatasi kekurangan inotifyyang diperkenalkan untuk memecahkan masalah dnotify. fsnotifymemungkinkan Anda menonton seluruh sistem file tanpa banyak keributan. Semoga fsnotifyakan membantu menyelesaikan semua masalah cadangan Linux kami di masa depan.

joeforker
sumber
2

Anda dapat meretas sesuatu dengan incron .

 / path1 IN_CLOSE_WRITE rsync -au $ @ / $ # backuphhost: / path

hayalci
sumber
incron tidak dapat menonton direktori secara rekursif
joeforker
yah! sepertinya sangat berguna: -S
hayalci
2

Berdasarkan penelitian (bukan pengujian), sepertinya inotify tidak dapat menangani jumlah file yang sangat besar pada kebanyakan sistem dan / atau sangat lambat melakukannya. Utas di http://www.pubbs.net/kernel/200905/109416/ adalah yang paling berguna, itu menunjuk ke fitur linux baru yang tampaknya berada dalam atau menuju ke jalur utama, fsnotify, yang ada di linux 2.6.31 dan kemudian.

pengguna26055
sumber
2

Lsyncd menyinkronkan seluruh pohon yang ditonton pada startup, karena untuk 99% kasus ini adalah hal yang masuk akal untuk dilakukan. Anda ingin direktori pada host target yang Anda miliki di host lokal, jika tidak, sinkronisasi mungkin gagal dan Anda ingin menyinkronkan hal-hal yang Anda lewatkan saat dimatikan. Namun, jika Anda tahu apa yang Anda lakukan, Anda dapat mematikan sinkronisasi startup, cukup atur sinkronisasi {..., startup = false} di file konfigurasi Lsyncd.

tentang inotify, ini bukan jumlah file tetapi jumlah direktori yang memakan sumber daya. Satu direktori adalah satu arloji, terlepas dari berapa banyak file yang dikandungnya.

fanotify membangun fsnotify seperti inotify tampak sangat menjanjikan bagi orang-orang yang menonton banyak direktori, tetapi saat ini pada Linux 2.6.37 fanotify sama sekali tidak melaporkan mengganti nama (memindahkan) acara, sehingga tidak dapat digunakan untuk pekerjaan seperti ini :-(

axkibe
sumber
Bahkan penghapusan tidak diikuti oleh buat?
joeforker
1
tidak dalam tes saya, nggak :-( fanotify dirancang dengan perisai virus dalam pikiran, dan IMHO dirancang sekarang persis dengan minimum yang dibutuhkan.
axkibe
1

Saya telah menghabiskan 6 bulan mencari solusi terbaik untuk melakukan apa yang Anda coba lakukan; efisien mencadangkan ke NAS. Setelah sinkronisasi awal, semuanya halus seperti mentega. Versi terbaru Lsyncd berfungsi dengan baik. Saya telah mendokumentasikan apa yang telah saya lakukan di tautan di bawah ini. Cukup gantikan nilai folder Anda. Semoga ini membantu:

https://docs.google.com/document/d/1XpqM5h5YMwuQqzdknyDDnjcQVYGjAsyAxfYprqSnhd0/edit

Bobo
sumber