服务器备份脚本---每周运行版本
in with 0 comment

服务器备份脚本---每周运行版本

in with 0 comment

服务器备份脚本---每周运行版本

#!/bin/bash
# ====================================================================
# 使用者參數輸入位置:
# basedir=你用來儲存此腳本所預計備份的資料之目錄(請獨立檔案系統)
basedir=/home/backup/weekly

# ====================================================================
# 底下請不要修改了!用預設值即可!
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C

# 設定要備份的服務的設定檔,以及備份的目錄
named=$basedir/named
postfixd=$basedir/postfix
vsftpd=$basedir/vsftp
sshd=$basedir/ssh
sambad=$basedir/samba
wwwd=$basedir/www
others=$basedir/others
userinfod=$basedir/userinfo
# 判斷目錄是否存在,若不存在則予以建立。
for dirs in $named $postfixd $vsftpd $sshd $sambad $wwwd $others $userinfod
do
	[ ! -d "$dirs" ] && mkdir -p $dirs
done

# 1. 將系統主要的服務之設定檔分別備份下來,同時也備份 /etc 全部。
cp -a /var/named/chroot/{etc,var}	$named
cp -a /etc/postfix /etc/dovecot.conf	$postfixd
cp -a /etc/vsftpd/*			$vsftpd
cp -a /etc/ssh/*			$sshd
cp -a /etc/samba/*			$sambad
cp -a /etc/{my.cnf,php.ini,httpd}	$wwwd
cd /var/lib
  tar -jpc -f $wwwd/mysql.tar.bz2 	mysql
cd /var/www
  tar -jpc -f $wwwd/html.tar.bz2 	html cgi-bin
cd /
  tar -jpc -f $others/etc.tar.bz2	etc
cd /usr/
  tar -jpc -f $others/local.tar.bz2	local

# 2. 關於使用者參數方面
cp -a /etc/{passwd,shadow,group}	$userinfod
cd /var/spool
  tar -jpc -f $userinfod/mail.tar.bz2	mail
#cd /
#  tar -jpc -f $userinfod/home.tar.bz2	home
cd /var/spool
  tar -jpc -f $userinfod/cron.tar.bz2	cron at

使用方法

/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
20  3   *   *   *   root    yum -y update
20  4   *   *   *   root    /root/bash/backupday.sh
30  4   *   *   0   root    /root/bash/backupwk.sh