GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz, když se aktualizuje obsah adresáře?

Existuje adresář A jehož obsah je často měněn jinými lidmi.

Vytvořil jsem osobní adresář B kde uchovávám všechny soubory, které kdy byly v A .

V současné době jen občas spustím rsync získat soubory k zálohování z A do B . Obávám se však možnosti, že některé soubory budou přidány do A a poté odstraněn z A než dostanu šanci je zkopírovat do B .

Jaký je nejlepší způsob, jak tomu zabránit? V ideálním případě bych chtěl, aby se můj aktuální zálohovací skript spouštěl pokaždé, když se obsah A spustí nechat se změnit.

Přijatá odpověď:

Pokud máte nainstalované nástroje inotify-tools, můžete použít inotifywait pro spuštění akce, pokud je soubor nebo adresář zapsán do:

#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
    /run/backup/to/B 
done

Kde je -qq přepínač je zcela tichý, -r je rekurzivní (v případě potřeby) a -e je událost k monitorování, v tomto případě modify . Z man inotifywait :

upravit
Byl zapsán sledovaný soubor nebo soubor ve sledovaném adresáři.


Linux
  1. Jak spustíme příkaz uložený v proměnné?

  2. Jak získat počet souborů v adresáři pomocí příkazového řádku?

  3. Jak získat součet Md5 obsahu adresáře jako jeden součet?

  1. Jak získat velikost adresáře v Linuxu

  2. Jak spustit příkaz „najít“ pouze v aktuálním adresáři a ne v podadresářích

  3. Jak spustit skript shellu, když se změní soubor nebo adresář?

  1. Jak vyloučit adresář v find . příkaz

  2. Jak mohu vyloučit adresář z příkazu ls

  3. Jak získám celý adresář na sftp?