Linux 如何避免误删操作? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
HarryQu
V2EX    Linux

Linux 如何避免误删操作?

  •  
  •   HarryQu 2018 年 12 月 15 日 6226 次点击
    这是一个创建于 2637 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如遇到像楼主一样的手残党 :

    一不小心将某个目录下的文件 rm -rf

    或者不小心将某个文件覆盖 cat test.log > config

    或者错误编辑文件并且保存后,如何回滚 ?

    如何在低级的失误发生后,进行补救 ?

    你们是用 git 对某些重要目录进行版本控制 ?
    38 条回复    2018-12-17 10:06:22 +08:00
    phoebuss
        1
    phoebuss  
       2018 年 12 月 15 日 via Android
    建个 wrapper, 把常用危险命令都软链接替换了… wrapper 里检查危险操作…
    HarryQu
        2
    HarryQu  
    OP
       2018 年 12 月 15 日
    @phoebuss Thanks , 查了下 ,通过这种方式 , 还可以建立一个回收站 , 将删除的文件,暂时放入到回收站中。
    likuku
        3
    likuku  
       2018 年 12 月 15 日   1
    整体换用带有 快照 /snapshot 功能的 FS/存储 (ZFS, Btrfs, LVM),crontab 作自动定时快照。
    HarryQu
        4
    HarryQu  
    OP
       2018 年 12 月 15 日
    @likuku Thanks , 才发现有自动定期快照的功能。
    likuku
        5
    likuku  
       2018 年 12 月 15 日 via iPhone
    @HarryQu 不不不,大部分 linux 发行版,这个不是标配功能( xmbc pi 发型版自带,默认开启,早年 openSolaris 也自带)。

    属于需要自己“土法炼钢”
    season4675
        6
    season4675  
       2018 年 12 月 15 日
    改掉动不动就 sudo su 的毛病…… git 经常提交……
    jtsai
        7
    jtsai  
       2018 年 12 月 15 日 via Android
    备份
    Hardrain
        8
    Hardrain  
       2018 年 12 月 15 日
    alias rm='rm -i'

    少用 rm -rf,要删除的移动到一个目录,cron 定期删除。

    >尽量不用,或者先 mv 重命名备份原文件再用>
    ipwx
        9
    ipwx  
       2018 年 12 月 15 日
    我个人不喜欢 alias 大法。我更喜欢纠正自己的错误,而不是放任自己的错误。

    当然必要的防御措施是需要的。比如经常 git commit & push,比如非 git 文件全部网盘同步(包括还有一个 群晖 NAS )。
    likuku
        10
    likuku  
       2018 年 12 月 15 日
    你们用 NAS 的开自动快照么?

    不开,也“可能” 把 “工作机上的误删除动作同步到 NAS,而让 NAS 的那份也被删改”。

    # “可能”,因为假若不是完全同步,只增不删;若被新的空文件覆盖,也一样等同删除。
    cein
        11
    cein  
       2018 年 12 月 15 日
    建一个类似于回收站的文件夹,把 rm 命令替换成 mv,所有 rm 的文件移动到这个文件夹下,定期清理一下这个文件夹,当个回收站
    xml123
        12
    xml123  
       2018 年 12 月 15 日
    这些方法都没办法解决重定向的时候把文件覆盖的问题吧
    masker
        13
    masker  
       2018 年 12 月 15 日 via Android
    不用 Linux 就能避免
    v2dead
        14
    v2dead  
       2018 年 12 月 15 日   3
    真男人是不需要这些奇巧淫记的,核心问题还在于你不够重视。你把每次操作都当成是打仗,增强自己仪式感。每输入一次 rm 就先沐浴净身,洗净手指,换上先辈的键盘。一个字符一个字符敲。这特么能出什么问题?
    越整这些没用的越容易大意出问题,好像线上操作跟开玩笑似的。
    pkookp8
        15
    pkookp8  
       2018 年 12 月 15 日 via Android
    系统文件误操作的解决办法就是尽量不用 sudo,能自己用户完成的不要用 root,我去同事电脑上帮他看东西经常告诉我权限不够,一看,全是 root 权限的文件,告诫了几次都不听,可能没遇过事所以听不进去
    本用户文件的话,代码记得经常执行 git push 或 svn ci,反正 merge 到 master 后不特意看也看不到多余的日志,git 和 svn 都是记录差异也不太会塞满服务器。非代码的话,少用 rm,mv test test.bak ,然后继续操作。写个脚本加到 crond 里定期 rm 时间久的 bak 文件
    pkookp8
        16
    pkookp8  
       2018 年 12 月 15 日 via Android
    @pkookp8 本地文件还可以建立一个本地 git 服务,上传上去。删了也可以恢复,除非硬盘坏了或格式化硬盘,那没辙
    hoyixi
        17
    hoyixi  
       2018 年 12 月 15 日
    你既然都 -f 了,还防止个啥,给你防止机会,你自己放弃了
    loading
        18
    loading  
       2018 年 12 月 15 日   2
    alias rm=trash
    ipwx
        19
    ipwx  
       2018 年 12 月 15 日
    @likuku NAS 里面我放不常使用的文件,做存档用,因为容量大。

    常用的我用 Dropbox 和 iCloud。
    polaa
        20
    polaa  
       2018 年 12 月 15 日 via iPad   1
    不是很推荐 alias
    习惯是个很可怕的东西
    smdbh
        21
    smdbh  
       2018 年 12 月 15 日
    可以使用图形界面啊, 也有回收站哦
    ansyx
        22
    ansyx  
       2018 年 12 月 15 日 via Android
    用 mv 命令移动到指定位置。禁用 rm
    silvernoo
        23
    silvernoo  
       2018 年 12 月 16 日
    用 mv -r / .也会弄坏系统。
    ericls
        24
    ericls  
       2018 年 12 月 16 日 via iPhone
    需要交几次学费 就记住了
    boris1993
        25
    boris1993  
       2018 年 12 月 16 日 via Android
    就是长心眼,危险操作多检查,没事别用 root
    akira
        26
    akira  
       2018 年 12 月 16 日
    做好备份
    做好备份
    做好备份
    这个比什么都实在
    msg7086
        27
    msg7086  
       2018 年 12 月 16 日
    避免误操作的方式就是减少误操作的几率,而不是蛇皮走位天天误操作然后指望让程序去聪明地阻止你。
    操作之前认真计划,操作时仔细确认,按下回车之前确认好自己的操作是否正确,然后再按下回车键。
    很多人说用 sudo。sudo 对于 sysadmin 有个锤子用。本来你用 root 权限瞎瘠薄操作,现在你每个命令之前加上 sudo 然后继续瞎瘠薄操作,有啥区别……

    拿飞行举个例子。
    一个机长老是忘记自己该干啥,跑道上都准备起飞了,飞行电脑开始抱怨,襟翼忘了拉,手刹忘了放,配平忘了配,信号灯忘了开,起飞速度忘了输入,构型警告禁止起飞。然后再手忙脚乱跟着电脑的要求把东西弄好。
    另一个机长在滑行的时候就跟着检查单把事情一样一样检查确认完毕,到了起飞的时候就可以自信拉杆一把梭了。
    同样坐飞机,你选那个全靠别人拉着否则就翻车的机长,还是那个认真做好自己工作,不依靠别人的机长。
    OscarUsingChen
        28
    OscarUsingChen  
       2018 年 12 月 16 日 via iPhone   1
    感觉 alias 是个很危险的办法
    在自己的电脑上大手大脚惯了,换到新系统上就容事出事故
    redapple02043
        29
    redapple02043  
       2018 年 12 月 16 日
    用 onedrive 的第三方 cli 版本把整个文件夹实时同步好了= =
    iyaozhen
        30
    iyaozhen  
       2018 年 12 月 16 日 via Android   1
    线上操作几百台机器,alias 有个锤子用,又不能都配置。

    个人觉得还是最小权限原则,一般读就行,需要切换到 root,则小心谨慎,慢一点。权利越大,责任越大
    EridanusSora
        31
    EridanusSora  
       2018 年 12 月 16 日 via Android
    交叉确认,把命令读出来,另一个在场的执行
    lengyihan
        32
    lengyihan  
       2018 年 12 月 16 日 via Android
    用 mv 代替 rm
    q397064399
        33
    q397064399  
       2018 年 12 月 16 日   2
    喝酒不 sudo , sudo 不喝酒 只要做到这一条就没事
    quinoa42
        34
    quinoa42  
       2018 年 12 月 16 日
    重要文件都 git 或者 dropbox 备份(取决于是二进制为主还是文本文件为主)
    不重要的嘛,删了就删了
    liangzi
        35
    liangzi  
       2018 年 12 月 16 日
    my3157
        36
    my3157  
       2018 年 12 月 16 日
    rm 操作都有二次输入主机名确认, 还是被 rm -rf /* 了
    easonl
        37
    easonl  
       2018 年 12 月 16 日
    别老是 sudo~
    dany813
        38
    dany813  
       2018 年 12 月 17 日
    @v2dead 老哥稳
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1617 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:32 PVG 00:32 LAX 08:32 JFK 11:32
    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