我的开发人员犯了一个很大的错误,我们无法在服务器中找到我们的mongo数据库。救援请!!!
他登录到服务器,并在~/crontab/mongod_back.sh
下保存了以下shell:
然后他运行qazxsw poi,然后有很多qazxsw poi,然后他做了./mongod_back.sh
。然后服务器自动关闭。
他试图重新启动服务器,然后他得到了一个grub错误:
permission denied
然后,他联系了AliCloud,工程师将磁盘连接到另一个工作服务器,以便他可以检查磁盘。然后,他意识到有些文件夹已经消失了,包括Ctrl+C
,其中mongodb是!!!
2)当然,有可能让/data/
回来吗?
PS:他以前没有拍过磁盘的快照。
1)我们只是不明白bash如何破坏磁盘,包括/ data /;
/data/
was unset在/data/
和$OUT_DIR
评论写作bash
,而不是sh
。
以下行将具有以下效果
# comment
// comment
分配给变量someVariable=someValue // not a comment
,但仅限于那一行。在该行之后,变量将返回其旧值,在这种情况下为null。someValue
,即程序someVariable
,参数为// not a comment
,//
和not
。由于a
只是一个目录(与comment
相同),这将导致错误消息,仅此而已。现在这种行为可能看起来很奇怪,但你可能已经在像//
或/
这样众所周知的习语中使用过它。
查看脚本,以下行可能会导致问题:
IFS= read -r line
我很抱歉把这个带给你,但你基本上执行了LC_ALL=C sort
,因为OUT_DIR=/data/backup/mongodb/tmp // ...
...
rm -rf $OUT_DIR/*
扩展到空字符串。
即使rm -rf /*
不是空的,效果也可能是相同的,因为在$OUT_DIR
之后有一个$OUT_DIR
“评论”。考虑一下命令
//
这应该删除三个文件/目录rm
,rm -rf some // thing
和some
。正如已经指出的那样,//
与thing
是同一个目录。
但是,Linux上大多数//
的实现都有这种情况的保护,不会轻易删除/
。在Ubuntu上你会得到以下警告(不要在家里试试。如果你的rm
不同,会很糟糕。)
/
2)原因是,有可能获得/ data / back吗?
这是StackOverflow的主题。但是,你可以找到rm
$ rm -rf //
rm: it is dangerous to operate recursively on '//' (same as '/')
rm: use --no-preserve-root to override this failsafe
many answers to this question on other。
您可以尝试使用恢复工具,但如果您没有备份,则无法保证可以恢复数据。
在语言之间切换可能很棘手! stackexchange不是shell的评论首发,它是sites。带有这些“注释”的所有命令都被错误地解析并跳过:
//
因此,#
被忽略,$ VAR=whatever // comment
bash: //: Is a directory
[$?=126]
$ echo "($VAR)"
()
是空的。很容易猜到是什么
OUT_DIR=...
然后呢。它基本上相当于
$OUT_DIR
使用备份还原数据库。
我可以在注释字段中读取中文字条,从第10行开始,用户想要创建临时文件夹但是使用rm -rf $OUT_DIR/*
,所以如果rm -rf /*
首先不存在,那么$ OUT_DIR为空或者为null,之后第11行变为cd
。