• 请不要在回答技术问题时复制粘贴 AI 生成的内容
diveIntoWork
V2EX  ›  程序员

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

  •  
  •   diveIntoWork · Mar 24, 2018 · 8235 views
    This topic created in 3157 days ago, the information mentioned may be changed or developed.

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

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

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

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

    常在河边走,终于湿鞋了

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

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

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