AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 587102
Accepted
Jonas Bylov
Jonas Bylov
Asked: 2014-04-07 22:39:14 +0800 CST2014-04-07 22:39:14 +0800 CST 2014-04-07 22:39:14 +0800 CST

周一早上的错误:sudo rm -rf --no-preserve-root /

  • 772

请注意:此问题的答案和评论包含来自另一个类似问题的内容,该问题已受到外部媒体的大量关注,但在某种病毒式营销计划中被证明是恶作剧问题。由于我们不允许以这种方式滥用 ServerFault,因此已删除原始问题并将答案与此问题合并。


这是一个有趣的悲剧。今天早上我正在对我的生产服务器进行一些维护时,我错误地执行了以下命令:

sudo rm -rf --no-preserve-root /mnt/hetznerbackup /

之前我没有发现最后一个空格/,几秒钟后,当警告充斥我的命令行时,我意识到我刚刚按下了自毁按钮。以下是一些让我眼前一亮的东西:

rm: cannot remove `/mnt/hetznerbackup': Is a directory
rm: cannot remove `/sys/fs/ecryptfs/version': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/inode_readahead_blks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_max_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/delayed_allocation_blocks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/max_writeback_mb_bump': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stream_req': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_min_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stats': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/trigger_fs_error': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/session_write_kbytes': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/lifetime_write_kbytes': Operation not permitted
# and so on..

当我发现生产服务仍在运行时,我停止了任务并松了一口气。可悲的是,服务器不再通过 SSH 接受我的任何用户的公钥或密码。

你将如何从这里前进?我将在铁丝网的海洋中游泳以恢复 SSH 访问。

该服务器运行 Ubuntu-12.04 并托管在 Hetzner。

disaster-recovery hetzner ubuntu-12.04
  • 9 9 个回答
  • 160210 Views

