Sof*_*mur 9 disaster-recovery filesystems shell data-recovery ubuntu-14.04
编辑:一个后续问题: 通过 --repair 和 WiredTiger 恢复 mongoDB。
我的开发人员犯了一个巨大的错误,我们在服务器的任何地方都找不到我们的 Mongo 数据库。
他登录到服务器,并将以下 shell 保存在~/crontab/mongod_back.sh:
#!/bin/sh
DUMP=mongodump
OUT_DIR=/data/backup/mongod/tmp // ????????
TAR_DIR=/data/backup/mongod // ????????
DATE=`date +%Y_%m_%d_%H_%M_%S` // ????????????
DB_USER=Guitang // ?????
DB_PASS=qq????????????????????? // ????????
DAYS=14 // ????14???
TARBAK="mongod_bak_$DATE.tar.gz" // ????????
cd $OUT_DIR // ?????
rm -rf $OUT_DIR/* // ??????
mkdir -p $OUT_DIR/$DATE // ?????????
$DUMP -d wecard -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE // ??????
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE // ??????????
find $TAR_DIR/ -mtime +$DAYS -delete // ?14?????
Run Code Online (Sandbox Code Playgroud)
然后他运行它并输出permission denied消息,所以他按下了Ctrl+C。服务器自动关闭。他试图重新启动它,但出现了一个 grub 错误:
他联系了阿里云,工程师将磁盘连接到另一台正常工作的服务器,以便他可以检查磁盘。看起来有些文件夹不见了,包括/data/mongodb在哪里!
/data/;/data/拿回?PS:他之前没有对磁盘进行快照。
PS2:很多人提到“备份”,这两天我们有很多重要的用户和数据,这个动作的目的是备份它们(第一次),结果它们被完全删除了。
kub*_*zyk 36
很容易。该//序列不是 bash ( #is) 中的注释。
OUT_DIR=x // text除了一条神秘的错误消息外,该语句没有任何效果*。
因此,当 OUT_DIR 为空字符串时,最终执行的命令之一是rm -rf /*. /由于用户没有权限,一些直接放在下面的目录没有被删除,但似乎一些重要的目录被删除了。您需要从备份中恢复。
* bash 语句的特殊形式A=b c d e f大致类似于:
export A=b
c d e f
unset A
Run Code Online (Sandbox Code Playgroud)
一个常见的例子:
export VISUAL=vi # A standard visual editor to use is `vi`
visudo -f dummy_sudoers1 # Starts vi to edit a fake sudo config. Type :q! to exit
VISUAL=nano visudo -f dummy_sudoers2 # Starts nano to edit a fake sudo config
visudo -f dummy_sudoers3 # Starts vi again (!)
Run Code Online (Sandbox Code Playgroud)
有问题的脚本行如下:
export OUT_DIR=/data/backup/mongod/tmp
// ???????? # shell error as `//` isn't an executable file!
unset OUT_DIR
Run Code Online (Sandbox Code Playgroud)
小智 8
1) 他错误地认为那//是 bash 评论。不是,只有#是。
shell 解释// text为普通命令,没有找到名为 的二进制文件//,什么也没做。
在 bash 中,当您OUT_DIR=/data/backup/mongod/tmp直接在命令 ( // text)之前有一个变量赋值 ( ) 时,它只会在运行命令时设置变量。因此,它OUT_DIR立即OUT_DIR取消设置,当到达 rm 行时,现在取消设置,rm -rf /现在被调用,删除您有权删除的所有内容。
2) 解决方法和所有rm -rf /情况一样:从备份中恢复。没有其他解决方案,因为您无法物理访问硬盘驱动器。
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |