首页 > 其他分享 >文件监控脚本

文件监控脚本

时间:2023-07-31 09:34:31浏览次数:25  
标签:脚本 文件 WATCH echo 监控 bak DIR

先给脚本发了吧

先贴个效果图

完整代码如下:

 1 #!/bin/bash
 2 
 3 # 指定要监控的文件夹路径
 4 WATCH_DIR=$1
 5 
 6 # 检查参数是否为空
 7 if [ -z "$WATCH_DIR" ]; then
 8   echo "请输入要监控的文件夹路径"
 9   exit 1
10 fi
11 
12 # 备份文件
13 if [ -d "bak/$WATCH_DIR" ]; then
14   echo "文件已备份:bak/$WATCH_DIR"
15 else
16   mkdir bak
17   cp -r $WATCH_DIR bak/$WATCH_DIR
18   echo "备份文件不存在,已备份到bak/$WATCH_DIR"
19 fi
20 # 初始化文件列表
21 OLD_FILE_LIST=$(find "$WATCH_DIR")
22 
23 echo "开始监控"
24 echo "--------------------"
25 while true; do
26   # 获取最新的文件列表
27   NEW_FILE_LIST=$(find "$WATCH_DIR")
28 
29   # 检查新增文件
30   while read -r file; do
31     if ! grep -q "$file" <<< "$OLD_FILE_LIST"; then
32       echo "检测到新增文件或文件夹:"
33       echo "$file"
34       # 自动删除新增文件
35       if [ -f "$file" ]; then
36         echo "已删除新增文件: $file"
37         rm "$file"
38         echo "--------------------"
39       elif [ -d "$file" ]; then
40         echo "已删除新增文件夹: $file"
41         echo "--------------------"
42         rm -r "$file"
43       fi
44       NEW_FILE_LIST=$OLD_FILE_LIST
45     fi
46   done <<< "$NEW_FILE_LIST"
47   # 检查删除文件
48   while read -r file; do
49     if ! grep -q "$file" <<< "$NEW_FILE_LIST"; then
50       # 判断文件是否仍存在
51       if [ ! -e "$file" ]; then
52         echo "检测到被删除文件:"
53         echo "$file"
54         echo "恢复被删除文件或文件夹: $file"
55         cp -R "bak/$file" "$file"
56         echo "--------------------"
57         # 自动恢复被删除的文件
58         NEW_FILE_LIST=$OLD_FILE_LIST
59       fi
60     fi
61   done <<< "$OLD_FILE_LIST"
62 
63 
64   # 等待一段时间后再次检查
65   sleep 0.3
66 done

写了差不多三天,可能是太菜的原因

一开始用的是comm来比较,然后测试时候发现删除的如果是中间项会导致后边的错位,comm对不上,直接库库给后边全删了,改了半天没想明白咋改,后来换成了这种方法

昨天打awd时候还出事儿了,我是直接从windows给文件传上去了,结果出来一堆'\r'告诉我运行不了,我寻思半天,我这就是为了能通用才用bash写的,你这是哪国的系统咋bash基础命令都不一样?

然后捅咕半天,想起来windows下换行和linux下换行不一样

 虽说修好了,但是可能是靶场选的太难了,都没打进来,白开了个文件监控,早知道这周再写好了

标签:脚本,文件,WATCH,echo,监控,bak,DIR
From: https://www.cnblogs.com/theskyforfly/p/17591490.html

相关文章

  • .NET 下最快比较两个文件内容是否相同
    转自:.NETCORE下最快比较两个文件内容是否相同的方法-WAKU-博客园(cnblogs.com)本文因为未考虑磁盘缓存,结果不是很准确,更严谨的结果请参看本博文的续集最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NETCORE,所以使用C#进行编写比较方......
  • nginx搭建文件服务器出现时区问题怎么解决:时间显示错误
    在Nginx搭建文件服务器时,如果出现时区问题,可能会导致文件的修改时间和访问时间显示错误。要解决这个问题,可以按照以下步骤操作:在Nginx配置文件中设置时区。可以在http区块中使用env指令来设置时区,例如:这种方式不行,可能跟nginx版本有关http{#...envTZ=Asia/Shanghai;......
  • 使用Python脚本实现ElasticSearch的在线数据迁移
    该脚本的功能,类似于elasticsearch-dump,二者都是基于scroll来实现的(包括reindex底层也是scroll)。依赖包#我这里演示的ES是7.x的,如果下面的脚本运行报错,请考虑调整这里的python的elasticsearch包版本pipinstallelasticsearch==7.13.1配置文件vimconfigs.py#-*-coding:utf-8......
  • go项目实现在配置文件实现配置项统一管理
    转载请注明出处:go项目中实现配置项统一管理,实现逻辑:将配置项整理为一个json的数据结构,并保存到go.conf文件中,然后在go项目启动main方法中加载go.conf文件,读取go.conf文件的json数据结构,并进行反序列化为go的数据结构,从而在go项目中可以全局使用go.conf文件中的配置项......
  • linux最大文件名长度
    可以通过cat/usr/include/linux/limits.h查看NAME_MAX255 #ifndef_LINUX_LIMITS_H#define_LINUX_LIMITS_H#defineNR_OPEN 1024#defineNGROUPS_MAX65536 /*supplementalgroupIDsareavailable*/#defineARG_MAX131072 /*#bytesofargs......
  • c#传统读取配置文件
    usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.Configuration.Json;namespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){//配置系统//jsonxmlini都是支持......
  • 【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)
    实际发布时间:2022-12-1422:54:52。csdn禁止浏览器脚本相关博客了,就只能重新发到这儿了。  只要浏览器播放视频时用的是<video>,而且当前页面只有这一个视频,就可以用这个脚本。  这是我很久以前为了倍速看MOOC视频,所以写的一个脚本,一直没有专门写博客去介绍它。刚刚,我想倍......
  • java读取txt文件解决乱码问题
    说明:由于txt文件有bom和不同的编码方式,导致导入数据时产生乱码,以下代码完美解决乱码问题。参考他人代码,结合自己的业务加工完成,费了大半天功夫完成,希望对大家有点用处。废话不多说,直接上代码:/***从txt文件流读取数据**@paramtxtStream*@return......
  • 零代码编程:PDF文件名和Excel数据进行比对找不同
    F盘“北交所招股说明书”文件夹下有150个文件;F盘”北证A股20230703.xlsx”表格中证券名称有200多个;现在想找出文件夹下的哪些证券名称不在表格里面。在ChatGPT中输入提示词:写一段Python程序:F盘“北交所招股说明书”文件夹下有很多PDF文件,获取其标题名称,保存到列表:“已下载说明书的......
  • 正点原子Ubuntu入门016---shell脚本条件判断、函数和循环
    一、shell脚本的条件判断虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂的就不行了shell脚本呢提供了if  then 条件判断语句,写法:if条件判断;then//判断条件成立要做的事情fi   ifthenelse语法 if条件判断;then//判断条件成立要做的事情e......