Řešení 1:
GNU tar má volbu --newer-mtime, která vyžaduje argument data, což by bylo pravděpodobně naposledy, kdy jste zálohovali. V závislosti na tom, kolik práce jste chtěli obnovit souborový systém, to může být buď poslední úplná záloha, v takovém případě budete muset obnovit úplný výpis a poslední denně, nebo to můžete udělat od posledního přírůstku, ve kterém V tomto případě budete muset obnovit celý výpis a poté každý výpis.
Tato možnost se spoléhá na časové razítko úpravy v souboru, takže pokud bylo výslovně změněno, je možné, že ho vaše záloha vynechá.
Řešení 2:
Obslužný program incron používá inotify ke spouštění příkazů, když nastanou události souborového systému. Konfigurační soubor je jako crontab, ale místo časů zadáváte cesty a události.
Příkazem může být buď váš zálohovací skript (v takovém případě se zálohování spustí téměř okamžitě po úpravě souborů), nebo jej můžete nechat vytvořit nějaký soubor a nechat záložní skript zkontrolovat existenci tohoto souboru a poté jej odstranit. Pokud soubor existuje, jedna z událostí nastala od posledního spuštění.
Řešení 3:
Vždy můžete najít výstup uživatele do wc a získat celočíselný počet změněných souborů:
find . -ctime 1 | wc -l
I když Davidova odpověď vyžaduje méně změn kódu :)
Řešení 4:
To je trochu divoký nápad, ale můžete si trochu pohrát s md5sum a ls.
Touto myšlenkou je podívat se pouze na md5součet jednoho souboru a že tento soubor je výpis souboru adresáře, který sledujete. A dokud se nic nezmění, součet md5 je stejný. Ale pokud je časové razítko aktualizováno, md5sum se změní a vy víte, že musíte udělat nový tar a poslat ho na váš ftp server.
Mohli bychom začít něčím takovým
ls -lR /path/to/dir/ | md5sum > file_list.txt.md5
Pak byste potřebovali přidat srovnání mezi theold md5 a současným... atd atd
/Johan
Řešení 5:
Nejnovější verze GNU find mají akci "-quit", která způsobí, že find okamžitě zastaví vyhledávání:
— Akce:-konec
Okamžitě ukončete (s návratovou hodnotou nula, pokud nedošlo k žádné chybě). To se liší od „-prune“, protože „-prune“ se vztahuje pouze na obsah prořezaných adresářů, zatímco „-quit“ jednoduše okamžitě zastaví vyhledávání. Žádné podřízené procesy nezůstanou spuštěné, ale nebudou zpracovány žádné další soubory zadané na příkazovém řádku. Například najít /tmp/foo /tmp/bar -print -quit vytiskne pouze „/tmp/foo“. Všechny příkazové řádky, které byly vytvořeny pomocí „-exec ... +“ nebo „-execdir ... +“, jsou vyvolány před ukončením programu.
Můžete použít výraz find k nalezení souborů, které se změnily, a použít -quit k zastavení, jakmile nějaký najdete. To by mělo být rychlejší než najít pokračování ve skenování.
-quit byl přidán do fileutils V4.2.3