權限位: [root@localhost home] # ll svnhotcopy.sh -rwxr-xr-x 1 root root 862 Nov 24 18:55 svnhotcopy.sh [root@localhost home] # bash代碼 [root@localhost home] # cat svnhotcopy.sh #!/bin/bash MAXDAYS=7 # 備份保留數目 TIME=`date +'%Y%m%d_%H%M%S'` SVNPATH=/home/svn # 定義倉庫repos路徑 BAKDIR=/home/backup # 定義備份主目錄 BAKSUBDIR=${BAKDIR}/${TIME} # 定義全備路徑 BAKLOG=${BAKDIR}/${TIME}.log # 定義備份日誌 [ ! -f "${BAKSUBDIR}" ] && mkdir -p ${BAKSUBDIR} exec 1>${BAKLOG} exec 2>&1 set -x # 刪除歷史備份 find ${BAKDIR} -maxdepth 1 -type f -mtime +$(expr ${MAXDAYS} - 1) -exec echo "Delete {}" \; -exec rm "{}" \; # 全備份 /usr/bin/svnadmin hotcopy ${SVNPATH} ${BAKSUBDIR} # 若是能打印版本號說明備份正確 /usr/bin/svnlook youngest ${BAKSUBDIR} [ $? -ne 0 ] && exit 1 cd ${BAKDIR} # 壓縮備份 tar -cvzf ${TIME}.tar.gz ${TIME}/ rm -rf ${BAKSUBDIR} # 能夠經過rsync把備份文件同步到遠程備份機上,此處省略。 [root@localhost home] # 計劃任務 [root@localhost home] # cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 0 3 * * * root /home/svnhotcopy.sh [root@localhost home] # 重載計劃任務 [root@localhost home] # systemctl reload crond.service