文件上传至云平台基于企业开发者平台(www.21ds.cn)实现
bash脚本内容如下:
#!/bin/bash
# 定义数据库信息
DB_USER="root"
DB_PASS="root123"
DB_NAME="gxxxxs"
# 定义企业开发者平台上传信息
fs_id="FS485xxxxx3"
fc_id="FC48xxxx0"
dev_key="DEV-a3xxxxf8b"
secret="test"
# 定义备份文件名
BACKUP_FILE="$(date +%Y-%m-%d_%H-%M)_${DB_NAME}.sql"
# 备份数据库
mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BACKUP_FILE}
# 压缩备份文件
tar -czvf ${BACKUP_FILE}.tar.gz ${BACKUP_FILE}
# 删除原始备份文件
rm ${BACKUP_FILE}
devSignGeneral() {
declare -A data=(
[fs_id]=${fs_id}
[fc_id]=${fc_id}
[dev_key]=${dev_key}
)
# Remove the 'sign' key from the data
unset 'data[sign]'
local sorted_keys=($(echo "${!data[@]}" | tr ' ' '\n' | sort -n)) # sort keys in ascending order
local query_string=""
for key in "${sorted_keys[@]}"; do
query_string+="${key}=${data[$key]}&" # concatenate key-value pairs with &
done
query_string="${query_string::-1}"
query_string+=$secret
# Generate the signature using the SHA256 algorithm
signature=$(echo -n "$query_string" | sha256sum | awk '{print $1}')
# # Return the signature
echo $signature
}
# Call devSignGeneral function to generate sign
sign=$(devSignGeneral)
# 使用curl上传上文中生成的sql文件
curl -F "file=@${BACKUP_FILE}.tar.gz" "https://21ds.cn/file/upload?fs_id=${fs_id}&fc_id=${fc_id}&dev_key=${dev_key}&sign=${sign}"
# 删除备份文件
rm ${BACKUP_FILE}.tar.gz
将此脚本放数据库服务器上执行,即可将数据库上传到远程oss。