Algumas soluções diferentes
Não há log, mas se você quiser ...
Observe as entradas excluídas e registre-as
Você pode usar inotify
bibliotecas no modo recursivo e monitor :
inotifywait -e delete --timefmt %c --format '%T %_e %w %f' -r -m / >/path/logfile
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
Fri Jul 19 11:57:39 2013 DELETE /tmp/ testfiletodelete
Fri Jul 19 11:57:46 2013 DELETE /home/user/ testfiletodelete
Esta é uma abordagem sysadmin : todos os usuários, todos os diretórios e pontos montados ...
Aviso pode ser um pouco exagero leia atentamente a página do manual e adicione algumas opções como --exclude
Correção bash rm
command
Você pode adicionar algo ao seu .bashrc
...
Transforme rm
de delete para o comando mover para a lixeira
mkdir -p $HOME/.Trashcan
rm() {
local destdir=$(mktemp -d $HOME/.Trashcan/trash-XXXXXXXXX);
mkdir $destdir/files
echo $0 $@ >$destdir/command
set >$destdir/environ
mv -t $destdir/files $@
}
Assim, cada vez que você acessar rm
no seu bash, os arquivos serão movidos para um diretório, o comando e o ambiente serão salvos também.
Como cada rm
criará um novo diretório com a data correta, não será necessário usar date
.
Adicionando uma etapa de log ao comando rm
.
Mas se você quiser apenas registrar sua operação, na alavanca do usuário:
rm() {
date >>$HOME/.rm.log +"%a %d %b %Y %T: rm $@"
/bin/rm $@
}
poderia fazer o trabalho.
Nota 1
Como @slhck disse corretamente: redefinir os comandos usuais pode forjar uma má prática para novos usuários, então se você modificar esses comandos padrão, você deve não esquecer quando estiver trabalhando em outro sistema!
Nota 2
Este patch somente rm
é executado pelo shell do usuário interativo. Você pode editar /etc/bashrc
para criá-los para todos os usuários, mas as ferramentas bash podem ser afetadas.
Se os arquivos forem removidos por unlink
em perl
para amostra, isso não será registrado por este.
Ou mesmo se ksh
, dash
ou mais for invocado em vez de bash ... no logs.
Nota 3
Para acessar o comando original, em vez de alias
ou pessoal function
, você precisa ter um caminho completo: /bin/rm myfile
removerá myfile
, mas ignorando a função rm
, nada será registrado.