如何创建Cron作业备份MySQL和FTP备份到我的备份服务器?

时间:2009-10-17 23:22:47

标签: mysql bash command-line backup cron

我想设置一个cron作业来运行,以便在数据库运行时自动备份我的MySQL数据库,然后将备份的FTP备份到我的备份服务器。

我假设我可以使用bash脚本执行此操作。

任何人都知道一个很好的方法来实现这个目标吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用lftp命令行ftp client:

是一种非常简单的方法

backup.sh:

mysqldump -f [database] | gzip > /backup/[database].dump.gz
lftp -f /backup/lftp.script

lftp.script:

open backup.ftp.example.com
user [username] [password]
cd /backup
mv webflag.dump.gz.8 webflag.dump.gz.9
mv webflag.dump.gz.7 webflag.dump.gz.8
mv webflag.dump.gz.6 webflag.dump.gz.7
mv webflag.dump.gz.5 webflag.dump.gz.6
mv webflag.dump.gz.4 webflag.dump.gz.5
mv webflag.dump.gz.3 webflag.dump.gz.4
mv webflag.dump.gz.2 webflag.dump.gz.3
mv webflag.dump.gz.1 webflag.dump.gz.2
mv webflag.dump.gz webflag.dump.gz.1

注意:此方法存在许多问题:

  • ftp未加密,因此任何能够嗅探网络的人都能够看到密码和数据库数据。通过gpg -e [key]管道可用于加密转储,但ftp密码保持未加密(sftp,scp是更好的替代方案)
  • 如果有人攻击数据库服务器,他可以使用此脚本中的用户信息访问ftp服务器,并根据权限删除备份(这在现实世界中已发生:http://seclists.org/fulldisclosure/2009/Jun/0048.html

答案 1 :(得分:0)

如果数据库非常大,备份文件可能不适合服务器的硬盘驱动器。在这种情况下,我建议您使用以下管道方式和ncftpput

mysqldump -u <db_user> -p<db_password> <db_name> | gzip -c | ncftpput -u <ftp_user> -p <ftp_password> -c <ftp_url> <remote_file_name>

它适用于我。