V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monster33
V2EX  ›  程序员

不小心运行了 rm -rf/* 还有补救的机会吗?

  •  
  •   monster33 · 2022-02-03 14:40:18 +08:00 · 8546 次点击
    这是一个创建于 1028 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我真的大无语,刚刚情绪都有点崩溃了。今天本来过年没事情做,就准备把服务器上的文件整理一下。然后我想删除某个文件夹下面的文件的时候,不小心执行了 /* 2 秒之后我意识到什么,立刻 command+c 然后就 gg 了,命令行 ls 都看不到文件夹了 显示-bash: /bin/ls: No such file or directory

    是在宿主机上执行的,用的 unraid 系统。目前用之前安装的 docker 插件看,主要我存在硬盘里面的文件还在,smb 目前访问不了。也无法访问 unraid webui 了。虚拟机还能运行。但是我不敢关机,怕关了就启动不了了。

    现在有什么办法补救? 救救我 救救我 救救我

    52 条回复    2022-02-06 20:06:19 +08:00
    ChrisFreeMan
        1
    ChrisFreeMan  
       2022-02-03 14:57:21 +08:00 via iPhone
    我之前也是一样,我把这几年上班攒的资料全给删了😓后来我用 brew 安装了 trash 命令,给我一个反悔的机会
    lifeintools
        2
    lifeintools  
       2022-02-03 14:59:51 +08:00
    没什么能补救的。。恢复数据 都是专业机构的事。。
    yaoyao1128
        3
    yaoyao1128  
       2022-02-03 15:03:56 +08:00 via iPhone
    拔掉电源 拆下来硬盘 简单的数据自己用软件镜像千万别写入之后用恢复软件碰碰运气 复杂的话 准备好银两 找一个数据恢复公司
    xxb
        4
    xxb  
       2022-02-03 15:17:30 +08:00 via iPhone
    存在硬盘里的个人资料还在就好办,如果你只是删除了系统文件,放心重启吧,unraid 跑在内存里呢,重启会恢复。
    万一不行大不了重装系统。
    yehoshua
        5
    yehoshua  
       2022-02-03 15:21:02 +08:00 via Android
    删除应该只是把表删掉,还是能恢复的吧? win 下面有工具,linux 这方面没经验。
    learningman
        6
    learningman  
       2022-02-03 16:53:55 +08:00
    立刻关机拔硬盘吧
    antipro
        7
    antipro  
       2022-02-03 17:22:46 +08:00 via Android
    别再写入数据,有一些工具可以恢复文件的。
    Argon
        8
    Argon  
       2022-02-03 17:24:34 +08:00 via Android   ❤️ 45
    这种情况,也许 node_modules 能救你半条命。
    patx
        9
    patx  
       2022-02-03 17:24:42 +08:00
    在另外一个主机论坛也看到相似的帖子……
    patx
        10
    patx  
       2022-02-03 17:28:22 +08:00
    如果误删的文件,还被某些进程使用,还是有一定概率可以把文件还原回来的

    https://zhuanlan.zhihu.com/p/172520958
    lslqtz
        11
    lslqtz  
       2022-02-03 17:30:45 +08:00
    不少文件一般还会在,没那么快,推荐立马断电改只读,然后上数据恢复工具。
    数据重要找专业机构
    sutra
        12
    sutra  
       2022-02-03 17:44:21 +08:00
    /rescue
    monster33
        13
    monster33  
    OP
       2022-02-03 19:34:11 +08:00
    @xxb 我记得之前我好像备份过一次 unraid 结果找到之后发现是另外一台机器的 我感觉大概绿要重装系统了 无语。。。
    gengchun
        14
    gengchun  
       2022-02-03 19:36:41 +08:00
    看 OP 这样,数据应该不太重要。主要是装系统装得太慢了。多 rm -fr * 几次应该就熟练了。
    pcbl
        15
    pcbl  
       2022-02-03 19:38:03 +08:00 via Android   ❤️ 2
    曾经硬盘突然挂了,备份的移动硬盘也出问题了,当时觉得天塌了,后面才发现 好像完全没啥影响。。。
    singerll
        16
    singerll  
       2022-02-03 19:39:24 +08:00 via Android
    两级反转
    MiketsuSmasher
        17
    MiketsuSmasher  
       2022-02-03 19:41:19 +08:00 via Android   ❤️ 9
    下次在敲 rm 之前三思,还有把 node_modules 改成__AAAnode_modules 放到根目录下面( rm -rf /* 第一个删的就是它)
    neilyoone
        18
    neilyoone  
       2022-02-03 21:17:15 +08:00
    基本没有挽救的可能性了~
    把能转移出来的文件 备份一下
    leafre
        19
    leafre  
       2022-02-03 21:48:42 +08:00
    离职必备命令 rm -rf
    reiji
        20
    reiji  
       2022-02-03 22:01:22 +08:00 via Android
    @MiketsuSmasher 学到了
    M48A1
        21
    M48A1  
       2022-02-03 22:01:37 +08:00
    又不是公司的生产环境慌什么?
    jinliming2
        22
    jinliming2  
       2022-02-04 01:24:06 +08:00 via iPhone
    所以……为啥日常要用 root 身份……
    q9OxQgg
        23
    q9OxQgg  
       2022-02-04 01:46:14 +08:00 via Android   ❤️ 1
    @jinliming2 为了少打 sudo 和输一遍密码。真像楼主这样,不用 root 操作,ta 也可能会用 sudo ,然后毫不犹豫地输一遍密码。
    yayiji
        24
    yayiji  
       2022-02-04 06:05:55 +08:00
    没的救,几周前我鬼使神差把 mv 写成 rm 删除了一个重要的文件,此事之后我几乎把所有重要的文件都做了备份,把散落各处的文件移动到网盘中,原处用软连接代替
    abc8678
        25
    abc8678  
       2022-02-04 08:57:33 +08:00 via Android
    最怕输入到一半,终端窗口卡了一下
    leimao
        26
    leimao  
       2022-02-04 09:14:52 +08:00
    服务器的数据都没有备份的吗?
    des
        27
    des  
       2022-02-04 09:15:53 +08:00 via iPhone
    以后重要的文件多备份吧,电脑一份 nas 一份 网盘一份
    ltkun
        28
    ltkun  
       2022-02-04 10:31:37 +08:00 via Android
    如果在云上应该有机会吧 运营商应该有不同版本的备份哈哈 以后自己服务器也得用版本控制哈
    zxCoder
        29
    zxCoder  
       2022-02-04 10:59:10 +08:00
    @Argon 请问什么意思,是说 node_modules 要删半天吗。。。
    killva4624
        30
    killva4624  
       2022-02-04 11:13:27 +08:00   ❤️ 1
    执行 rm -rf 没有问题,但 rm -rf 后面千万不要加 ./* , 因为你可能会忘记那个点...
    我个人的做法是,使用“足够多的限定路径条件”。
    比如要删除当前目录下所有内容,不能在当前目录操作,而是返回到上一层,这样限定路径就从 ./ 变成了 ./some_folder 。
    或者是先 mv some_folder some_folder_to_delete ,这样执行 rm -rf some_folder_to_delete 的时候,因为有 to_delete 限制,也不怕输错目录名。
    总而言之,就是尽可能的添加路径条件限定。
    documentzhangx66
        31
    documentzhangx66  
       2022-02-04 11:53:30 +08:00
    是个人,都会有概率犯错。

    所以这个问题其实不是如何避免不小心运行了 rm -rf ,以及 dd of=/ 之类的。

    而是平时一定要做好自动定时备份。

    以上只是针对个人数据。而工作数据,本地服务器的磁盘还需要做 raid 。这些麻烦以及钱,是一定要花的。
    wtdd
        32
    wtdd  
       2022-02-04 12:33:51 +08:00
    服务器应该没戏了,如果硬盘在自己手里,且这么做后没有其他动作,那是可以恢复的
    zhlxsh
        33
    zhlxsh  
       2022-02-04 12:43:10 +08:00 via iPhone
    @Argon 跟 node_modules 有半毛钱关系?
    pengtdyd
        34
    pengtdyd  
       2022-02-04 13:14:52 +08:00
    大号没有了,换小号吧
    tanranran
        35
    tanranran  
       2022-02-04 13:16:39 +08:00
    dblpx
        36
    dblpx  
       2022-02-04 13:18:03 +08:00
    每次看到这样的帖子都是在提醒我是时候备份一次数据了
    BugCry
        37
    BugCry  
       2022-02-04 13:49:24 +08:00 via Android
    我简单喵两句:
    unraid 就一内存系统,重新做下启动盘就完事儿了。而且听你描述,数据盘还没有遭到破坏,那就没任何问题
    BugCry
        38
    BugCry  
       2022-02-04 13:51:23 +08:00 via Android
    补充:对于 unraid 这个特例,确实啥事没有,但是以后在 Linux 上面,还是老老实实保留事故现场,千万不能断 ssh
    acess
        39
    acess  
       2022-02-04 13:51:31 +08:00
    Sainnhepark
        40
    Sainnhepark  
       2022-02-04 13:53:55 +08:00 via Android
    sky96111
        41
    sky96111  
       2022-02-04 14:02:04 +08:00 via Android
    @abc8678 所以我的习惯是,要输入删除命令时绝不先输 sudo ,输完以后 ctrl+a 再加上 sudo 。避免命令写一半按到回车,密钥凭证没过期免密码直接执行了
    NotFoundEgg
        42
    NotFoundEgg  
       2022-02-04 18:25:48 +08:00   ❤️ 4
    我一般会在根目录和 home 下建一个文件夹 起名!(因为!排在 ASCII 表的前面位置) 然后调一下权限 可以一定程度防误删
    mkdir ! && chmod 000 !
    des
        43
    des  
       2022-02-04 19:22:22 +08:00 via iPhone
    @NotFoundEgg chattr +i 也可以
    abc8678
        44
    abc8678  
       2022-02-04 19:39:44 +08:00 via Android
    @sky96111 打开终端窗口,默认出现中文输入法。打开浏览器地址栏,默认出现中文输入法。到了打字的时候,默认英文输入法。……输入法有点乱。有时候按回车,可以把输入一般的英文打出来,省得前功尽弃。结果有些时候,一回车就执行了,打一半的中英混合体被敲进去执行了……
    iqoo
        45
    iqoo  
       2022-02-04 20:05:45 +08:00
    @NotFoundEgg 果然有想法相同的人
    hackk
        46
    hackk  
       2022-02-04 22:48:30 +08:00
    @NotFoundEgg 想法非常棒,看到后我测试了一下,我在 Centos 7.9 下,根目录和 home 下都创建了 !和 a 文件夹,权限 000 ,root 用户执行 rm -rf /* 和 普通用户 sudo -rf /* 执行,都是从 /boot 文件夹开始删除。既然 rm 没按套路出牌,我就继续测试,把 /boot 000 了,然后 sudo -rf /* 并未被阻断或出现任何提示,不知朋友这个方法是正对于特定操作系统吗?多谢!
    mritd
        47
    mritd  
       2022-02-05 02:00:47 +08:00 via iPhone
    @MiketsuSmasher #17 10 年老运维告诉你的小技巧
    MintZX
        48
    MintZX  
       2022-02-05 02:26:18 +08:00
    @zhlxsh 你再仔细看一下。。这个跟 node_modules 没关系,只不过 node_modules 作为一个体积庞大+一堆碎文件的文件夹很适合放在你根目录里面作为手误删除跟目录的一个挡箭牌。因为 rm -rf 按照一定顺序排列,所以有一个命名为 ___AAAxxxx 的文件夹在根目录下至少能挡几秒时间让你还有机会 ctrl + C
    msg7086
        49
    msg7086  
       2022-02-05 03:09:05 +08:00 via Android
    真就没人用 zsh 的删除*时自动警告功能呗。
    xuanbg
        50
    xuanbg  
       2022-02-05 08:47:48 +08:00
    我从来只打 rm -rf *,不打 rm -rf /*。而且前面先打个 pwd 看看当前路径对不对
    bbis
        51
    bbis  
       2022-02-05 15:12:05 +08:00 via iPhone
    前一段时间在 QNAP 上修改自己打包的插件,复制了一段代码,里面包含 rm -rf $approot/* ,而$approot 忘记分配变量,不小心在 ssh 上点了鼠标右键,运行了一大段命令,然后就停留在这个命令上,我瞬间脑炸,按了 Ctrl c ,然后发现 QNAP 的登录页面打不开,当时有登录 winscp ,检查了下个人存储目录数据还在,重启后系统自动修复了错误,一身冷汗
    liuliancao
        52
    liuliancao  
       2022-02-06 20:06:19 +08:00
    把盘拆下来挂到另一台机器上面 用 testdisk 修复下 如果不行用 extundlete 试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3526 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:56 · PVG 18:56 · LAX 02:56 · JFK 05:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.