【问题标题】:Remote tar.gz with sql run local server带有 sql 的远程 tar.gz 运行本地服务器
【发布时间】:2026-02-14 04:10:01
【问题描述】:

我有一个带有完整 mysql 数据库更新的 tar.gz,我可以通过 ftp 访问它。

这个 tar.gz 每天更新,我想创建一个到该 ftp 帐户的 php 和/或 mysql 连接,这样我就可以在我的本地 mysql 服务器上运行那个大型 sql 查询。

有什么想法吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    (我要冒个险,假设您想从某种 unix 盒子中执行此操作...)

    抛出这个:

    #!/bin/bash
    
    wget                        \
        -O -                    \
        --ftp-user=username     \
        --ftp-password=password \
        "ftp://wherever/whatever.tar.gz" | tar xzOf - | mysql --user=whoever --password=secret dbname
    

    在一个文件中(例如update-db.sh)然后chmod它:

    chmod 755 update-db.sh
    

    那么你可以:

    ./update-db.sh
    

    只要您想下载更新。或者,您可以将其放入 cron 作业 (man crontab)。

    编辑:O 标志添加到tar,以便提取到标准输出。

    【讨论】:

    • 我可以同时将 tar.gz sql 源代码运行到我的 mysql 服务器中吗?怎么样?
    • 对不起,我没有阅读完整的脚本......非常感谢你去试试
    • “:错误的解释器:没有这样的文件或目录/bash”是什么意思???有什么想法吗?
    • 文件中很可能有回车符 (\r) 而不仅仅是换行符 (\n)
    • @Bright,你的脚本的问题是你在 tar 的输出上运行 mysql。 tar 提取文件,因此您需要创建一个临时目录并在所有文件上运行 mysql,例如*.sql 文件。
    【解决方案2】:

    首先 PHP 支持从 FTP 读取,只需使用 fopen 和指定的 ftp 协议,像这样

    <?php
    $handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
    ?>
    

    然后您需要解压缩存档。这里来自 Pear 存储库的 File_Archive 将非常方便

    【讨论】:

    • 这是一个开始。但是有没有办法在不解压的情况下运行完整的sql?
    • 我不这么认为。无论如何,使用 Sean 的解决方案我还没有意识到你会使用 cron