当前位置: 首页 > news >正文

【教程】Linux使用git自动备份和使用支持文件恢复的rm命令

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]

背景介绍

        首先非常不幸地告诉你:Linux 系统的标准 rm 命令不支持文件恢复功能。一旦使用 rm 删除了文件或目录,它们就会从文件系统中永久删除,除非你使用专门的文件恢复工具尝试恢复这些文件。

        不过,为了提供文件恢复功能,存在一些替代方案,其中 trash-cli 是一个非常流行的选择,它为命令行环境提供了回收站功能。

        很心疼,我的工程又一次被我误删了。

方案介绍

使用git自动备份

        这个方法大家都知道,每次记得提交一下,如果误删除了可以回退,只是每次要提交很麻烦。

参考的自动提交脚本auto_git.sh

#!/bin/bash# 指定git仓库的目录
repo_dir="/mnt/disk/test"
# 指定日志文件路径
log_file="/mnt/disk/test/git_backup.log"# 记录操作开始的时间
echo "Auto Backup Start at $(date)" >> "$log_file"# 检查是否为git仓库,如果不是则初始化
if [ ! -d "$repo_dir/.git" ]; thenecho "Initializing git repository in $repo_dir" >> "$log_file"git -C "$repo_dir" init >> "$log_file" 2>&1
fi# 执行git操作
cd "$repo_dir" || exit
git add .
git commit -m "Auto Backup on $(date +'%Y-%m-%d %H:%M:%S')"
# git push origin main >> "$log_file" 2>&1# 记录操作结束的时间
echo "Backup completed at $(date)" >> "$log_file"

加入crontab:

crontab -e

添加内容:*/10 * * * * /mnt/disk/test/auto_git.sh

备份效果:

使用trash-cli代替rm

   trash-cli 提供了一系列命令行工具,模拟了图形界面下回收站的行为,允许用户将文件“删除”到回收站,从而可以在需要时恢复这些文件。如果你想要一个支持文件恢复的 rm 指令,可以考虑将 trash-cli 集成到你的工作流程中。

安装trash-cli

在Ubuntu系统上,你可以通过以下命令安装trash-cli

sudo apt updatesudo apt install trash-cli

使用trash-cli的基本命令

官方文档:https://github.com/andreafrancia/trash-cli/blob/master/README_zh-CN.rst

trash-cli 提供以下命令:

trash-put           把文件或目录移动到回收站
trash-empty         清空回收站
trash-list          列出回收站文件
trash-restore       恢复回收站文件
trash-rm            删除回收站文件
  • 删除文件或目录: 使用trash-put命令将文件或目录放入垃圾箱。例如,要删除名为example.txt的文件,你可以使用:

    trash-put example.txt
  • 列出垃圾箱中的内容: 使用trash-list命令查看垃圾箱中的文件。这将显示垃圾箱中所有文件的列表,包括删除日期。

    trash-list

  • 恢复垃圾箱中的文件: 使用trash-restore命令从垃圾箱中恢复文件。这个命令会启动一个交互式界面,让你选择要恢复的文件。

    trash-restore

  • 清空垃圾箱: 使用trash-empty命令清空垃圾箱中的所有内容。你也可以指定保留最近N天内删除的文件不被删除,例如,保留最近7天内删除的文件:

    trash-empty 7

    不带参数运行trash-empty将清空垃圾箱中的所有文件。

  • 删除特定文件: 如果你知道要删除的文件的确切名称,可以使用trash-rm命令从垃圾箱中删除特定文件。例如,删除垃圾箱中所有名为example.txt的文件:

    trash-rm example.txt

    注意事项

  • 使用trash-cli时,删除的文件会被移动到一个专门的目录(通常是~/.local/share/Trash),而不是被立即从文件系统中永久删除。
  • trash-cli提供了一种安全删除文件的方式,因为你有机会恢复错误删除的文件。
  • 确保定期检查和清理垃圾箱,以避免它占用过多的磁盘空间。

创建别名以替代 rm

        如果你习惯于使用 rm 命令,并且想要一个不那么永久的删除操作,可以通过在你的 shell 配置文件中(如 .bashrc.zshrc)设置别名来实现。通过设置别名,当你输入 rm 时,实际上可以调用 trash-put

        在你的 .bashrc.zshrc 文件中添加以下行:

alias rm='trash-put'

        保存文件并重新加载配置(通过执行 source ~/.bashrcsource ~/.zshrc),之后,当你在终端中使用 rm 命令时,实际上会使用 trash-put,这样删除的文件就可以恢复了。

附:使用文件恢复工具

有多种Linux文件恢复工具可用来尝试恢复删除的文件,例如:

  • TestDisk:一个强大的恢复工具,可以恢复丢失的分区和非常有效地恢复删除的文件。
  • PhotoRec:由TestDisk开发者创建,专注于恢复图像、视频、文档等文件类型,从磁盘、相机和内存卡中。
  • extundelete:对于使用Ext3或Ext4文件系统的磁盘,这个工具可以尝试恢复删除的文件。
  • foremost:是一个基于文件头和尾信息恢复文件的工具,可以工作在各种文件系统上。

(基本上用处不大的)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 93 log4j-slf4j-impl 搭配上 log4j-to-slf4j 导致的 StackOverflow
  • Rust语言入门小结(第1篇)
  • SQL,HQL刷题,尚硅谷
  • 【MySQL】字符串函数的学习
  • 使用代理IP有风险吗?如何安全使用代理IP?
  • STM32 硬件随机数发生器(RNG)
  • GNU C和标准C
  • Redis(十三)缓存双写一致性策略
  • 在Ubuntu22.04上部署ComfyUI
  • 【51单片机】外部中断和定时器中断
  • 【数据结构】链表OJ面试题5(题库+解析)
  • Java异常处理 throw和throws
  • 黄金交易策略(Nerve Knife):反趋势锁定单的处理机制
  • RISC-V指令格式
  • 2024.2.5 vscode连不上虚拟机,始终waiting for server log
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • ES6系统学习----从Apollo Client看解构赋值
  • Javascript 原型链
  • js操作时间(持续更新)
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • webpack入门学习手记(二)
  • 分布式事物理论与实践
  • 马上搞懂 GeoJSON
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • (152)时序收敛--->(02)时序收敛二
  • (备份) esp32 GPIO
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)Hibernate的二级缓存
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)为什么要选择C++
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • *** 2003
  • .DFS.
  • .NET 4.0中的泛型协变和反变
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net6 Api Swagger配置
  • .netcore如何运行环境安装到Linux服务器
  • ?.的用法
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @ModelAttribute使用详解
  • @RequestParam详解
  • [ 转载 ] SharePoint 资料
  • []串口通信 零星笔记
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
  • [Android 数据通信] android cmwap接入点
  • [AR]Vumark(下一代条形码)