备份数据库
1、定时备份脚本 /usr/local/mysql/bakmysql.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #!/bin/bash # Name:bakmysql.sh # This is a ShellScript For Auto DB Backup and Delete old Backup
# Database info DB_USER="root" #mysql login name DB_PASS="123456" #password DB_HOST="localhost" #db_address DB_NAME="muycode" #db_name DB_ZFBM="--default-character-set=utf8" #character # DB_TABLE="exam_quest_bank" #table name
# Others vars BIN_DIR="/usr/bin" #the mysql bin path BCK_DIR="/home/mysql_backup" #the backup file directory DATE=`date +%F`
#--skip-lock-tables zg backup #$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_ZFBM $DB_NAME $DB_TABLE | gzip > $BCK_DIR/db_$DATE.sql.gz
#data beifen #$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_ZFBM $DB_NAME | gzip > $BCK_DIR/db_$DATE.sql.gz
#sql back $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_ZFBM $DB_NAME $DB_TABLE > $BCK_DIR/db_$DATE.sql
# delete history find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 #find $BCK_DIR -name "db_*.gz" -type f -mtime +3 -exec rm {} \; > /dev/null 2>&1
|
脚本说明
- $BIN_DIR mysql 备份地址
- $DB_USER 数据库用户名
- $DB_PASS 数据库密码
- $DB_HOST 数据库地址(IP 或者是 localhost 之类的)
- $DB_ZFBM 字符集编码设置(这个很关键,解决导出文件中中文乱码)
- $DB_NAME 数据库名称
- $DB_TABLE 要备份的表名(如果只对单一表进行备份,可以加此字段,全库备份的可以省略掉)
- $BCK_DIR/db_$DATE.sql 备份的地址和备份文件名称
2、脚本附加权限
3、验证脚本是否正确
如果脚本没问题,会在 /home/mysql_backup
生成备份文件。
4、定时删除备份数据库
1
| find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
|
脚本说明
-type f
表示查找普通类型的文件,f 表示普通文件。
-mtime +7
按照文件的更改时间来查找文件,+3 表示文件更改时间距现在 3 天以前;如果是 -mmin +5 表示文件更改时间距现在 5 分钟以前。
-exec rm {} \;
表示执行一段 shell 命令,exec 选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1
把标准出错重定向到标准输出,然后扔到 /DEV/NULL 下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的 & 表示让该命令在后台执行。
5、编辑定时任务列表
1 2
| # 每天早上 4:00:00 执行 00 04 * * * /bin/sh /usr/local/mysql/bakmysql.sh
|
crontab 配置文件格式如下
6、查看设置的定时任务是否成功
7、crontab 基本命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 重启 /bin/systemctl restart crond.service # 开启 /bin/systemctl start crond.service # 停止 /bin/systemctl stop crond.service # 重载 /bin/systemctl reload crond.service # 状态 /bin/systemctl status crond.service
|
备份 FastDFS
1、备份脚本/usr/local/mysql/bakstorage.sh
1 2 3 4 5 6 7
| #!/bin/bash
DATE=`date +%F` BCK_DIR="/home/fdfs_storage_backup" # mkdir /home/fdfs_storage_backup/ zip -q -r $BCK_DIR/"$DATE.zip" /home/fdfs_storage find $BCK_DIR -name "*.zip*" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
|
2、脚本附加权限
3、验证脚本是否正确
如果脚本没问题,会在 /home/fdfs_storage_backup
生成备份文件。
4、添加定时任务同上步骤。
整机备份
目的备份所有的目录。以 root 权限在”/“目录执行备份命令。
1、备份命令,打包一个备份文件centos7_backup.tgz
1
| # tar cvpzf centos7_backup.tgz / --exclude=/proc --exclude=/centos7_backup.tgz --exclude=/mnt --exclude=/sys
|
2、恢复命令,把备份文件拷贝到根分区, 然后执行命令。
警告:这会把你分区里所有文件替换成压缩文档里的文件!
1
| # tar xvpfz centos7_backup.tgz -C /
|
3、重新创建你剔除的目录
1 2 3
| # mkdir proc # mkdir mnt # mkdir sys
|
4、执行以下命令再重启
1 2
| # restorecon -Rv / # reboot
|