系统文件,MYSQL的备份脚本
时间:2007-11-16 来源:huzi1986
SFTP 远程备份 FreeBSD 系统设定文件及重要数据文件
Description:
狡兔有三窟,时时不忘备份 ~ 最近发现 rsync 的小问题,在资料量日渐成长状况下,发现 rsync 好像不能备份单一档案大于 3G 的数据,因此我改变方式备份数据方式,改采最基本的 SFTP 的服务将 BSD 1 的数据备份到 BSD 2 上的 HD 里,并且保留 BSD2 上的备份数据 5 天,而超过 5 天之后的数据会自动删除,备份数据的方式采用最简易的 shell script ,写法如下:
Environment :
BSD 1 Server IP:77.77.77.77
BSD 2 Server IP:88.88.88.88
Setp 1.
在 BSD1 上写个自动备份的 shell script ,并且用 tar 来压缩备份数据,备份完成数据后即删除前一天的备份数据,接着采用 sftp 上传到 BSD2 Server 上。
#vi /data/backup/auto-backup.sh
#!/bin/sh
#
host="88.88.88.88"
id="账号"
pw="密码"
basedir="/data/backup/ntut_backup"
remodir="/data/backup/ntut_backup"
filename="*.tgz"
today=`/bin/date +%Y%m%d`
deldate=`/bin/date -v -1d +%Y%m%d`
#
echo off
echo ' 本地资料备援 !!!'
cd $basedir
/etc/init.d/mysqld stop
tar -czvf $today.ntut_etc.tgz /etc /usr/local/etc
tar -czvf $today.ntut_home.tgz /home
tar -czvf $today.ntut_g2data.tgz /data/g2data
/etc/init.d/mysqld stop
tar -czvf $today.ntut_mysql.tgz /var/db/mysql
/etc/init.d/mysqld start
tar -czvf $today.ntut_www.tgz /usr/local/www
rm -f $deldate.ntut_etc.tgz
rm -f $deldate.ntut_home.tgz
rm -f $deldate.ntut_g2data.tgz
rm -f $deldate.ntut_mysql.tgz
rm -f $deldate.ntut_www.tgz
#
echo off
echo ' 远程数据备援 !!!'
cd $basedir
sftp "$host" <<EOC
user $id $pw
binary
cd $remodir
put $filename
bye
EOC
#chmod 755 /data/backup/auto-backup.sh # 将 auto-backup.sh 的权限改成可执行。
编辑 crontab #crontab -e 加入下面这行:
30 4 * * * /data/backup/auto-backup.sh # 让 BSD1 Server 每天零晨4点30分做一次本地及远程数据备份
Setp 2.
BSD 2 上只要有 ssh 服务就可透过 sftp 接受远程数据,写个 del-daily.sh 自动删除 5 天前的备份数据。
#!/bin/sh
#
deldate=`/bin/date -v -5d +%Y%m%d`
basedir="/data/backup/ntut_backup"
#
echo off
echo '开始删除5天前的数据 !!!!'
cd $basedir
rm -f $deldate.ntut_etc.tgz
rm -f $deldate.ntut_home.tgz
rm -f $deldate.ntut_g2data.tgz
rm -f $deldate.ntut_mysql.tgz
rm -f $deldate.ntut_www.tgz
#chmod 755 /data/backup/del-daily.sh # 将 del-daily.sh 的权限改成可执行即可。
编辑 BSD2 的 crontab #crontab -e 加入下面这行:
30 5 * * * /data/backup/del-daily.sh # 让 BSD2 Server 每天零晨 5 点 30 分自动执行删除五天前的备份数据文件
To Add.
如何备份 mysql 数据库的档案?mysql 的数据库档案,是放置在 /var/db/mysql 下,因此我们需备份时,只需要备份此目录下的数据即可。
范例如下:
#tar czvf mysql_backup.tgz /var/db/mysql
PS:MYSQL热备份脚本
#!/bin/sh
mkdir /mnt/data/$(date +%y%m%d)
mysqlhotcopy database1 /mnt/data/$(date +%y%m%d)
rm -rf /mnt/data/$(date +%y%m%d --date='15 days ago')