Há um diretório A
cujo conteúdo é alterado frequentemente por outras pessoas.
Criei um diretório pessoal B
onde mantenho todos os arquivos que já estiveram A
.
Atualmente, apenas ocasionalmente corro rsync
para obter o backup dos arquivos de A
para B
. No entanto, temo a possibilidade de alguns arquivos serem adicionados A
e removidos A
antes que eu tenha a chance de copiá-los para B
.
Qual é a melhor maneira de impedir que isso ocorra? Idealmente, eu gostaria que meu script de backup atual fosse executado toda vez que o conteúdo A
fosse alterado.
fonte
incrond
também pode ser interessante./etc/profile
para todo o sistema ou.bash_profile
apenas para seu usuário. Para executá-lo após a inicialização, depende do seu sabor de Unix / Linux;/etc/rc.local
,/etc/rc.d/
ou/etc/init.d/
--monitor
switch (e canalizar a saída para o loop em vez), caso contrário, há um monte de sobrecarga quandoinotifywait
é iniciada uma e outra vezA rigor, se alguém soltar um arquivo e removê-lo muito rapidamente, você poderá perdê-lo. O uso do inotify (no Linux ou um recurso semelhante em outros departamentos) reduz a janela de risco.
Se você pode montar o sistema de arquivos de sua escolha nesse diretório (eu sei que isso pode não ser uma opção), você pode colocar um que registre todas as versões de arquivo, por exemplo, copyfs .
fonte
Experimente
entr
a ferramenta de linha de comando que pode executar comandos arbitrários quando os arquivos são alterados. Desde a versão 2.9, uma opção de observação de diretório (-d
) foi adicionada para reagir a eventos quando um novo arquivo é adicionado a um diretório.Exemplo para executar o utilitário se um novo arquivo for adicionado ao projeto:
A única implicação disso é que, se um novo arquivo aparecer, ele deverá sair para permitir que um loop de shell externo verifique novamente o sistema de arquivos.
Aqui está a versão sem uma opção de observação de diretório:
Aqui está um exemplo mais simples, dependendo de suas necessidades:
Consulte o site entrproject.org para obter mais detalhes.
fonte
O programa que você está procurando é
inotify
.fonte