意外删除所有根文件夹后如何恢复 Linux VM?

意外删除所有根文件夹后如何恢复 Linux VM?

我在 VirtualBox 中运行 CentOS Linux VM。我编写了一个 bash 脚本来执行一些自动化任务。但我意外删除了所有根文件夹,因为我在脚本中写了一行

rm -r $my_dir/*

但是,$my_dir找不到,因此上面的命令将作为 执行rm -r /*。所以现在我所有的根文件夹内容都消失了!当我重新启动虚拟机时,它会转到 grub 终端,无法启动 GNOME 和 bash shell,因为下面的所有内容/由于上述故障而被意外删除(吸取教训)。那么,有没有办法安全地从 VirtualBox 内部或外部恢复和还原系统?

答案1

您可以尝试使用可启动 CD 恢复文件https://www.runtime.org/data-recovery-live-cd.htm

在 Virtualbox 中启动 CD 并按照网站上的说明进行操作。

额外的:

在所有语言中,建议始终执行输入验证。使用 bash 脚本时也一样。我曾见过服务器因缺乏输入验证而受到攻击。

男人测试

这将解释如何执行某些验证来确定字符串是否为空或空:

   -n STRING
          the length of STRING is nonzero

   STRING equivalent to -n STRING

   -z STRING
          the length of STRING is zero

所以你应该做的是:

如果 [ !-z $my_dir ]; 那么

   rm -r $my_dir/* 

笔记:如果变量没有像上面的例子那样被正确地清理,并且输入来自参数,那么就有可能跳出并运行其他命令:

例子:

$ ./mybashscript.sh [目录]

通过为 [directory] ​​提供以下参数:test; rm -rf /

该脚本将删除名为“test”的文件夹(如果存在),然后删除根目录(/)。

相关内容