误删文件是NAS使用中最常见也最令人揪心的意外之一。无论是不小心按了Shift+Delete,还是清理目录时脚本写错了路径,飞牛NAS(fnOS)上的数据丢失都可能让你瞬间冷汗直冒。不过别慌,只要你还没有对存储池进行大量写入操作,大部分误删场景都有机会挽回。这篇文章将带你走一遍从“发现误删”到“成功恢复”的完整流程,涵盖飞牛NAS上最实用的三种恢复手段。
第一步:立即停止一切写入操作
这是整个恢复流程中最关键的一步,没有之一。发现文件被误删后,请立刻停止所有下载、文件移动、虚拟机运行、Docker容器写入等可能产生新数据的任务。如果条件允许,最好直接通过SSH登录飞牛NAS,执行 sync 命令强制刷新缓存,然后考虑是否要卸载相关文件系统。
为什么必须这样做?因为文件系统在删除文件时,通常只是把对应的数据块标记为“空闲”,并没有物理擦除数据。只要你后续不写入新数据,这些被标记为空闲的块里仍然保留着原始内容。一旦你继续大量写入,新数据就可能覆盖这些块,导致恢复彻底失败。所以,请先确保存储池处于“静止”状态。
方案一:检查飞牛NAS自带的回收站和快照
在动手使用复杂命令之前,先确认一下你是否开启了飞牛NAS的“回收站”或“快照”功能。这是最省事的恢复路径。
飞牛NAS的文件管理器(通过Web界面访问)默认会为共享文件夹开启回收站功能。你可以在 控制面板 -> 共享文件夹 -> 编辑 -> 回收站 中查看是否勾选了“启用回收站”。如果启用了,误删的文件会进入一个名为 #recycle 的隐藏目录中,按原路径层级存放。
恢复步骤:
1. 打开文件管理器,点击右上角的“设置”图标,选择“显示隐藏文件”。
2. 进入对应的共享文件夹,找到 #recycle 目录。
3. 按删除时间浏览目录,找到你的文件,右键选择“还原”或直接拖回原位置。
如果你使用的是Btrfs文件系统,并且创建了快照,恢复会更简单。在 存储空间 -> 快照 中,找到删除前的快照点,点击“浏览”,从快照中把文件复制出来即可。快照恢复的优点是原文件的权限、属性都会保留。
方案二:使用 extundelete 恢复 ext4 文件系统
如果你的存储池是 ext4 格式(飞牛NAS默认支持),并且没有启用回收站和快照,那么 extundelete 是命令行恢复的首选工具。它通过在文件系统层面扫描未被覆盖的数据块来重建文件。
首先,通过SSH登录飞牛NAS终端。建议使用 sudo -i 切换到root账户。
然后检查你的分区挂载情况,并安装工具(飞牛NAS基于Debian,直接用apt即可):
df -h | grep /vol1 # 假设你的存储池挂载在 /vol1
apt update && apt install -y extundelete
重要提示:为了安全起见,最好将 extundelete 安装在系统盘或U盘上,而不要安装在你要恢复数据的那个数据盘上,避免安装过程写入数据。
接下来,卸载需要恢复的分区。这一步是必须的,因为文件系统挂载时,extundelete 无法安全操作:
umount /vol1
如果提示设备正忙,可以先停掉所有相关服务(如SMB/NFS),再用 fuser -km /vol1 强制踢出进程。
现在开始扫描。假设你的数据分区设备是 /dev/sdb1,你想恢复误删的 /vol1/photos 目录下的文件:
extundelete /dev/sdb1 --restore-directory photos --output-dir /tmp/recovered
如果你不确定文件在哪个目录,可以先做全盘扫描查看可恢复的inode列表:
extundelete /dev/sdb1 --restore-all --output-dir /tmp/recovered
扫描可能需要较长时间,取决于分区大小。恢复完成后,所有文件会出现在 /tmp/recovered 目录下,按原始路径结构存放。之后你把这些文件复制回原位置即可。
方案三:利用 TestDisk 处理更复杂的场景
如果你遇到的是整个分区被格式化、分区表损坏,或者 extundelete 无法找到目标文件,那么 TestDisk 和它的姊妹工具 PhotoRec 是你的最后防线。TestDisk 擅长修复分区表,而 PhotoRec 则通过文件签名(比如JPEG头、PNG头)来直接扫描原始数据块,不依赖文件系统元数据。
安装 TestDisk:
apt install -y testdisk
运行 TestDisk 修复分区表:
testdisk /dev/sdb
按提示选择 Analyse,它会扫描分区并列出可能的分区表。如果找到正确的分区,选择 Write 写入并重启NAS。这种操作适合分区丢失但数据未被覆盖的情况。
如果分区表没问题,只是文件删得比较彻底,那就用 PhotoRec 按文件类型恢复:
photorec /dev/sdb1
它会进入交互界面,让你选择目标分区、文件类型(默认全选),然后指定输出目录。PhotoRec 恢复出的文件名是自动生成的,失去了原始文件名和目录结构,所以只适合恢复照片、文档等按内容识别的文件,不适合恢复数据库或代码工程。
注意事项与避坑指南
第一,千万不要把恢复出来的文件写回同一个分区。即使你用的是 /tmp 目录,也要确保 /tmp 是在系统盘上,而不是数据盘。如果空间不够,可以挂载一块外接USB硬盘作为恢复目标。
第二,如果你在飞牛NAS上跑着Docker,并且误删的文件位于Docker卷(volume)中,恢复逻辑是一样的,但要注意容器可能持续写入日志或临时文件。强烈建议先 docker stop 所有相关容器。
第三,如果误删的是系统盘(比如 /etc 或 /usr 下的配置),不要尝试用上述工具恢复,直接重装系统并重新配置会更快更安全。数据盘上的文件才值得花时间恢复。
第四,恢复操作结束后,无论成功与否,请立即检查你的备份策略。飞牛NAS支持定时快照和远程备份(rsync、WebDAV等)。建议设置每天自动快照,并将重要数据同步到另一台设备或云存储。没有备份的NAS,就像没有安全带的汽车,永远不知道下一秒会发生什么。
总结
误删文件在飞牛NAS上是完全可以应对的。牢记“先冻结写入,再选择工具”的核心原则。优先检查自带的回收站和快照,这是零成本且最完整的恢复方式。如果不可用,ext4分区用 extundelete 按目录恢复,复杂情况再用 PhotoRec 做底层扫描。恢复完成后,立刻反思并建立备份机制,这才是根治问题的良药。希望这篇教程能帮你顺利找回宝贵的数据,也欢迎在评论区分享你的恢复经验。