首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

Linux 如何避免误删操作?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    个人觉得还是最小权限原则,一般读就行,需要切换到 root,则小心谨慎,慢一点。权利越大,责任越大
        31
    EridanusSora   332 天前 via Android
    交叉确认,把命令读出来,另一个在场的执行
        32
    lengyihan   332 天前 via Android
    用 mv 代替 rm
        33
    q397064399   332 天前   ♥ 2
    喝酒不 sudo , sudo 不喝酒 只要做到这一条就没事
        34
    quinoa42   332 天前
    重要文件都 git 或者 dropbox 备份(取决于是二进制为主还是文本文件为主)
    不重要的嘛,删了就删了
        35
    liangzi   331 天前
        36
    my3157   331 天前
    rm 操作都有二次输入主机名确认, 还是被 rm -rf /* 了
        37
    easonl   331 天前
    别老是 sudo~
        38
    dany813   331 天前
    @v2dead 老哥稳
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3883 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 37ms · UTC 09:44 · PVG 17:44 · LAX 01:44 · JFK 04:44
    ♥ Do have faith in what you're doing.