ChangeLog
1. if 條件判斷改用設檢查旗標的方式同時用了『複合條件判斷』以濃縮長度。
2.『全變數化』以方便維護跟新增備份標的。
筆電中放著不少重要資料,還是備份一下比較安心。
條件一樣是,
1.筆電在家且連得到備份主機才進行備份
2.自動砍掉三天以前的備份
Script 內容如下,
#!/bin/bash #DailyBackUpV201109210305.sh #備份筆電中的重要資料 #Verio:3.0 #Time:201109210305 #Max Lin max@mpsstudio.org #定義變數 LogFile="$HOME/BackUpLog/DailyBackUp.log" RemoteHost="10.128.0.100" TEMPDir="/tmp/DocBack" LXDETEMPDir=""$TEMPDir"/LXDE" ScriptTEMPDir=""$TEMPDir"/Script" DocTEMPDir=""$TEMPDir"/Doc" MyPassWord="1979576" MyAccount="亞利安人" MountHomeDir='/home/max/sharedir' LocalMountDir=""$MountHomeDir"/100DocBackup" RemoteHostMountOption="rw,noperm,nosuid,username="$MyAccount",password="$MyPassWord",iocharset=utf8,codepage=cp950" LXDEBackDir="/home/max/.config/lxpanel/LXDE/" ScriptBackDir="/home/max/Script" DocMountPoint="/media/DATABack" DocBackDir=""$DocMountPoint"/002.文件/" #Start #確認遠端備份主機連線狀態 ping -c 2 $RemoteHost > /dev/null ConnectCheck=$? #確認備份儲存目錄是否已掛載 mount | grep "100DocBackup" > /dev/null RemoteHostMountCheck=$? if [ $RemoteHostMountCheck -ne '0' ] ; then #掛載遠端文件備份掛載目錄 echo "$MyPassWord" | sudo -S mount -t cifs //"$RemoteHost"/DocBackup "$LocalMountDir" -o "$RemoteHostMountOption" RemoteHostMountCheck=$? else RemoteHostMountCheck=0 fi if [ $ConnectCheck -eq '0' -a $RemoteHostMountCheck -eq '0' ]; then echo "`date '+%Y%m%d'` ---- 備份作業開始 --------" >> $LogFile echo "`date '+%Y%m%d'` ==== 備份開始時間`date '+%H:%M:%S'`" >> $LogFile #備份LXDE設定檔 mkdir -p "$LXDETEMPDir" tar jcvf "$LXDETEMPDir"/LXDEConfigBackUp`date '+%Y%m%d'`.tar.bz2 "$LXDEBackDir" LXDETar=$? cp -r "$LXDETEMPDir"/* "$LocalMountDir" LXDECpCheck=$? if [ $LXDETar -eq '0' -a $LXDECpCheck -eq '0' ] ; then echo "`date '+%Y%m%d'` LXDE設定檔備份作業完成~~~" >> $LogFile else echo "`date '+%Y%m%d'` LXDE設定檔備份作業未完成!!!!" >> $LogFile fi #備份Script mkdir -p "$ScriptTEMPDir" tar jcvf "$ScriptTEMPDir"/ScriptBackUp`date '+%Y%m%d'`.tar.bz2 "$ScriptBackDir" ScriptTar=$? cp -r "$ScriptTEMPDir"/* "$LocalMountDir" ScriptCpCheck=$? if [ $ScriptTar -eq '0' -a $ScriptCpCheck -eq '0' ] ; then echo "`date '+%Y%m%d'` Script備份作業完成~~~" >> $LogFile else echo "`date '+%Y%m%d'` ScriptCpCheck備份作業未完成!!!!" >> $LogFile fi #文件備份 mkdir -p "$DocTEMPDir" mount | grep "$DocMountPoint" DocMountPointCheck=$? if [ $DocMountPointCheck -eq '0' ] ; then tar jcvf "$DocTEMPDir"/DocBackUp`date '+%Y%m%d'`.tar.bz2 "$DocBackDir" DocTar=$? cp -r "$DocTEMPDir"/* "$LocalMountDir" DocCpCheck=$? else echo "$MyPassWord" | sudo -S mount -t ext4 /dev/sda4 "$DocMountPoint" ReMountCheck=$? if [ $ReMountCheck -eq '0' ] ; then tar jcvf "$DocTEMPDir"/DocBackUp`date '+%Y%m%d'`.tar.bz2 "$DocBackDir" DocTar=$? cp -r "$DocTEMPDir"/* "$LocalMountDir" DocCpCheck=$? DocMountPointCheck=0 else DocMountPointCheck=1 fi fi if [ $DocMountPointCheck -eq '0' -a $DocTar -eq '0' -a $DocCpCheck -eq '0' ]; then echo "`date '+%Y%m%d'` Doc備份作業完成~~~" >> $LogFile else echo "`date '+%Y%m%d'` Doc備份作業未完成!!!!" >> $LogFile fi #刪除暫存目錄 rm -rf $TEMPDir #刪除遠端備份目錄中三天前的備份檔 find ""$LocalMountDir"/" -type f -mtime +3 -exec rm -f {} \; #確認文件備份目錄是否還掛載著 mount="$DocMountPoint" DocMountPointCheck=$? if [ $DocMountPointCheck -eq '0' ] ; then #卸載遠端備份目錄 echo "$MyPassWord" | sudo -S umount "$DocMountPoint" fi #確認備份儲存目錄是否仍掛載 mount | grep "$LocalMountDir" > /dev/null RemoteHostMountCheck=$? if [ $RemoteHostMountCheck -eq '0' ] ; then #卸載遠端備份目錄 echo "$MyPassWord" | sudo -S umount "$LocalMountDir" fi echo "`date '+%Y%m%d'` ==== 備份結束時間`date '+%H:%M:%S'`" >> $LogFile echo "`date '+%Y%m%d'` >>>> 備份作業完成 <<<<<<<<" >> $LogFile else echo "`date '+%Y%m%d'` 遠端備份目錄離線中或無法掛載遠端儲存設備,備份作業未開始!!!!" fi |
沒有留言:
張貼留言