我的脚本:
#!/bin/bash
#############此脚本需要使用postgres用户执行,建议添加到postgres用户的crontab里定时执行######
# 定义变量
remote_host="192.168.9.32" # 远程服务器主机名
remote_path="/odoo" # 远程服务器目标路径
ftp_username="ftpuser" # FTP用户名
ftp_password="ftppassword" # FTP密码
dbname="xiaoniba2023"
dbuser="postgres"
dbpwd=""
tmp_path="/var/tmp/"
backup_filename="$tmp_path$back$dbname-$(date +%Y%m%d_%H%M%S).sql"
# 创建备份文件
pg_dump -U $dbuser -d $dbname -f $backup_filename
# 通过FTP上传备份文件
ftp -n $remote_host <<EOF
quote USER $ftp_username
quote PASS $ftp_password
put $backup_filename $remote_path/$(basename "$backup_filename")
bye
EOF
# 删除本地备份文件
rm "$backup_filename"
# 输出备份完成信息
echo "备份文件 $backup_filename 已成功上传到远程服务器"
更新一下:加入ftp连接检测
#!/bin/bash
#############此脚本需要使用postgres用户执行,建议添加到postgres用户的crontab里定时执行######
# 定义变量
remote_host="192.168.9.32" # 远程服务器主机名
remote_path="/odoo" # 远程服务器目标路径
ftp_username="odoobackup" # FTP用户名
ftp_password="Odoo2024Xiaoniba" # FTP密码
dbname="xiaoniba2023"
dbuser="postgres"
dbpwd=""
tmp_path="/var/tmp/"
backup_filename="$tmp_path$back$dbname-$(date +%Y%m%d_%H%M%S).sql"
# 创建备份文件
pg_dump -U $dbuser -d $dbname -f $backup_filename
# 检查 FTP 服务器连接状态
if nc -z -w 5 $remote_host 21; then
# FTP 服务器连接正常,执行上传操作
ftp -n $remote_host <<EOF
quote USER $ftp_username
quote PASS $ftp_password
put $backup_filename $remote_path/$(basename "$backup_filename")
bye
EOF
# 检查FTP上传是否成功
if [ $? -eq 0 ]; then
# FTP 上传成功,删除本地备份文件
rm "$backup_filename"
# 输出备份完成信息
echo "$(date +%Y-%m-%d_%H:%M:%S),备份文件 $backup_filename 已成功上传到远程服务器"
else
# FTP 上传失败,输出错误信息并停止执行
echo "FTP上传失败"
exit 1
fi
else
# FTP 服务器无法连接,输出错误信息并停止执行
echo "$(date +%Y-%m-%d_%H:%M:%S),无法连接到 FTP 服务器"
exit 1
fi
发表评论 取消回复