SorryChen
V2EX  ›  DevOps

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

  •  1
     
  •   SorryChen · Oct 25, 2017 via iPhone · 12699 views
    This topic created in 3307 days ago, the information mentioned may be changed or developed.
    气死我了....本来打算今晚早睡的... 大家有什么 linux 防止误删的方式么... 今晚一手抖把实验数据全删了
    Supplement 1  ·  Oct 25, 2017
    谢谢大家给的方法和建议,虚心接受了,谨记以后好好备份
    68 replies  •  2017-10-26 16:12:34 +08:00
    wafm
    wafm
    Oct 25, 2017
    2
    养成备份的好习惯
    vmebeh
    vmebeh
    Oct 25, 2017
    3
    尽量用自动不全路径

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

    现在觉得回收站的设计太牛逼了
    infinet
    infinet
    Oct 25, 2017
    16
    你需要 Linux 的时光机器,不用谢。

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

    我想这也是 Unix/Linux shell 这么多年来,rm 的回收站机制不是默认配置的原因.
    Rice
    Rice
    Oct 25, 2017❤️1
    31
    网上抄的这段能用
    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
    oxoxoxox
    Oct 25, 2017 via iPhone❤️1
    32
    安装 trash-cli alias 为 rm 误删了还能到回收站找回
    minamike
    minamike
    Oct 25, 2017 via iPhone
    33
    重要文件不备份才是智障 我重要文件都是网盘同步 然后定期 timemachine
    myself659410
    myself659410
    Oct 25, 2017
    34
    1. 数据备份为先
    2. 删除命令保护(用 mv 代替)
    scriptB0y
    scriptB0y
    Oct 25, 2017
    35
    感觉做好备份,方便恢复这条思路比防止误删好多了。

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

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

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

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

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

    要获取完整文档,请运行:info coreutils 'rm invocation'
    b821025551b
    b821025551b
    Oct 25, 2017❤️2
    63
    alias rm=echo "please use 'iamsurethatiwanttousermandaccepttheconsequences' instead of 'rm'"
    alias iamsurethatiwanttousermandaccepttheconsequences = rm
    Alucns
    Alucns
    Oct 25, 2017
    64
    删除这种操作最好不要直接在命令行直接去输入,我一般都是在编辑器里写好,检查无误后复制去执行
    sampeng
    sampeng
    Oct 25, 2017
    65
    所以时间胶囊是个好东西的说
    limbo0
    limbo0
    Oct 26, 2017
    66
    trash-cli
    或者 timemachine
    ThinkCat
    ThinkCat
    Oct 26, 2017
    67
    alias rm mv 是正解
    SaltedFish12138
    SaltedFish12138
    Oct 26, 2017
    68
    所有环境都要以 mv 代替 rm 阿
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   965 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    ♥ Do have faith in what you're doing.