用shell如何高效批量备份目录下的图片

eyetoheart 2019-06-12 02:53:36
我写了一个脚本文件,需要备份某一目录下的所有图片文件,该目录下随时都有新图片文件产生,我的需求是:备份完一张图片就在原目录中删掉;
一下是我写的脚本的一部分:
cd $SOURCEDIR
find | sed '1d' > $SCRIPTDIR/filelist.txt
for i in `cat $SCRIPTDIR/filelist.txt`
do
if [ ! -d $i ]
then
echo "start backup $i to $BACKUPDIR/$SERVERNAME_ORCPICBAK_{$DATEDAY}.ZIP" >> $SCRIPTDIR/logs.log
zip $BACKUPDIR/${SERVERNAME}_ORCPICBAK_${DATEDAY}.ZIP $i >> $SCRIPTDIR/logs.log 2>&1
if [ $? -eq 0 ]
then
echo "backup $i Success,start delete $i from $SOURCEDIR" >> $SCRIPTDIR/logs.log
rm -rf $i
else
echo "file $i backup fail!!!" >> $SCRIPTDIR/logs.log
fi
fi
done
上面脚本在执行那刻将原目录下的图片文件存到临时文件filelist.txt中,我只对filelist.txt保存的文件进行备份、删除,从而不影响新增图片文件。

如果那个$SOURCEDIR目录下存在数千张图片时,这个备份脚本效率非常低,做完一次备份需要好几个小时,全耽搁在一张张图片的备份上了。请问有什么方法满足我的需求的前提下提高效率?
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyetoheart 2019-06-13
  • 打赏
  • 举报
回复
有好方法了:先压缩,然后再跟进压缩包里的文件删除原目录的文件: find ./ -name "*.jpg" | xargs zip temp.ZIP 然后根据temp.ZIP文件的内容去原目录删除备份过的图片文件,效率大增
eyetoheart 2019-06-12
  • 打赏
  • 举报
回复
我试过,将zip备份修改成tar也差不多一样的效率,太低效了!

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