Linux-笔记 OverlayFS文件系统小应用 恢复功能

前言

        通过另一章节  OverlayFS文件系统入门  中已经大致了解了原理,这里来实现一个小应用。通过前面介绍我们已经知道lowerdir是只读层,upperdir是可读写层,merged是合并层(挂载点),那么我们可以利用这个机制来实现一个恢复出厂的应用。

        通过入门那章我们知道在挂载点的任何操作都只会影响upperdir,而lowerdir不影响,我们删除过挂载点的文件,这个文件本身是来自lowerdir的,但是删除后其实不会影响lowerdir,其实,我们也可以删除upperdir中的文件,也是不会影响lowerdir的,只会影响挂载点,因为挂载点是lowerdir与upperdir的合并。所以我们可以利用这个机制实现恢复出厂。

        首先将我们想要保护的目录设置为lowerdir,upperdir与work我们另创建目录,最重要的点来了,那就是挂载点要选择我们指定的lowerdir,也就是自己挂自己,虽然原理上我们是不能直接操作lowerdir的,但是我们的挂载点也是lowerdir,挂载点是可以操作的。挂载以后我们就可以正常操作了,当我们想恢复出厂的时候就把upperdir中的相关对应的目录内容删除但不删除目录本身,删除后重新启动lowerdir就会恢复原样,而lowerdir也是我们的挂载点,从而实现恢复出厂。

        理论上可以将整个根目录挂载上,从而实现全机的恢复出厂,但是后来通过验证会有些奇奇怪怪的问题出现,可能就是因为lowerdir本身是不可以直接操作的原因。所以这里只是为了验证可以实现。这里就以挂载

实现

        1、先在根目录创建upper、work目录,并在各文件夹内初建opt目录,因为我们要实现根目录下opt目录的恢复出厂功能。

cd /
mkdir -p /upper/opt /work/opt

        2、挂载文件系统,将/opt作为lowerdir挂载到/opt。

mount -t overlay overlay -o lowerdir=/opt,upperdir=/upper/opt,workdir=/work/opt /opt

        3、在/opt内新建目录test,并在其内新建abc文件,模拟后续开发,然后去/upperdir查看。可以看到在挂载点也就是/opt下新建的文件在upperdir也出现了。

                                

        4、实现恢复出厂,将/upper/opt/内的所有内容清空,但是保留/upper/opt目录。然后查看/opt内是否还有之前新建的abc.txt,可以看到已经恢复出厂了。

                                

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        5、可以看到这种方法是可以实现恢复出厂的。但是有一个问题就是每次开机都得自己去挂载,很麻烦,如果可以通过开机自动挂载就可以很方便,可以利用写一个脚本来实现自动挂载。删除upperdir目录的内容也可以写一个脚本,执行才方便。

脚本

1)挂载脚本

#!/bin/bashecho "Start mounting OverlayFS for /opt"# 处理 /opt 目录
dir="opt"
if [ -d /$dir ]; thenecho "Processing directory: /$dir"workdir=/work/work_$dirupdir=/upper/upper_$dirif [ ! -d $updir ]; thenmkdir -p $updirecho "Created upper directory: $updir"fiif [ ! -d $workdir ]; thenmkdir -p $workdirecho "Created work directory: $workdir"fimount -t overlay overlay -o lowerdir=/$dir,upperdir=$updir,workdir=$workdir /$direcho "Mounted overlay for: /$dir"
elseecho "/$dir directory does not exist."
fiecho "Finished mounting OverlayFS for /opt"

2)删除脚本

#!/bin/bashTARGET_DIR="/upper"# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; thenecho "Directory $TARGET_DIR does not exist."exit 1
fiecho "Start cleaning contents of $TARGET_DIR"# 查找 TARGET_DIR 中的所有子目录并删除其中文件
find "$TARGET_DIR" -type d | while read -r dir; doecho "Cleaning contents of directory: ${dir}"find "$dir" -maxdepth 1 -type f -exec rm -f {} +
doneecho "Finished cleaning contents of $TARGET_DIR"

总结

        这个小应用只是选取opt目录进行恢复,本质上可以将整个根目录挂载上,但是为了保险起见需要换根目录去实现,更多的细节就不再实现,后续有需求再去研究。

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

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

相关文章

【网络】计算机网络-基本知识

目录 概念计算机网络功能计算机网络的组成计算机网络的分类 网络地址网络地址的分类 计算机网络相关性能指标速率带宽吞吐量时延时延的种类: 时延带宽积往返时延RTT利用率 概念 计算机网络是指将多台计算机通过通信设备连接起来,实现数据和资源的共享。…

pandas数据分析(1)

pandas,即Python数据分析库(Python data analysis library) DataFrame和Series DataFrame(数据帧)和Series(序列)是pandas的核心数据结构。DataFrame的主要组件包含索引、列、数据。DataFrame和…

架构设计上中的master三种架构,单节点,主从节点,多节点分析

文章目录 背景单节点优点缺点 主从节点优点缺点 多节点优点缺点 多节点,多backup设计优点缺点 总结 背景 在很多分布式系统里会有master,work这种结构。 master 节点负责管理资源,分发任务。下面着重讨论下master 数量不同带来的影响 单节点 优点 1.设…

二叉搜索数的最小绝对差-二叉树

