第一个是自动备份网站数据的,每周备份一次,并上传最新数据到异地
#!/bin/bash
#History
#=====================================================
#When Who What
#2010/3/24 Zhaoyn Create
#
#=====================================================
# 在/etc/crontab中增加每周六执行计划,如:
# 05 2 * * 6 root /opt/backup/backupweekly.sh 2>> error.log
# 27 4 * * 6 root /opt/backup/backupdaily.sh 2>> error.log
#
# 脚本功能:
# 1. 日常备份,通常是WEB,FTP,MAIL等配置文件及数据,每周备份一次,并上传最新数据到异地,本地的保留2周。异地的也保留2周,但由异地服务器来执行备份的轮回。
# 2. 数据库备份,通常是MYSQL,在backupdaily.sh脚本中执行。
#=====================================================
# 一、含说明的部分
# 下面设置变量,$timenow用于备份文件名中,以方便保留多个备份。
basedir=/opt/backup
updir=$basedir/updir
timenow=$(date +%Y%m%d-%H%M)
# 设置异地的FTP用户名和密码,请替换userid和passwd
ftpuser=back
ftppw=backpass
# 删除15天之前的备份,备份保留2周,考虑到备份时间和时间误差的问题,把以前的14天改成了15天。
rm -f `find $basedir -name "*.tgz" -mtime +15`
# 下面就开始备份了,tar的参数p,是保留权限等属性,在备份时tar会自动删掉备份路径的"/",这样在恢复时就默认恢复到当前目录。
#tar -czpf $basedir/script.$timenow.tgz $basedir/*.sh /root/script
#tar -czpf $basedir/etc.$timenow.tgz /etc
#tar -czpf $basedir/mail.$timenow.tgz /var/spool/postfix
# 避免磁盘I/O读写出错,喘口气
#sleep 5s ;sync;sync
tar -czpf $basedir/www.$timenow.tgz /home/www/ypcol
sleep 5s ;sync;sync
# 如果updir不存在,则创建它
test -e $basedir/updir || mkdir $basedir/updir
# 移动最近1天内的备份到updir,准备上传。
mv `find $basedir -name "*.tgz" -mtime -1` $updir
# 通过FTP,采用bin方式上传,异地数据保留两周,异地数据重命名和自动删除的工作由异地服务器完成,因此FTP可只给予写权限,无读和删除权限,增加安全性。
ftp -v -n -i 121.192.19.XX < user $ftpuser $ftppw
lcd $updir
bin
mput *.tgz
bye
END
mv $updir/* $basedir
#=====================================================

第二个是数据库备份,通常是MYSQL,在backupdaily.sh脚本中执行
阅读全部>>