【教程】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:是一个基于文件头和尾信息恢复文件的工具,可以工作在各种文件系统上。

(基本上用处不大的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/253066.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring基础】从0开始学习Spring(2)

前言 在上篇文章,我已经讲了Spring中最核心的知识点:IoC(控制反转)以及DI(依赖注入)。这篇文章,我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点,因此&#xff…

灵敏可靠的缓激肽(Bradykinin)ELISA检测试剂盒

灵敏可靠的ELISA试剂盒,用于检测血浆、血清和尿液样本中的缓激肽 缓激肽(Bradykinin)于1949年被发现,由血浆中的球蛋白前体在蛋白酶的作用下生成。它的名字表明它会促使肠道缓慢运动。早在1909年,人们就注意到在尿液中…

动态内存管理(2)

文章目录 4. 几个经典的笔试题4.1 题目14.2 题目24.3 题目34.4 题目4 5. C/C程序的内存开辟6. 动态通讯录7. 柔性数组7.1 柔性数组的特点7.2 柔性数组的使用7.3 柔性数组的优势 4. 几个经典的笔试题 4.1 题目1 #include <stdio.h> #include <stdlib.h> #include …

【极数系列】Flink集成KafkaSink 实时输出数据(11)

文章目录 01 引言02 连接器依赖2.1 kafka连接器依赖2.2 base基础依赖 03 使用方法04 序列化器05 指标监控06 项目源码实战6.1 包结构6.2 pom.xml依赖6.3 配置文件6.4 创建sink作业 01 引言 KafkaSink 可将数据流写入一个或多个 Kafka topic 实战源码地址,一键下载可用&#xf…

零代码3D可视化快速开发平台

老子云平台 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。此技术已经在全球申请了专利…

李宏毅LLM——生成式学习的两种策略

文章目录 生成式学习的两种策略&#xff1a;各个击破和一次到位成为专才&#xff1a;成为通才神秘的 In-context Learning 能力Instruction LearningChain of Thought Prompting 生成式学习的两种策略&#xff1a;各个击破和一次到位 对应视频的 P7-P11 生成有结构的复杂物件也…

(2)(2.14) SPL Satellite Telemetry

文章目录 前言 1 本地 Wi-Fi&#xff08;费用&#xff1a;30 美元以上&#xff0c;范围&#xff1a;室内&#xff09; 2 蜂窝电话&#xff08;费用&#xff1a;100 美元以上&#xff0c;范围&#xff1a;蜂窝电话覆盖区域&#xff09; 3 手机卫星&#xff08;费用&#xff…

React+Echarts实现数据排名+自动滚动+Y轴自定义toolTip文字提示

1、效果 2、环境准备 1、react18 2、antd 4 3、代码实现 原理&#xff1a;自动滚动通过创建定时器动态更新echar的dataZoom属性startValue、endValue&#xff0c;自定义tooltip通过监听echar的鼠标移入移出事件&#xff0c;判断tooltTip元素的显隐以及位置。 1、导入所需组…

CSS太极动态图

CSS太极动态图 1. 案例效果 我们今天学习用HTML和CSS实现动态的太极&#xff0c;看一下效果。 2. 分析思路 太极图是由两个旋转的圆组成&#xff0c;一个是黑圆&#xff0c;一个是白圆。实现现原理是使用CSS的动画和渐变背景属性。 首先&#xff0c;为所有元素设置默认值为0…

uniapp 本地存储的方式

1. uniapp 本地存储的方式 在uniapp开发中&#xff0c;本地存储是一个常见的需求。本地存储可以帮助我们在客户端保存和管理数据&#xff0c;以便在应用程序中进行持久化存储。本文将介绍uniapp中本地存储的几种方式&#xff0c;以及相关的代码示例。 1.1. 介绍 在移动应用开发…

【成品论文】2024美赛B题完整成品论文23页+3小问matlab代码+数据集汇总

2024 年美国大学生数学建模竞赛&#xff08;2024 美赛&#xff09;B 题&#xff1a; 2024 MCM 问题 B: 搜寻潜水艇 题目翻译&#xff1a; Maritime Cruises Mini-Submarines (MCMS)是一家总部位于希腊的公司&#xff0c;专门制造能够携 带人类到达海洋最深处的潜水艇。潜水艇是…

git小白进阶之路

git是最常用的版本控制工具&#xff0c;我对其进行了整理后续补充&#xff0c;这个文档欢迎大家来讨论&#xff0c;当前我的视频梳理&#xff1a; git小白进阶之路_哔哩哔哩_bilibili&#xff0c;非常希望大佬们能够批评指正&#xff0c;并多多交流。 目录 初始配置 配置账号…

多维时序 | MATLAB实现基于CNN-LSSVM卷积神经网络-最小二乘支持向量机多变量时间序列预测

多维时序 | MATLAB实现基于CNN-LSSVM卷积神经网络-最小二乘支持向量机多变量时间序列预测 目录 多维时序 | MATLAB实现基于CNN-LSSVM卷积神经网络-最小二乘支持向量机多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-LSSVM卷积神经…

python二维数组初始化的一个极其隐蔽的bug(浅拷贝)

初始化一个三行三列的矩阵 m n 3初始化方式1 a [[0 for i in range(m)] for j in range(n)]初始化方式2 b [] row [0 for i in range(0,m)] for i in range(0,n):b.append(row)分别输出两个初始化的结果 for row in a:print(row) for row in b:print(row)当前的输出为…

大华 DSS 数字监控系统 attachment_getAttList.action SQL 注入漏洞复现

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS存在SQL注入漏洞,攻击者 /portal/attachment_getAttList.action 路由发送特殊构造的数据包,利用报错注入获…

2024-02-06(Sqoop)

1.Sqoop Apache Sqoop是Hadoop生态体系和RDBMS&#xff08;关系型数据库&#xff09;体系之间传递数据的一种工具。 Sqoop工作机制是将导入或者导出命令翻译成MapReduce程序来实现。在翻译出的MapReduce中主要是对inputformat和outputformat进行定制。 Hadoop生态包括&#…

MATLAB环境下生成对抗网络系列(11种)

为了构建有效的图像深度学习模型&#xff0c;数据增强是一个非常行之有效的方法。图像的数据增强是一套使用有限数据来提高训练数据集质量和规模的数据空间解决方案。广义的图像数据增强算法包括&#xff1a;几何变换、颜色空间增强、核滤波器、混合图像、随机擦除、特征空间增…

告别mPDF迎来TCPDF和中文打印遇到的问题

mPDF是一个用PHP编写的开源PDF生成库。它最初由Claus Holler创建&#xff0c;于2004年发布。原来用开源软件打印中文没有问题&#xff0c;最近发现新的软件包中mPDF被TCPDF代替了&#xff0c;当然如果只用西文的PDF是没有发现问题&#xff0c;但要打印中文就有点抓瞎了如图1&am…

选择大语言模型:2024 年开源 LLM 入门指南

作者&#xff1a;来自 Elastic Aditya Tripathi 如果说人工智能在 2023 年起飞&#xff0c;这绝对是轻描淡写的说法。数千种新的人工智能工具被推出&#xff0c;人工智能功能被添加到现有的应用程序中&#xff0c;好莱坞因对这项技术的担忧而戛然而止。 甚至还有一个人工智能工…

【计算机网络】Socket的SO_TIMEOUT与连接超时时间

SO_TIMEOUT选项是Socket的一个选项&#xff0c;用于设置读取数据的超时时间。它指定了在读取数据时等待的最长时间&#xff0c;如果在指定的时间内没有数据可读取&#xff0c;将抛出SocketTimeoutException异常。 SO_TIMEOUT的设置 默认情况下&#xff0c;SO_TIMEOUT选项的值…