第一个是自动备份网站数据的,每周备份一次,并上传最新数据到异地
#!/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 <
第二个是数据库备份,通常是MYSQL,在backupdaily.sh脚本中执行

代码如下:
#!/bin/bash
#History
#=====================================================
#When Who What
#2010/5/7 潘中一 Create
#
#=====================================================
basedir=/opt/backup
updir=$basedir/updir
timenow=$(date +%Y%m%d-%H%M)
# 删除mysql十四天前的数据,注意,这里仅删除了mysql的tgz文件。
rm -f `find $basedir -name "mysql*.tgz" -mtime +14`
# 由于数据库在有连接的情况下,直接对数据文件打包是可能出问题的,所以这里我们在打包前要停用数据库,这样直接对数据文件打包,恢复时只需解压数据文件到新环境相应的目录即可,默认是/var/lib/mysql
# 如果白天也要进行数据库备份,请使用mysqldump命令,进行在线备份。恢复也挺方便的。
/etc/rc.d/init.d/mysqld stop
sleep 5s ;sync;sync
tar -czpf $basedir/mysql.$timenow.tgz /var/lib/mysql
/etc/rc.d/init.d/mysqld start
#=====================================================

哟?不错哎 订阅小米的RSS Feeds 回去慢慢看^_^