筆記 Linux script file 列出2目錄相異檔案 並且備份

本文介绍了一个用于检测文件差异的Shell脚本。该脚本能够找出指定目录中修改过的文件,并将其备份到另一个目录。此外,它还会创建一个结果文件记录这些变化。此工具对于版本管理和文件比对非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#! /bin/bash

D_DIR_CHANGED="lk/"
D_DIR_BAK="bak_"$D_DIR_CHANGED
len_D_DIR_CHANGED=`echo $D_DIR_CHANGED | wc -L`

D_DIR_ORG="lk_org/"

F_RESULT="res.txt"
F_LIST="list.txt"

if [ -e $F_RESULT ]; then
	rm $F_RESULT
fi
if [ -e $F_LIST ]; then
	rm $F_LIST
fi

find $D_DIR_CHANGED -type f > $F_LIST


while read st1; do
	st1=${st1:$len_D_DIR_CHANGED}
	F_ORG=$D_DIR_ORG$st1
	F_CHANGED=$D_DIR_CHANGED$st1
	
	if [ ! -e $F_ORG ]; then
		echo "add: "$F_CHANGED
		echo $st1 >> $F_RESULT
	else
		md5_org=`md5sum $F_ORG | awk '{print $1}'`
		md5_changed=`md5sum $F_CHANGED | awk '{print $1}'`
		#echo $st1 $md5_org $md5_changed
		if [ ! "$md5_org" == "$md5_changed" ]; then
			echo $st1
			echo $st1 >> $F_RESULT		
		fi 
	fi	
done < $F_LIST

if [ -e $F_LIST ]; then
	rm $F_LIST
fi

while read st1; do
	#echo $st1
	#echo ${st1%/*} ${st1##*/}
	if [ ! -d $D_DIR_BAK${st1%/*} ]; then
		mkdir -p $D_DIR_BAK${st1%/*}
	fi
	cp $D_DIR_CHANGED$st1 $D_DIR_BAK${st1%/*}

done < $F_RESULT

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值