Uma das questões intrigantes do Windows Vista foi que a Microsoft retirou o suporte às Lixeiras na rede, recurso que existia nas primeiras versões beta desse sistema operacional. Assim sendo.. quando apagamos um arquivo na rede.. ele é perdido para sempre… alias.. era! Existe um recurso no samba para criar uma Lixeira no compartilhamento de rede! 😀
O funcionamento é bem simples, com a configuração de algumas linhas e a personalização de alguns detalhes podemos resgatar aquele “Ops, não era isso que era para… apagou…” 😛
Adicionamos as seguintes linhas ao smb.conf:
vfs objects = recycle
recycle:keeptree = yes
recycle:repository = lost+found
recycle:touch_mtime = yes
recycle:versions = yes
recycle:exclude = *.tmp, ~*.*, desktop.ini, Thumbs.db
keeptree irá classificar a estrutura de arquivos original, tornando mais fácil resgatar qualquer tipo de conteúdo apagado;
repository é o diretório (criado toda vez se não existir) aonde os arquivos apagados vão parar;
touch_mtime altera a última modificação do arquivo para a hora que ele foi apagado (útil para o script de limpeza a seguir);
versions mantém todas as cópias do arquivo com o mesmo nome.
Existem outras opções na Documentação do Samba, porém eu considero essas as mais interessantes. 😉
Após reiniciar o samba, o diretório da lixeira será criado quando você apagar o primeiro arquivo!
Para concluir, considero que seria interessante criar um script para apagar arquivos antigos das lixeiras dos seus compartilhamentos! Aqui, eu utilizo esse script na raiz.. ele localiza e apaga independentemente todos os arquivos com mais de 15 dias em todas as lixeiras dos meus drives compartilhados 🙂 Agendei para que ele seja executado uma vez por semana!
for recycle in `find /storage -name lost+found -type d`; do \
find $recycle -mtime +15 -exec rm -fr {} \;; done;
Sendo /storage a raiz dos meus compartilhamentos e lost+found o nome das lixeiras. 😀