Linux误删文件恢复
删了私有云上几百个文件,不过好在最后发现只是删除了数据库里边的记录。万幸万幸。
注意,下面的操作只适用于删文件的进程已经挂了的情况,请根据自己情况选择合适的方法。
首先要做的
赶紧杀掉所有进程,防止数据写入到磁盘覆盖inode
,如果被覆盖基本就凉了。比如说,停止当前分区的服务,赶紧卸载当前分区设备,甚至直接断网都是有必要的。
1 | unmount /dev/sda1 |
然后用dd
备份分区,防止恢复失败。比如可以用下面的指令:
1 | dd if=/dev/sda1 of=/tmp/sda1.img |
工具准备
根据分区类型使用extundelete
或者ntfsundelete
。后者直接安装ntfs-3g
即可,前者使用apt安装extundelete
。
恢复
如果是ntfs分区的话,用这个命令得到文件列表:
1 | # 这个-f是因为我懒得卸载卷了 |
然后可以按删除日期来筛查文件:
1 | cat rec-list.txt | grep 2023-08-30 > res-filtered.txt |
最后恢复文件:
1 | # Undelete inodes 2, 5 and 100 to 131 of device /dev/sda1 |