文件监控脚本
先给脚本发了吧
先贴个效果图
完整代码如下:
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下换行不一样
虽说修好了,但是可能是靶场选的太难了,都没打进来,白开了个文件监控,早知道这周再写好了
不过是些许风霜罢了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架