需要用到中序遍历 中序遍历 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 递归 class Solution { public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;inoder(root,res);return res;}void inoder(TreeNode* root , vector…

代码随想录-二叉搜索树(1)

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 98. 验证二叉搜索树 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 530. 二叉搜索树的最小绝对差 题目描述&#x…

Python和MATLAB粘性力接触力动态模型半隐式欧拉算法

&#x1f3af;要点 &#x1f3af;运动力模型计算制作过程&#xff1a;&#x1f58a;相机捕捉网球运动图&#xff0c;制定运动数学模型&#xff0c;数值微分运动方程 | &#x1f58a;计算运动&#xff0c;欧拉算法离散积分运动&#xff0c;欧拉-克罗默算法微分运动方程 &#…

linux的CP指令

实现 CP 指令 src 源文件 des 目标文件 执行流程&#xff1a; 打开源文件&#xff08; src &#xff09; open 打开目标文件&#xff08; des &#xff09; open 写入目标文件 write 读取 src 文件到缓存数组 read 关闭目标文件和源文件 close ./a.out src.c de…

【Linux】进程 | 控制块pcb | task_struct | 创建子进程fork

目录 Ⅰ. 进程的概念&#xff08;Process&#xff09; 1. 什么是进程&#xff1f; 2. 多进程管理 3. 进程控制块&#xff08;PCB&#xff09; task_struct 的结构 Ⅱ. 进程查看与管理 1. 使用指令查看进程 ​编辑 2. /proc 查看进程信息 ​编辑 3. 获取进程 ID 4. …

ONLYOFFICE 8.1 版本桌面编辑器测评

在现代办公环境中&#xff0c;办公软件的重要性不言而喻。从文档处理到电子表格分析&#xff0c;再到演示文稿制作&#xff0c;强大且高效的办公软件工具能够极大提升工作效率。ONLYOFFICE 作为一个功能全面且开源的办公软件套件&#xff0c;一直以来都受到广大用户的关注与喜爱…

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)将于2024年9月13日-15日在中国武汉举行。本次会议由华中师范大学伍伦贡联合研究院与南京大学联合主办、江苏省大数据区块链与智能信息专委会承办、江苏省概率统计学会、江苏省应用统计学会、Sir Forum、南京理工大学、南…

K8S集群进行分布式负载测试

使用K8S集群执行分布式负载测试 本教程介绍如何使用Kubernetes部署分布式负载测试框架&#xff0c;该框架使用分布式部署的locust 产生压测流量&#xff0c;对一个部署到 K8S集群的 Web 应用执行负载测试&#xff0c;该 Web 应用公开了 REST 格式的端点&#xff0c;以响应传入…

固定翼无人机入门(二)

这里讲讲无人机的路径跟踪控制相关知识&#xff0c;路径跟踪需要制导率&#xff08;平面&#xff09;和控制器&#xff0c;在无人机中较为常用的是L1制导率&#xff0c;不过L1制导率是控制无人机在二维平面上的转向&#xff0c;此处还引入总能量控制&#xff0c;控制无人机的高…

uniapp加载打点点效果

uniapp加载打点点效果 背景实现思路代码实现尾巴 背景 为了增加系统的交互性&#xff0c;我们在加载数据时通常会增加一些loading动效&#xff0c;但是在某些场景下只需要一些简单文字提醒。比如说使用【加载中】或者【loading】等字段&#xff0c;但是写静态的字符又显得交互…

electron线上更新

一、安装electron-updater npm install --save electron-updater二、在main.js中引入使用 import { autoUpdater } from electron; if (!isDev) {const serverUrl https://your-update-server.com; // 自定义更新服务器地址或GitHub Releases地址autoUpdater.setFeedURL(${…

SonicSense:声学振动丰富机器人的物体感知能力

在通过声学振动进行物体感知方面&#xff0c;尽管以往的研究已经取得了一些有希望的结果&#xff0c;但目前的解决方案仍然受限于几个方面。首先&#xff0c;大多数现有研究集中在只有少数&#xff08;N < 5&#xff09;基本物体的受限设置上。这些物体通常具有均质材料组成…

面试突击:HashMap 源码详解

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 数据结构 JDK1.8 之前 JDK1.8 之前 HashMap 采用 数组和链表 结合的数据结构。如下图&#xff1a; HashMap 将 key 的 hashCode 经过扰动函数处理过后得到 hash 值&#…

学习平台推荐_菜鸟教程官网

网址&#xff1a; 菜鸟教程 - 学的不仅是技术&#xff0c;更是梦想&#xff01;菜鸟教程(www.runoob.com)提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python&#xff0c;Java&#xff0c;Ruby&#xff0c;C&#xff0c;PHP , MySQL等各种编程语言的基础知识。 同…

汽车电子行业知识:什么是车载智能座舱

1.什么是车载智能座舱 车载智能座舱是指搭载在汽车内部的一种智能系统&#xff0c;它集成了各种功能和技术&#xff0c;旨在提升驾驶体验、增加安全性和提供更多的便利。这种系统可以包括诸如智能驾驶辅助、信息娱乐、智能语音控制、车内环境控制、车辆健康监测等功能。通过车…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-46语义分割和数据集

46语义分割和数据集 # 图像分割和实例分割 """ 图像分割将图像划分为若干组成区域&#xff0c;这类问题的方法通常利用图像中像素之间的相关性。 它在训练时不需要有关图像像素的标签信息&#xff0c;在预测时也无法保证分割出的区域具有我们希望得到的语义。 图…

Java养老护理助浴陪诊小程序APP源码

&#x1f496;护理助浴陪诊小程序&#x1f496; 一、引言&#xff1a;养老新趋势&#x1f331; 在快节奏的现代生活中&#xff0c;养老问题逐渐成为了社会关注的焦点。如何为老年人提供便捷、贴心的服务&#xff0c;让他们晚年生活更加安心、舒适&#xff0c;是我们每个人都需…