我在 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”的文件夹(如果存在),然后删除根目录(/)。