编写差异更新脚本

前端之家收集整理的这篇文章主要介绍了编写差异更新脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

需求:

1、由于设备刚出厂是没有资源和文件,但是由于链接了网络,平台会给他下发高版本的portal版本,导致U盘更新是只会更新资源文件,但是数据文件不会更新,导致了一部分的功能不可用。

2、设备确实的东西指数属于小资源,但是影响却很大,我们只要portal版本高于U盘版本就不允许把portal版本回退,这样会导致上线的东西白做了,所以不允许U盘更新是版本回退,因此需要差异更新。

步骤:

1、首先判断设备主体目录和U盘主体目录是否一样,若是设备的目录没有直接从U盘把整个目录拷贝过去,若是设备上有U盘上没有,就可以忽略(差异更新是以U盘更新到设备上的故而忽略)。

2、把U盘和设备上的文件做出列表,并排序,把前面不同的部分去掉,然后用diff做比对,+的既是设备不存在的,文件,然后直接创建文件夹,然后开始拷贝文件

#创建文件夹
mkdir-p/mnt/disk/difffile
mkdir-p/mnt/disk/airmedia
#检查设备上是否存在目录不存在直接拷贝目录
forfile_dirin$(ls${usb_file_dir}/)
	do
		#查找设备中是否存在要更新的目录和文件
		find${portal_file_dir}/${file_dir}/-typef>/dev/null2>&1
			if[$?-eq0];then#检查设备上是否存在目录不存在直接拷贝目录
					#查找设备中已存在的文件
				find${portal_file_dir}/${file_dir}/-typef|awk'{print$NF}'|xargsdu-sk|sed"s#${dir_portal}/##g"|sort-k2,2>${dir_diff}/portal_${file_dir}
					#查找U盘中已存在的文件
				find${usb_file_dir}/${file_dir}/-typef|awk'{print$NF}'|xargsdu-sk|sed"s#${dir_usb}/##g"|sort-k2,2>${dir_diff}/usb_${file_dir}
					#比较U盘中有但是portal中没有的文件提取出来用作更新
				diff${dir_diff}/portal_${file_dir}${dir_diff}/usb_${file_dir}|grep^+|grep-v+++|awk'{print$2}'>${dir_diff}/copy_file_${file_dir}
						#如果需要更新的文件不为空,拷贝更新的文件到目录
					if[-scopy_file_${file_dir}];then	
							#循环创建目录
						formkdrin$(catcopy_file_${file_dir})
							do
				#cp在拷贝文件的时候不能把目录结构一起拷贝,就把文件目录也一起创建了,虽然很low,但是我也没办法了
								mkdir-p$(dirname${dir_portal}/$mkdr)>/dev/null2>&1
							done	
							#循环拷贝portal中没有,但是U盘中有的文件
						foriin$(cat${dir_diff}/copy_file_${file_dir})
							do
								cp-rf/mnt/usb/$i/mnt/disk/airmedia/$i>/dev/null2>&1
							done
					fi
			else
				cp-rf${usb_file_dir}/${file_dir}/${portal_file_dir}/${file_dir}/
			fi
	done

猜你在找的Bash相关文章