公司用的版本控制軟件是TortoiseSVN,有時做一個項目時需要在每天下班前,把已經修改的文件做個備份,最笨的方法就是,看哪一個目錄上有紅色感嘆號,然後進入目錄把裏面已經修改的文件一一拷貝出來,拷貝出來放的地方還在創建相同的目錄予區別,方便放回文件。今天在Linux上寫了一個shell腳本,可以在當前目錄下,進行修改文件的收集,然後創建其目錄,再把修改了的文件放入對應目錄中,然後再進行打包。
腳本內容如下:
#!/bin/sh
DIR=modify_file_list_dir
DATE=`date "+%Y-%m-%d"`
if [ ! -d ./${DIR} ];then
mkdir ./${DIR}
echo "Create diretory ${DIR}"
fi
#按當前日期創建目錄
if [ ! -d ${DIR}/${DATE} ];then
mkdir ${DIR}/${DATE}
echo "Create directory ${DIR}/${DATE}"
fi
# 1,取得svn下文件狀態,被修改的
# 2,取目錄名稱,然後創建目錄
# 3,拷貝文件
# 4,打包,然後刪除文件
for file in $(svn status | grep '^M' | awk '{print $2}')
do
dir=${file%/*} #取目錄名稱
if [ ! -d ${DIR}/${dir} ];then
mkdir -p ${DIR}/${DATE}/${dir} #創建目錄
fi
cp ${file} ${DIR}/${DATE}/${dir} #拷貝文件
done
sleep 2
tar -cvf ./modify.tar.gz ${DIR}/*
rm -rf ${DIR}
用法:
1,將這些腳本放拷貝到一個文件中,加執行權限
2,將文件放到任一目錄下,在該目錄下運行,若該目錄下有已經被修改的文件,腳本會將這些文件打包到modify.tar.gz中
上面的腳本可以再多加些變量,讓看起來更簡潔一點,還可以再擴展成爲更強大的功能,網友們可以自行處理。
運行結果如第二張圖,修改的目錄一一對應,各目錄下都是已經被修改的文件。