【问题标题】:How to create Cron job to backup MySQL and FTP backup to my backup server? [duplicate]如何创建 Cron 作业来备份 MySQL 和 FTP 备份到我的备份服务器? [复制]
【发布时间】:2010-12-07 16:42:41
【问题描述】:

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

我假设我可以使用 bash 脚本来做到这一点。

有谁知道实现此目的的好方法?

提前致谢。

【问题讨论】:

标签: mysql bash command-line backup cron


【解决方案1】:

如果数据库非常大,则备份文件可能不适合服务器的硬盘。在这种情况下,我建议您使用以下方式使用管道和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>

对我来说很好用。

【讨论】:

    【解决方案2】:

    这是使用lftp命令行ftp客户端的一个非常简单的方法:

    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 虽然您可能还需要为 mysqldump 提供服务器/用户/密码标志。
    • 您不应将备份从实时网络服务器 ftp 传输到备份服务器。原因:您的实时网络服务器非常公开,因此更容易受到攻击。如果发生这种情况,您也会丢失所有备份。相反,您的备份服务器应该 ftp 进入实时网络服务器以进行数据库转储并下载它们。备份服务器不应位于可公开访问的网络上,因此即使有人完全拥有您的网络服务器,备份仍然是安全的。
    • 我知道这个问题,这就是我在帖子中指出的原因。然而,在德国提供服务器托管的两家最大的公司仅以这种方式提供备份设施。
    猜你喜欢
    • 2015-11-03
    • 2012-10-13
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多