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

粗事了, 这样 rm -f 也中枪

  •  
  •   diveIntoWork · 2018-03-24 16:41:32 +08:00 · 6076 次点击
    这是一个创建于 603 天前的主题,其中的信息可能已经有所发展或是发生改变。

    find /var/www/html/sorry/cache/ -cmin +1 -exec rm -f '{}' ;

    写了一个删除缓存的命令,没有用通配符去匹配具体的某一类文件,结果没想到.和..两个隐藏文件夹,递归的把文件都删除了。。

    现在看了一下,/root/ 下的所有文件都没了,/ 根目录下的好像幸免于难。。目前可以正常使用,但是我不敢重启了。。

    也有可能只删除了 /root/目录下的文件?

    常在河边走,终于湿鞋了

    31 回复  |  直到 2018-03-25 17:12:00 +08:00
        1
    diveIntoWork   2018-03-24 16:42:28 +08:00
    我好蠢,直接用 ls 就好了。
        2
    nosay   2018-03-24 17:07:27 +08:00 via iPhone
    /root 下本来就没有什么东西吧…
        3
    FindBoyFriend   2018-03-24 17:11:13 +08:00
    /root 系统好像没放文件在里面吧?
        4
    wangbenjun5   2018-03-24 17:14:03 +08:00
    这种删除命令还是少用为好,用之前请反复确认
        5
    privil   2018-03-24 17:16:43 +08:00 via iPhone
    type f
        6
    WordTian   2018-03-24 17:16:45 +08:00 via Android
    有一些,比如.bashrc 等,但是这种文件不一定就被删了,就算删了,影响也不大
        7
    diveIntoWork   2018-03-24 17:17:45 +08:00
    @nosay @FindBoyFriend 嗯,后来确认了一下,由于及时 ctrl -c 没删掉多少文件,root 下的文件拷贝其他服务器上的已经恢复了。

    只是没想到掉这坑里了
        8
    songz   2018-03-24 17:38:26 +08:00
    那正确的命令应该怎么写啊?
        9
    ferock   2018-03-24 17:53:46 +08:00
    为什么要用递归。。。就像一楼自己说的,ls 不就行了吗?
        10
    diveIntoWork   2018-03-24 17:58:31 +08:00
    @ferock 大概是短路了
        11
    likuku   2018-03-24 18:05:17 +08:00   ♥ 1
    论不要使用 root 账号作事情 /创建文件 的重要性...
        12
    xpresslink   2018-03-24 18:05:39 +08:00
    正确的写法应当是 rm -Rf / 么?
        13
    likuku   2018-03-24 18:06:14 +08:00
    如此这般,/root 下就没啥重要的文件了
        14
    Qoxan   2018-03-24 18:07:42 +08:00 via iPhone   ♥ 1
    find (dir) -mindepth 1 -maxdepth 1 ……
    再加其它参数,就不会误删其他目录的东西了
        15
    chinvo   2018-03-24 18:08:24 +08:00
    看不明白为啥用 find

    ls 不好么
        16
    akira   2018-03-24 18:31:52 +08:00
    删除的动作 再怎么小心也不为过。 除了文件 还是数据库的删除指令也是
        17
    geelaw   2018-03-24 18:36:23 +08:00 via iPhone   ♥ 2
    请自觉学习 -WhatIf
        18
    laoyur   2018-03-24 20:09:42 +08:00
    所以,不会用 find 命令的表示很欣慰
        19
    diveIntoWork   2018-03-24 21:26:28 +08:00
    @Qoxan 正解 @songz
        20
    angelface   2018-03-24 21:28:22 +08:00   ♥ 2
    建议你把 rm 用 mv 替换,然后定期清理,
        21
    liangzi   2018-03-24 22:32:41 +08:00 via Android
    我曾经也是用 find ➕ exec 差点误删除了 幸亏有权限限制 要不然惨大了 (捂脸)逃。。。。
        22
    lucasmi2002   2018-03-24 22:38:58 +08:00 via Android
    加上文件名通配,先 ls,确认了再 rm
        23
    l1093178   2018-03-24 22:49:29 +08:00
    0.跑 find 之前应该用 -print 看看匹配到的文件
    1. find 可以直接 delete (-delete 参数),这是最安全的方式,不会因为文件名中间的空格误删其他文件
        24
    ryd994   2018-03-24 23:14:35 +08:00
    你的意思是说,你 /var/www/html/sorry/cache/ 里有. 和 ..两个文件?你该庆幸那里没有~
    楼上说的对,问题在于你没用-delete
        25
    lan894734188   2018-03-25 04:03:48 +08:00 via Android
    脚本从来不敢用删除
        26
    slack   2018-03-25 07:29:16 +08:00 via Android
    手残党们了解一下 https://linux.cn/article-9425-1.html
        27
    goreliu   2018-03-25 08:24:48 +08:00
    find 怎么会通过 .. 目录访问到上一层?那不是 find 什么目录都相当于全盘遍历了。是不是命令记错了。
        28
    dongxf   2018-03-25 10:38:03 +08:00
    楼上说的对,find 找不出‘.’ 和 ‘..’
    楼主的锅,find 不背
        29
    sutra   2018-03-25 13:35:06 +08:00
    man rescue 了解一下?
        30
    fhefh   2018-03-25 13:45:25 +08:00
    生产环境的机器 我一般重命名 宁愿占位置 也不删除~~
        31
    shihira   2018-03-25 17:12:00 +08:00
    以后 rm 都要 dry run 一遍才敢运行了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1041 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    ♥ Do have faith in what you're doing.