以后再不看清路径就 rm 我就是智障 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SorryChen
V2EX    DevOps

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

  •  1
     
  •   SorryChen 2017-10-25 00:52:59 +08:00 via iPhone 11620 次点击
    这是一个创建于 2960 天前的主题,其中的信息可能已经有所发展或是发生改变。
    气死我了....本来打算今晚早睡的... 大家有什么 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
    从删库到跑路
    syahd
        8
    syahd  
       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
    最近刚出了一个笑话,回头我贴过来
    nG29DOMuRYTWfcSr
        23
    nG29DOMuRYTWfcSr  
       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
    U7Q5tLAex2FI0o0g
        29
    U7Q5tLAex2FI0o0g  
       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 后面绝对不要带路径,先进去确认几遍
    wuunchuan2008
        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
    Alucns
        64
    Alucns  
       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     Solana     907 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:10 PVG 04:10 LAX 12:10 JFK 15:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86