自動備份指定文件列表中的文件到指定文件夾

jopen 10年前發布 | 14K 次閱讀 備份

    因為業務需要,在每次頁面變更的時候,都需要將原來的文件備份,下邊是自己寫的一個自動備份的腳本

#!/bin/bash

讀取指定文件中文件列表,文件列表中每行一個

腳本自動讀取每行數據,判斷文件是否存在,如果存在,則復制到按照時間命名的備份文件中。如果否則記錄路徑名稱

FILE_LISTS=list.txt #定義列表文件名稱,腳本必須和文件列表文件在同一目錄下 CUR_PATH=pwd #定義當前路徑,執行腳本必須到腳本目錄,如果要通過計劃任務執行,則需要進行一定修改,將此路徑修改為指定路徑 CURTIME=`date +%Y%m%d%H_%m` #去當前系統時間為備份文件名稱 BAKDIRNAME=bak"$CUR_TIME" #備份文件夾名稱 TAR_PATH="$CUR_PATH/""$BAK_DIRNAME" LOG_NAME="$TAR_PATH"/log.txt if [ -d $TAR_PATH ] #判斷文件是否存在,很少會出現在1分鐘內執行兩次的情況 then echo "文件夾存在" else mkdir -p "$TAR_PATH" #級聯創建相關路徑 fi

cd "$TAR_PATH"

if [ pwd != "$TAR_PATH" ] then echo "路徑進入失敗" exit 99
else

#rm -fr *  #刪除操作需要慎重使用,此腳本在一般情況下不會出現一分鐘備份兩次的情況,如果有這種特殊情況,可以手動清除
echo "ok"

fi COUNT_TOTAL=0 COUNT_BAKSUCESS=0 COUNT_NOTEXSIT=0

準備工作完成,開始執行備份文件

cd "$CUR_PATH" echo "$CUR_TIME">"$LOG_NAME" for line in cat $FILE_LISTS do

判斷路徑中的文件是否存在

if [ -e "$line" ] then cp "$line" "$TAR_PATH"&&echo "$line ok">>"$LOG_NAME"&&let "COUNT_BAKSUCESS+=1" else echo "$line not exit">>"$LOG_NAME"&&let "COUNT_NOTEXSIT+=1" fi let "COUNT_TOTAL+=1" done

echo "total is :$COUNT_TOTAL">>"$LOG_NAME" echo "sucess is :$COUNT_BAKSUCESS">>"$LOG_NAME" echo "not exist is :$COUNT_NOTEXSIT">>"$LOG_NAME"</pre>

來自:http://my.oschina.net/7shell/blog/313075

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!