Hits :
5764
Frequently asked questions for PIrsynD
FAQ – PIrsyncD
PIrsyncD[link1] : Python Inotify Rsync Daemon
top
Τι είναι η python;
Η python είναι μία scripting γλώσσα προγραμματισμού.
Αποτελεί το προγραμματιστικό εργαλείο για την ανάπτυξη του PIrsyncD.
top
Τι είναι το inotify;
To inotify είναι ένα υποσύστημα του πυρήνα το οποίο γράφτηκε με σκοπό να αντικαταστήσει το dnotify.
Το όνομα του υποσυστήματος προκύπτει από τις λέξεις: inode + notify και η λειτουργία του είναι
να ειδοποιεί για οποιαδήποτε αλλαγή αρχείου σε επίπεδο inode.
mini παρουσίαση[link2]
top
Τι είναι το rsync;
Το rsync είναι ένα πρόγραμμα με το οποίο μπορούμε να συγχρονίσουμε δύο καταλόγους.
Οι κατάλογοι μπορεί να είναι τοπικοί σε ένα σύστημα ή απομακρυσμένοι σε κάποιο άλλο.
Το βασικό του πλεονέκτημα είναι ότι χρησιμοποιεί έναν αλγόριθμο ώστε να χωρίσει τα αρχεία σε μικρότερα (chunks)
κι ελέγχει την ακεραιότητά τους. Εάν βρεθούν διαφορές τότε αντιγράφει μόνο τις αλλαγές.
top
Τι είναι το daemon;
Η δυνατότητα να τρέχει ένα πρόγραμμα στο παρασκήνιο, χωρίς να διακόπτεται η λειτουργία του.
Στο pirsyncd παρέχει την δυνατότητα συνεχούς παρακολούθησης του kernel stack για inotify events
Ο πυρήνας μου έχει το inotify;
το subsystem παρουσιάστηκε ως patch στην έκδοση 2.6.12 κι από την έκδοση 2.6.13 αποτελεί μέρος του πυρήνα.
Μπορώ να το αφαιρέσω ή να το ενεργοποιήσω εάν δεν το έχω;
Ναι, ως υποσύστημα μπορεί να ενεργοποιηθεί ή απενεργοποιηθεί τροποποιώντας το .config αρχείο από τον πηγαίο κώδικα του πυρήνα.
top
Πως λειτουργεί;
Για κάθε αλλαγή σε επίπεδο inode καταχωρεί το αντίστοιχο event σε ένα kernel stack.
Για να δει κανείς το μέγεθος του kernel stack απλά πληκτρολογεί την εξής εντολή:
cat /proc/sys/fs/inotify/max_queued_events
Η προεπιλεγμένη τιμή είναι 16k (16384)
Γιατί να μην τρέξω ένα rsync κάνοντας χρήση του cron;
Μερικοί από τους λόγους είναι οι εξής:
α. Χρονική απόκριση.
β. Αποδοτικότητα.
γ. Ταχύτητα.
δ. Χρονο-απαίτηση.
ε. Απαίτηση crond.
α. Χρονική απόκριση.
Παρουσιάζεται το εξής πρόβλημα: κάθε πότε θα κάνω rsync μέσω cron;
Εάν πραγματοποιώ ανά μία ώρα τον συγχρονισμό ανάμεσα στους καταλόγους, προκύπτει μία χρονική απόκριση μίας ώρας.
Εάν τρέχω το rsync ανά 5 λεπτά, τότε προκύπτουν τα εξής 2 προβλήματα
- Μπορεί να μην έχει ολοκληρωθεί το αρχικό rsync
- Μπορεί να ξεκινήσει ένα νέο rsync το οποίο θα έχει λανθασμένο file listing (αρχεία με χρόνο ζωής < 5λεπτών)
β. Αποδοτικότητα.
Μέσω cron, θα εκτελείται συνεχώς το rsync ακόμα κι όταν ΔΕΝ έχουν γίνει καθόλου αλλαγές.
Με αυτό τον τρόπο προσδίδω περισσότερο φόρτο στο σύστημά μου.
γ. Ταχύτητα.
Εάν βάλω το cron entry ανά μία ώρα, αυτό σημαίνει ότι μέχρι να ολοκληρωθεί το rsync θα πάρει περισσότερο χρόνο.
Εάν οι αλλαγές είναι της τάξης των 5GB ανά ώρα τότε κι ανάλογα με το δίκτυο μπορεί να έχω και μέχρι 30 λεπτά καθυστέρηση.
Εάν βάλω το cron entry ανά 5 λεπτά, αυτό σημαίνει ότι κάθε 5 λεπτά το rsync θα προσπαθεί να ξαναδιαβάζει
το file listing τόσο στον αρχικό κατάλογο – όσο και στον προορισμένο κατάλογο, ακόμα κι εάν δεν έχουν γίνει αλλαγές ή έχουν γίνει πάρα πολλές αλλαγές.
δ. Χρονο-απαίτηση.
Το σύστημά μου χάνει την σωστή ώρα. Τι συμβαίνει τότε;
ε. Απαίτηση crond.
Θα πρέπει να εκτελείται ένας cron daemon. Τι συμβαίνει σε περίπτωση που σταματήσει να λειτουργεί.
top
Πως προφέρετε το PIrsyncD;
το προφέρω ως εξής: pi(pie) – rsync – d(aemon)
προσπαθώντας να κάνω ένα λογοπαίγνιο με το pi (π) + rsync + daemon
top
Μπορεί να αλλάξει η λειτουργία του PIrsyncD;
Ναι, πάρα πολύ εύκολα. Αντί για rsync μπορεί να τρέχει ένα εξωτερικό πρόγραμμα. Οι δυνατότητες είναι ανάλογες με την φαντασία του κάθε προγραμματιστή.
top
What about large files ?
Ok, you have a lot of large files on your source directory.
A large file sends a lot of IN_MODIFY events, but rsync command synchronize only delta differences.
So this isnt too much overkill for your system, but it is unnecessary for rsync to run.
In PIrsyncD version 20100326 or later, i have added some code to fix these unnecessaries (duplicates) inode events.
top
INOTIFY EVENTS
Formatter "highlight/html" not found
top
PYINOTIFY EVENTS
Formatter "highlight/html" not found
top
[link2] https://balaskas.gr/PIrsyncD/pyinotify.tbz