背景介绍:
程序录制的视频放在/dev/shm下,文件命名格式以.mp4
结尾,目的是将录制完毕的视频文件拷贝到别的目录下,保留仍在写入的视频文件。
话不多说,直接上脚本:
#!/bin/bash
while [ true ]; do
#相隔5s获取/dev/shm目录下所有mp4文件,分别进行记录
du -s /dev/shm/*.mp4 > file1.txt
sleep 5
du -s /dev/shm/*.mp4 > file2.txt
#获取file1.txt file2.txt 文件里相同的行,并截取视频文件的名字,重新覆盖到rsync_file里
file_to_mv=$(awk '{if(ARGIND==1) {val[$0]}else{if($0 in val) print $0}}' file1.txt file2.txt | awk -F'/' '{print $4}')
echo "$file_to_mv" > rsync_file
#对rsync_file进行判空,非空情况下才进行视频转移操作
if [ ! -s rsync_file ];then
echo "no files to move"
else
for rfile in $(cat rsync_file)
do
rsync -avzp $rfile /root/mp4v2
# sed -e "/ $rfile/d" rsync_file
rm $rfile
done
fi
sleep 5
done
亲测有效,不过运行过程中会产生下图所示的无用日志,可考虑删掉: