É possível, mas há muitos fatores que limitarão o que você pode fazer, incluindo o tipo de sistema de arquivos, o tempo de exclusão, etc.
Eu usei PhotoRec para recuperar arquivos em um servidor no passado com sucesso. É uma ferramenta criada para recuperar fotos que foram apagadas acidentalmente mas também funciona para outros arquivos.
Outro método é usar debugfs
. Linux debugfs Hack: arquivos Undelete
EX:
$ debugfs -w /dev/mapper/mydisk-root
$ debugfs: lsdel
Exemplo de saída:
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
Execute o comando em debugfs:
debugfs: logdump -i <7536655>
Determine os inodes:
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
Execute dd
com info inode do bloco:
# dd if=/dev/mapper/mydisk-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
Arquivos recuperados para recovered.file.001
.