Linux误删文件如何紧急恢复?

预防性操作(最佳实践)

  1. rm 替代方案:使用回收站工具
    安装 trash-cli 工具替代直接删除:

    sudo apt install trash-cli  # Debian/Ubuntu
    sudo dnf install trash-cli  # Fedora/CentOS
    • 删除文件trash-put filename(文件进入 ~/.local/share/Trash
    • 恢复文件trash-restore(交互式选择恢复)
    • 清空回收站trash-empty
  2. 关键操作前备份

    cp important.conf important.conf.bak  # 备份配置文件
    mv dir dir_backup && mkdir dir        # 重命名目录并新建(避免误删)

已执行命令的紧急补救

场景1:文件/目录误删

  • 恢复工具(需提前安装):
     sudo apt install extundelete  # ext3/ext4文件系统
     sudo apt install testdisk     # 通用工具(支持NTFS/FAT)
    • 步骤:
      1. 立即卸载分区:sudo umount /dev/sdX
      2. 使用 extundelete
        extundelete /dev/sdX --restore-file /path/to/file
    • ⚠️ 注意:停止写入数据,否则可能覆盖被删文件。

场景2:文本编辑撤销(Vim/Nano)

  • Vim
    • 撤销上一步:u
    • 撤销所有修改::q!(不保存退出)
  • Nano
    • 撤销:Alt + U(显示为 ^U
    • 退出不保存:Ctrl + X → 选 No

场景3:配置修改错误

  • 回滚到备份
    cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf  # 用备份覆盖
  • 版本控制系统(如Git):
    cd /etc/nginx
    git checkout -- nginx.conf  # 撤销未提交的更改

命令行操作中的撤销技巧

  1. 终止当前命令

    • Ctrl + C:强制结束正在运行的程序。
    • Ctrl + Z:挂起程序(用 fg 恢复或 kill %1 终止)。
  2. 清空输入行

    • Ctrl + U:删除光标前所有内容。
    • Ctrl + W:删除前一个单词。
  3. 历史命令修正

    • 查看历史:history(显示编号)
    • 重写错误命令:!编号:s/错误词/正确词/
      示例:修正 !105:s/abc/xyz/ 将历史第105条的 abc 替换为 xyz

系统级回退方案

  1. LVM快照(需提前配置):
    lvcreate --size 10G --snapshot --name snap01 /dev/vg0/lv0  # 创建快照
    lvconvert --merge /dev/vg0/snap01  # 恢复快照
  2. Timeshift(图形化工具):
    • 安装:sudo apt install timeshift
    • 定期自动创建系统快照,支持BTRFS/EXT4。

场景 解决方案 依赖条件
文件误删 extundelete/testdisk 未覆盖磁盘数据
配置错误 备份恢复/Git回滚 提前备份或版本控制
命令行输入错误 Ctrl+C/Ctrl+U/历史命令修正
长期可靠性需求 LVM快照/Timeshift 提前配置

📌 终极建议

  • 确认命令再回车:对 rmddmv 等危险命令逐字符检查。
  • 启用别名保护(添加到 ~/.bashrc):
    alias rm='rm -i'          # 删除前确认
    alias cp='cp -i'          # 覆盖前确认
    alias mv='mv -i'
  • 重要数据定期备份:使用 rsyncborg 工具到外部存储。

引用说明

  • Linux文件恢复工具:extundelete 官方文档
  • 系统快照方案:Timeshift GitHub项目
  • LVM管理指南:Red Hat官方手册
  • trash-cli 工具:GitHub仓库
    基于Linux核心原则:用户明确知晓操作后果,任何撤销操作均有局限性,预防优于补救。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9290.html

(0)
酷番叔酷番叔
上一篇 18小时前
下一篇 17小时前

相关推荐

  • 如何以管理员模式打开PowerShell?

    理解“进入Linux”的三种场景“进入Linux”通常指以下操作:物理设备直接操作:在已安装Linux的电脑上登录系统远程连接:通过网络访问Linux服务器虚拟机/容器环境:在现有操作系统中启动Linux环境物理设备直接登录(适用个人电脑)步骤详解:启动准备确保设备已安装Linux系统(如Ubuntu、Cent……

    2025年6月27日
    1600
  • Linux逐行读取文件哪种方法最高效?

    方法1:使用 while 循环 + read 命令(Bash脚本)适用场景:需要逐行处理并执行复杂操作的Bash脚本,命令示例:while IFS= read -r line; do echo "当前行内容: $line"done < "文件名.txt"解析:whi……

    2025年6月22日
    2200
  • 怎么用通用快捷键一键退出全屏?

    在使用Linux虚拟机时,全屏模式能提供沉浸式体验,但许多用户会因不熟悉操作而无法退出,以下是针对主流虚拟机软件的详细退出方法,操作前请确保已安装对应增强工具(如VirtualBox Guest Additions或VMware Tools),否则部分功能可能失效,无论使用哪种虚拟机软件,优先尝试以下组合键:默……

    2025年7月21日
    1100
  • 如何正确使用 sudo 命令?

    在Linux系统中,root用户拥有最高权限,可执行所有操作(包括修改系统文件、安装软件等),但滥用root权限可能导致系统崩溃或安全风险,因此需谨慎操作,以下是几种以root身份执行命令的方法,每种方法均附使用场景和注意事项:sudo(Super User Do)允许授权用户临时以root权限执行命令,无需切……

    2025年6月13日
    2300
  • 这样洗碗细菌减少90%?

    执行C程序的完整流程编写C代码使用文本编辑器(如nano、vim或gedit)创建.c文件:nano hello.c输入示例代码: printf("Hello, Linux!\n"); return 0;}安装编译工具Linux默认不安装编译器,需通过包管理器安装GCC(GNU Compil……

    2025年7月19日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信