9 个回答

  • Voted
  1. Journeyman Geek
    2016-04-12T00:02:31+08:002016-04-12T00:02:31+08:00

    事实是?在这一点上,没有简单/容易的自动修复。数据恢复是一门科学,即使是基本的常用工具也需要有人坐下来确保数据在那里。如果您期望在没有大量停机时间的情况下从中恢复,那么您将感到失望。

    我建议使用 testdisk或某些文件系统特定的恢复工具。尝试一个系统,看看它是否有效,等等。没有真正的方法来自动化这个过程,但你可以小心地分批完成。

    也就是说,问题和评论中有一些非常可怕的东西应该成为您的事后报告的一部分。

    首先,您在没有先检查的情况下到处运行命令。在一个盒子上运行命令。然后是几个,然后更多。基本上,如果出现问题,最好让它影响一些而不是所有系统。

    第二

    @Tim 如何在不在服务器上安装远程驱动器的情况下进行备份?

    吓到我。文件级单向备份是一个已解决的问题。Rsync 可用于保留权限并以一种方式将文件复制到备份站点。不小心有什么?重新安装(最好是自动安装)rsync,一切正常。将来,您可能会将文件系统级快照与 btrfs 或 zfs 快照一起使用,并将这些快照用于系统级备份。我实际上会玩弄分离应用程序服务器、数据库和存储,并引入最小权限原则,这样你就可以分散这样的风险......

    我知道我可以做任何事情。我现在需要考虑如何保护自己

    在事情发生之后是考虑这个的最糟糕的时间。

    我们可以从中学到什么?

    1. 备份保存数据。可能是职业。
    2. 如果您有一个工具并且不知道它是否可以做什么,那么它很危险。绝地武士可以用光剑做惊人的事情。一屋子拿着光剑的黑猩猩... 会弄得一团糟。
    3. 永远不要同时在任何地方运行命令。将测试和生产机器分开,最好分阶段做生产机器。最好修复 1 或 10 台机器,而不是 100 或 1000 台。

    4. 双重和三重检查命令。要求同事仔细检查“嘿,我要添加一个驱动器,你能理智地检查一下,这样我就不会擦拭驱动器了吗?”,这并不可耻。包装纸也可能有所帮助,但没有什么能比眼睛不那么疲惫了。

    你现在可以做什么?向客户发送电子邮件。让他们知道有停机时间和灾难性故障。与您的上级、法律、销售等人员交谈,看看如何减轻损失。开始计划恢复,如果需要,您最多只能雇用额外的人员。在最坏的情况下,计划花费大量资金进行恢复。在这个阶段,您将致力于减轻影响以及技术修复。

    • 224
  2. Best Answer
    faker
    2014-04-07T23:00:18+08:002014-04-07T23:00:18+08:00

    启动 Hetzner 提供的救援系统并检查您造成了哪些损坏。
    将所有文件传输到安全位置,然后重新部署服务器。

    恐怕这是您情况下的最佳解决方案。

    • 97
  3. Amal Murali
    2014-04-07T23:57:09+08:002014-04-07T23:57:09+08:00

    当您使用 删除内容时rm -rf --no-preserve-root,几乎无法恢复。您很可能丢失了所有重要文件。

    正如@faker在他的回答中所说,最好的做法是将文件传输到安全位置,然后重新部署服务器。

    为避免将来出现类似情况,我建议您:

    • 每周或至少每两周进行一次备份。这将帮助您以尽可能少的 MTTR 备份受影响的服务。

    • 不需要时不要以 root 身份工作。在做任何事情之前总是三思而后行。我建议你也安装safe-rm。

    • 不要键入您不打算调用的选项,例如--no-preserve-rootor --permission-to-kill-kittens-explicitly-granted,就此而言。

    • 93
  4. Octo
    2016-04-12T00:17:54+08:002016-04-12T00:17:54+08:00

    我有同样的问题,但只是用硬盘测试,我失去了一切。我不知道它是否有用,但不要安装任何东西,不要覆盖您的数据,您需要安装硬盘并启动一些取证工具,例如我们的尸检、photorec、Testdisk。

    我强烈推荐Testdisk,使用一些基本命令,如果你没有覆盖它,你可以恢复你的数据。

    • 48
  5. Monty Harder
    2014-04-08T13:22:18+08:002014-04-08T13:22:18+08:00

    解决此类问题的最佳方法是一开始就没有它。

    不要手动输入参数列表中带有斜杠的“rm -rf”命令。(将这样的命令放在具有非常好的验证/健全例程的 shell 脚本中以保护您不做愚蠢的事情是不同的。)

    只是不要这样做。
    曾经。如果你认为你需要这样做,那是你想得不够努力。

    相反,将您的工作目录更改为您打算从中开始删除的目录的父目录,以便 rm 命令的目标不需要斜杠:

    光盘 /mnt

    sudo rm -rf hetznerbackup

    • 34
  6. Abc Xyz
    2016-04-11T16:32:54+08:002016-04-11T16:32:54+08:00

    我会尝试恢复存储所有副本的备份机器:

    • 第一步 - 使用命令备份这个已擦除的“备份机”驱动器 dd。
    • 第二步 -testdisk用于恢复文件。

    因此,假设您要恢复 1TB,您将需要额外的 2TB、1TB 用于备份(第 1 步)加上 1TB 用于恢复(第 2 步)。

    我对别名 rm -fr [电话响] 和 cd 到珍贵目录做了类似的错误。现在,在我使用 rm 或 dd 命令之前,我总是三思而后行并重新检查几次。

    • 15
  7. kasperd
    2014-04-07T23:54:07+08:002014-04-07T23:54:07+08:00

    正如另一个答案中提到的,Hetzner 有一个救援系统。它包括一个带有 ssh 访问权限的 netboot 选项以及一个 java 小程序,为您的虚拟服务器提供屏幕和键盘。

    如果您想尽可能多地恢复,请将服务器重新引导到 netboot 系统,然后登录并通过从适当的设备 inode 中读取来下载文件系统的映像。

    我认为这样的事情应该有效:

    ssh root@host cat /dev/sda > server.img
    

    当然重定向是在调用 ssh 命令之前由 shell 完成的,所以 server.img 是一个本地文件。如果您只想要根文件系统而不是完整磁盘,请假设您使用与我相同的映像来sda替换。sda3

    • 7
  8. Gerry
    2016-04-16T01:51:28+08:002016-04-16T01:51:28+08:00

    你将如何从这里前进?

    我会发誓在rm我的余生中使用它,并认为垃圾 cli 不是 nix 系统上的默认删除命令是疯狂的。

    https://github.com/andreafrancia/trash-cli

    我会确保它是我在全新系统上安装的第一件alias rm东西,并且是告诉人们使用它的东西trash-cli。它还将包含有关实际运行/bin/rm但告诉他们在大多数情况下避免使用它的另一个别名的注释。

    :( 真实的故事

    • 3
  9. BiG_NoBoDy
    2016-04-19T06:46:25+08:002016-04-19T06:46:25+08:00

    在这种情况下,我建议卸载并使用debugfs ,并且在lsdel的帮助下,您可以列出所有最近删除的文件,这些文件没有从日志中清理,然后转储所需的文件。相同的快速搜索链接:http ://www.linuxvoodoo.com/resources/howtos/debugfs

    希望它会帮助某人。;)

    是的,有一次建议是制作脚本,将ream rm移动到real.rm和 syminc mv到rm ;)

    • 2

相关问题

  • SBS2003有没有好的在线备份方案?[关闭]

  • 通过 WAN 链接的 MOSS 延伸农场 - 一个坏主意?

  • 如何从 Windows 2008 故障转移群集中删除“额外”(不需要的)网络?

  • 社区对备份解决方案的意见

  • 镜像驱动器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve