如何恢复Google Cloud VPS中误删除的重要用户文件夹?
太理解你现在的焦急了——一年多的项目成果,还是本地服务器损毁后的唯一备份,误删文件夹确实让人头大。咱们一步步来解决Google Cloud环境下用extundelete恢复数据的问题,核心是先满足工具要求的「无写入/只读挂载」条件:
Google Cloud VPS误删文件恢复(extundelete方案)
首先!绝对不要在出问题的VM上写入任何新数据——比如安装软件、创建文件,这会直接覆盖被删除的文件痕迹,彻底断送恢复可能。
第一步:先做磁盘快照,留好后路
不管后续操作如何,先给当前磁盘做个快照,防止操作失误雪上加霜:
- 登录Google Cloud控制台,找到你的VM实例
- 点击「停止」VM(不是删除!停止后磁盘数据会保留)
- 进入该VM对应的磁盘页面,点击「创建快照」,给快照起个好记的名字,等快照生成完成再继续
第二步:让目标分区满足extundelete的要求
extundelete需要分区处于未挂载或只读挂载状态,Google Cloud的VM分两种情况处理:
情况1:误删文件夹在额外的数据盘上
如果你的重要文件夹不在系统盘(/分区),而是单独挂载的数据盘:
- 先找出所有占用该分区的进程:
lsof /mnt/your-disk-path(替换成你的数据盘挂载路径) - 杀掉这些进程:
kill -9 [进程PID](PID是lsof输出里的第二列) - 执行卸载命令:
umount /mnt/your-disk-path - 验证卸载成功:
mount | grep /mnt/your-disk-path,如果没有输出就说明成功了,接下来可以直接用extundelete
情况2:误删文件夹在系统盘上(最常见)
系统盘正在被VM运行使用,没法直接卸载,所以得把磁盘挂载到临时VM上操作:
- 停止出问题的VM,在控制台的磁盘页面找到该VM的系统盘,点击「分离」
- 创建一台临时VM(选和原VM同系统的镜像,比如Ubuntu 22.04,配置不用太高,能运行工具就行)
- 编辑临时VM,在「附加磁盘」里选择刚才分离的系统盘,保存后启动临时VM
- 登录临时VM,查看磁盘设备名:
lsblk,通常系统盘会显示为/dev/sdb或/dev/nvme1n1(原系统盘的分区一般是/dev/sdb1) - 创建挂载点:
mkdir /mnt/recovery-disk - 以只读模式挂载磁盘(关键!防止写入覆盖数据):
mount -o ro /dev/sdb1 /mnt/recovery-disk(替换成你实际的分区名)
第三步:安装并运行extundelete恢复数据
在满足条件的机器上(原VM或临时VM):
- 安装extundelete:
- Ubuntu/Debian系统:
apt update && apt install extundelete - CentOS/RHEL系统:
yum install epel-release && yum install extundelete
- Ubuntu/Debian系统:
- 恢复指定文件夹:
extundelete /dev/sdb1 --restore-directory /home/your-user/important-folder(第一个参数是磁盘分区名,第二个是原磁盘上被删文件夹的完整路径) - 恢复的文件会自动存放在当前目录的
RECOVERED_FILES文件夹里,你可以把这些文件复制回原VM,或者下载到本地备份
额外建议
- 如果extundelete没恢复成功,可以试试
testdisk工具,功能更全面,同样需要只读挂载磁盘 - 恢复完成后,记得删除临时VM,把原磁盘重新挂载回原VM(如果用了临时VM方案)
- 之后一定要配置自动备份:比如用Google Cloud的磁盘自动快照功能,或者把重要数据同步到Cloud Storage,避免再出现这种揪心的情况
内容的提问来源于stack exchange,提问作者Unknown Username





