GNU/Linux >> Linux Esercitazione >  >> Linux

Efficienza di molti orologi Innotify o chiamate statistiche?

Sto sviluppando un software che utilizzerà inotify per tenere traccia delle modifiche su una grande quantità di file (da decine a centinaia di migliaia di file). Mi sono venute in mente queste idee:

  • un controllo per file
  • un controllo per directory principale
  • evitare inotify ed eseguire periodicamente la scansione di fs per le modifiche (non preferito)

Avrò un database di tutti i file che sto guardando e alcune informazioni statistiche di base (come mtime e dimensioni), tuttavia, dovrei dichiarare ogni file in quella directory finché non ho trovato quello che è cambiato.

Quale sarebbe più veloce, tonnellate (oltre 100.000) di orologi inotify o tonnellate di chiamate statistiche?

Penso che ridurre il numero di chiamate statistiche sarebbe meglio, ma non ne so abbastanza di inotify.

Nota:

Questo verrà eseguito su una workstation, non su un server. Il suo scopo principale è sincronizzare le modifiche (potenzialmente a un intero filesystem) tra un client e un server remoto.

Risposta accettata:

Quando read() un inotify fd, il name il campo della struttura restituita ti dice quale file è stato modificato rispetto alla directory che viene guardata, quindi non dovresti dover dichiarare ogni file in una directory dopo l'evento.

Vedi http://linux.die.net/man/7/inotify

Nello specifico:

struct inotify_event {
    int      wd;       /* Watch descriptor */
    uint32_t mask;     /* Mask of events */
    uint32_t cookie;   /* Unique cookie associating related
                          events (for rename(2)) */
    uint32_t len;      /* Size of 'name' field */
    char     name[];   /* Optional null-terminated name */
};

Il campo del nome è presente solo quando viene restituito un evento per un file
all'interno di una directory controllata; identifica il percorso del file relativo
alla directory esaminata. Questo percorso ha terminazione null e può
includere ulteriori byte null per allineare le letture successive a un limite di indirizzo
adatto.


Linux
  1. Usare Innotify per monitorare l'accesso a un file?

  2. Linux – Scopo della directory /net?

  3. Impossibile Stat /etc/sudoers:nessun file o directory di questo tipo?

  4. Trova il file quindi cd in quella directory in Linux

  5. Esclusione della directory durante la creazione di un file .tar.gz

8 Esempi di comandi Stat in Linux

Comando Stat in Linux

Spiegazione del comando Linux Stat

sys/types.h:file o directory non presenti

Cos'è `S_ISREG()` e cosa fa?

Eventi inotify mancanti (nella directory .git)