# 上传备份

# mysqldump 备份 MySQL 中的库或表

mysqldump
    常用参数详解:
    -u		用户名
    -p		密码
    -h		服务器IP地址
    -d		等价于--no-data		只导出表结构
    -t		等价于--no-create-info	只导出数据,不导出建表语句
    -A		等价于--all-databases
    -B		等价于--databases	导出一个或多个数据库

需求:将school中的score表备份,并且将备份数据通过FTP传输到192.168.184.3的/data/backup目录下

```sh
mysqldump -uroot -p20052017 school > school.sql

# 备份全部有权限的
mysqldump -uroot -p20052017 -A > school.sql

# ftp

FTP常用指令:

    open		与FTP服务器建立连接,例子:open 192.168.184.3
    user		有权限登录FTP服务器的用户名和密码,例子:user ftp_user redhat

FTP常用参数:

    -n 自动登陆
    -i 忽律交互性提示
    -v 提示性信息
ftp -inv << EOF
	open 192.168.184.3  # 建立连接
	user 用户 密码

	cd /tmp
	put 1.txt # 传一个数据过去
	bye # 结束
EOF

# 自动备份脚本

备份本地数据为 sql 文件然后 ftp 传输给远端

#!/bin/bash
#

db_user="dbuser"
db_password="123456"
db_host="192.168.184.132"

ftp_user="ftp_user"
ftp_password="redhat"
ftp_host="192.168.184.3"

dst_dir="/data/backup" # 备份文件放在哪里
time_date="$(date +%Y%m%d%H%M%S)"
file_name="school_score_${time_date}.sql"

function auto_ftp() {
	ftp -niv <<EOF
		open $ftp_host
		user $ftp_user $ftp_password

		cd $dst_dir
		put $1
		bye
EOF
}
# 结束的EOF必须顶格写

# &&表示前面成功之后后面再继续执行
mysqldump -u"$db_user" -p"$db_password" -h"$db_host" school score >./$file_name && auto_ftp ./$file_name