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

以后再不看清路径就 rm 我就是智障

  •  1
     
  •   SorryChen · 2017-10-25 00:52:59 +08:00 via iPhone · 10630 次点击
    这是一个创建于 2347 天前的主题,其中的信息可能已经有所发展或是发生改变。
    气死我了....本来打算今晚早睡的... 大家有什么 linux 防止误删的方式么... 今晚一手抖把实验数据全删了
    第 1 条附言  ·  2017-10-25 10:11:04 +08:00
    谢谢大家给的方法和建议,虚心接受了,谨记以后好好备份
    68 条回复    2017-10-26 16:12:34 +08:00
    stabc
        1
    stabc  
       2017-10-25 00:57:57 +08:00   ❤️ 1
    wafm
        2
    wafm  
       2017-10-25 00:58:16 +08:00
    养成备份的好习惯
    vmebeh
        3
    vmebeh  
       2017-10-25 01:03:06 +08:00
    尽量用自动不全路径

    曾经手抖在末尾的“/”前多按了个空格
    LittleYangYang
        4
    LittleYangYang  
       2017-10-25 01:17:44 +08:00   ❤️ 1
    我习惯在根目录下建了个作为垃圾箱的目录,每次删东西先 mv 到垃圾箱里面.....
    然后定期清一次垃圾箱...(逃
    stebest
        5
    stebest  
       2017-10-25 03:35:52 +08:00 via Android
    想到了 gitlab
    qdwang
        6
    qdwang  
       2017-10-25 06:26:09 +08:00 via iPhone
    只用 rm 删除应该可以恢复的
    Shabo
        7
    Shabo  
       2017-10-25 06:45:54 +08:00 via Android
    从删库到跑路
    whwq2012
        8
    whwq2012  
       2017-10-25 06:57:06 +08:00 via Android
    -i 参数,再确认一遍呗
    davidyin
        9
    davidyin  
       2017-10-25 07:04:34 +08:00
    尽量做到不用 rm 命令。
    XiaoFaye
        10
    XiaoFaye  
       2017-10-25 07:12:16 +08:00
    看不清路径不是问题,问题是你随便就加 -rf 吧?
    Cooky
        11
    Cooky  
       2017-10-25 07:14:24 +08:00 via Android
    用 debugfs 看看还能找回来么
    BearD01001
        12
    BearD01001  
       2017-10-25 07:25:10 +08:00 via iPhone
    cd 到带删目录上一级,rm 之前 ll 看下目录确认一遍 0.0
    wtks1
        13
    wtks1  
       2017-10-25 07:27:51 +08:00 via Android
    所以不要嫌麻烦,删的时候还是得用绝对路径
    onceyoung
        14
    onceyoung  
       2017-10-25 07:37:32 +08:00 via iPhone
    说出你的故事,alias rm 成 mv
    zjqzxc
        15
    zjqzxc  
       2017-10-25 07:53:20 +08:00   ❤️ 13
    以前觉得 windows 的回收站就是鸡肋

    现在觉得回收站的设计太牛逼了
    infinet
        16
    infinet  
       2017-10-25 07:56:47 +08:00
    你需要 Linux 的时光机器,不用谢。

    https://github.com/infinet/rsync-time-machine
    SorryChen
        17
    SorryChen  
    OP
       2017-10-25 08:00:35 +08:00 via iPhone
    昨晚用 extundelete 恢复了大半的数据...哎...以后要经常备份一点....上次是在三天前辈份...但是这三天干了好多活...
    northisland
        18
    northisland  
       2017-10-25 08:08:09 +08:00
    自己重做一个 rm,山前需要你输入一点确认信息,5 秒时间吧,然后再执行真正的 rm
    loading
        19
    loading  
       2017-10-25 08:15:55 +08:00 via Android
    用 mv 代替 rm
    andyhuzhill
        20
    andyhuzhill  
       2017-10-25 08:20:57 +08:00
    alias rm=rm -i
    araraloren
        21
    araraloren  
       2017-10-25 08:23:06 +08:00
    笔记本上用的 ptrash,虽说并不是多么好用,但比 rm 好太多了
    opengps
        22
    opengps  
       2017-10-25 08:26:00 +08:00 via Android
    最近刚出了一个笑话,回头我贴过来
    SpaceVim
        23
    SpaceVim  
       2017-10-25 08:29:40 +08:00
    我自己重写了 rm 脚本,只是目录保护,有些目录很重要的的,设置保护了以后删不掉的。
    SorryChen
        24
    SorryChen  
    OP
       2017-10-25 08:33:33 +08:00 via iPhone
    @SpaceVim 目前我也打算像你说的一样做个类似的东西...
    Rice
        25
    Rice  
       2017-10-25 08:44:29 +08:00
    一直心存侥幸,只到前天误删一个文件夹。
    我决定把 rm 改成 mv
    982341320
        26
    982341320  
       2017-10-25 09:00:18 +08:00 via iPhone
    我有个朋友也遇到一个很坑的问题,有个为"~"的文件夹,我朋友要删除,直接 rm -rf ~
    过了一两秒,还没删完,他说删空文件夹怎么那么慢,等他反应过来的时候,原来是把桌面目录下的全删了,他那痛苦的表情,我至今还记得
    opengps
        27
    opengps  
       2017-10-25 09:03:52 +08:00   ❤️ 15
    最新段子:
    我是一个 C 程序员,领导叫我去维护一个脚本,要求别删 cache 目录。我看了一下,原来写的是 rm -fr cache tmp。我想这还不简单,上来就把 cache 注释掉:rm -fr /* cache */ tmp。完美!
    ie88
        28
    ie88  
       2017-10-25 09:04:07 +08:00 via Android   ❤️ 4
    养成习惯,先 ls xxx
    然后把 ls 换成 rm -rf
    littleylv
        29
    littleylv  
       2017-10-25 09:10:44 +08:00
    @ie88 #28
    同理,删数据库时候也是
    select * from t1 where c1=1;
    确认结果是确定要删了后,把 select * 改成 delete
    stanjia
        30
    stanjia  
       2017-10-25 09:12:21 +08:00   ❤️ 2
    楼主,即使你不误删, 也会因为 硬盘坏掉,机器被偷等不可抗力导致数据丢失。
    除了应该养成平时普通用户,关键再 sudo/su 切换 root 以外,
    最根本的解决方案就是 做备份, 可通过 git 向其它硬件进行备份, 或者使用 rsync 进行定期同步。

    我想这也是 Unix/Linux shell 这么多年来,rm 的回收站机制不是默认配置的原因.
    Rice
        31
    Rice  
       2017-10-25 09:18:30 +08:00   ❤️ 1
    网上抄的这段能用
    mkdir -p ~/.trash
    alias rm=trash
    alias r=trash
    alias rl='ls ~/.trash'
    alias ur=undelfile
    undelfile()
    {
    mv -i ~/.trash/$@ ./
    }
    trash()
    {
    mv $@ ~/.trash/
    }
    cleartrash()
    {
    read -p "clear sure?[n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
    }
    oxoxoxox
        32
    oxoxoxox  
       2017-10-25 09:24:34 +08:00 via iPhone   ❤️ 1
    安装 trash-cli alias 为 rm 误删了还能到回收站找回
    minamike
        33
    minamike  
       2017-10-25 09:25:59 +08:00 via iPhone
    重要文件不备份才是智障 我重要文件都是网盘同步 然后定期 timemachine
    myself659410
        34
    myself659410  
       2017-10-25 09:28:52 +08:00
    1. 数据备份为先
    2. 删除命令保护(用 mv 代替)
    scriptB0y
        35
    scriptB0y  
       2017-10-25 09:31:31 +08:00
    感觉做好备份,方便恢复这条思路比防止误删好多了。

    防止误删肯定会带来繁琐的程序。
    hackevin
        36
    hackevin  
       2017-10-25 09:32:04 +08:00
    rm 后面绝对不要带路径,先进去确认几遍
    wujunchuan2008
        37
    wujunchuan2008  
       2017-10-25 09:42:37 +08:00
    我用 rmtrash 代替掉了 rm
    https://github.com/PhrozenByte/rmtrash
    noNOno
        38
    noNOno  
       2017-10-25 09:52:12 +08:00
    节哀...rm 之前建议养成习惯
    比如我,先打好目录,再输入 rm 命令
    skylancer
        39
    skylancer  
       2017-10-25 10:43:25 +08:00
    alias rm=rm -i
    兄弟

    手再快我就没办法了
    seasstyle
        40
    seasstyle  
       2017-10-25 10:45:59 +08:00
    欢迎和我一起格式化硬盘,各种格式化和抹盘,整个盘抹!对不要犹豫
    vjnjc
        41
    vjnjc  
       2017-10-25 11:09:40 +08:00
    要么 alias rm=rm -i
    要么给 linux 装个类似垃圾桶一样的功能,也用 alias rm=XXX
    MarcoQin
        42
    MarcoQin  
       2017-10-25 11:14:23 +08:00
    alias rm="trash-put"
    ChristopherWu
        43
    ChristopherWu  
       2017-10-25 12:36:22 +08:00
    rm 用 mv 代替,mv things_to_remove /tmp
    albertofwb
        44
    albertofwb  
       2017-10-25 12:41:14 +08:00 via Android
    @LittleYangYang 我习惯 mv to /tmp
    albertofwb
        45
    albertofwb  
       2017-10-25 12:42:46 +08:00 via Android
    @SpaceVim 这让我想起了 rootkit
    mcfog
        46
    mcfog  
       2017-10-25 12:51:39 +08:00 via Android   ❤️ 1
    alias rm 是非常糟糕的解决方案,这台服务器有别的服务器呢?你的用户有别的用户呢? terminal 里有 bash 脚本呢? rm 有保护了 chmod 呢?

    正确地打命令,养成确认命令的习惯,用合适的工具脚本避免手动操作还有备份等等才是正道,不要耍 alias 这样的小聪明
    scraft
        47
    scraft  
       2017-10-25 12:55:21 +08:00 via iPhone
    ^_^
    wsy2220
        48
    wsy2220  
       2017-10-25 13:47:04 +08:00 via Android
    rm -i 根本没有用,习惯以后就直接 yes 了
    RemRain
        49
    RemRain  
       2017-10-25 13:58:23 +08:00
    改变习惯,删文件用 rmdir 和 unlink 命令,偶尔非得用 rm -rf 的时候就会警觉。生产环境机器那么多,alias 的做法很容易坑到自己
    taotaolin
        50
    taotaolin  
       2017-10-25 13:59:57 +08:00
    习惯备份才是王道啊
    hei1000
        51
    hei1000  
       2017-10-25 14:03:19 +08:00
    使用 Linux 命令行的谁还没有误删系统文件的经历呢
    BoiledEgg
        52
    BoiledEgg  
       2017-10-25 14:03:48 +08:00
    常年 rm -rf 瑟瑟发抖
    libook
        53
    libook  
       2017-10-25 14:04:00 +08:00
    我以前用过 trash-cli,然后习惯一下不使用 rm
    RobertYang
        54
    RobertYang  
       2017-10-25 14:05:38 +08:00 via Android
    随手 tab 补全防止空格 23333
    discrete
        56
    discrete  
       2017-10-25 14:29:01 +08:00
    @stabc 我就说我 repo 今天突然这么多 star 233

    顺便说一下,楼上很多推荐用 trash (垃圾箱)类型的防护方法,我个人是吃过亏的。有时候真的不小心,重要数据给删了当时没发现,过两天随手清空了垃圾桶。再过一阵子突然想找文件才发现给误删了。

    所以才造了这个轮子: https://github.com/alanzchen/rm-protection
    woodelf
        57
    woodelf  
       2017-10-25 16:19:24 +08:00
    看到 LS 有 alias rm=rm -i 的,其实我想说这并没有什么卵用。
    目前看到不少情况是,rm -rf 和 sudo 的滥用已经令人发指了,甚至 deepin 官方人员在教用户删除时也会滥用 sudo+rm -rf,即使明知道那种情况下压根没必要用这种组合。
    所以,除了善用补全,还得改掉滥用提权和-f 参数的习惯。
    RainFinder
        58
    RainFinder  
       2017-10-25 17:05:15 +08:00
    还以为是 rm -rf
    nfroot
        59
    nfroot  
       2017-10-25 17:40:14 +08:00
    rd /s/q /
    xml123
        60
    xml123  
       2017-10-25 17:54:25 +08:00
    有没有这种配置,rm 之前先把要删的文件列一遍,然后延迟几秒再询问
    ppwangs
        61
    ppwangs  
       2017-10-25 17:54:42 +08:00
    首先要做到尽量别用 root 用户。。。
    zbl430
        62
    zbl430  
       2017-10-25 18:06:44 +08:00
    请注意,如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
    该文件的内容无法还原,请考虑使用 shred。

    要获取完整文档,请运行:info coreutils 'rm invocation'
    b821025551b
        63
    b821025551b  
       2017-10-25 18:09:25 +08:00   ❤️ 2
    alias rm=echo "please use 'iamsurethatiwanttousermandaccepttheconsequences' instead of 'rm'"
    alias iamsurethatiwanttousermandaccepttheconsequences = rm
    Aluhao
        64
    Aluhao  
       2017-10-25 19:12:37 +08:00
    删除这种操作最好不要直接在命令行直接去输入,我一般都是在编辑器里写好,检查无误后复制去执行
    sampeng
        65
    sampeng  
       2017-10-25 19:52:35 +08:00
    所以时间胶囊是个好东西的说
    limbo0
        66
    limbo0  
       2017-10-26 00:01:06 +08:00
    trash-cli
    或者 timemachine
    ThinkCat
        67
    ThinkCat  
       2017-10-26 09:35:39 +08:00
    alias rm mv 是正解
    SaltedFish12138
        68
    SaltedFish12138  
       2017-10-26 16:12:34 +08:00
    所有环境都要以 mv 代替 rm 阿
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:42 · PVG 03:42 · LAX 12:42 · JFK 15:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.