我寫了一個腳本檔案,需要備份某一目錄下的所有圖片檔案,該目錄下隨時都有新圖片檔案產生,我的需求是:備份完一張圖片就在原目錄中刪掉;
一下是我寫的腳本的一部分:
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目錄下存在數千張圖片時,這個備份腳本效率非常低,做完一次備份需要好幾個小時,全耽擱在一張張圖片的備份上了。請問有什么方法滿足我的需求的前提下提高效率?
uj5u.com熱心網友回復:
我試過,將zip備份修改成tar也差不多一樣的效率,太低效了!uj5u.com熱心網友回復:
有好方法了:先壓縮,然后再跟進壓縮包里的檔案洗掉原目錄的檔案:find ./ -name "*.jpg" | xargs zip temp.ZIP
然后根據temp.ZIP檔案的內容去原目錄洗掉備份過的圖片檔案,效率大增
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/121269.html
標籤:系統維護與使用區
上一篇:求解,kali虛擬機不能上網
