0

我正在运行一个超出单个服务器容量的文件主机,我需要实现多个服务器的文件存储。我想尽可能便宜地做到这一点,所以那些花哨的大容量存储方法是不可能的。我只是想将用户上传到托管所有 http 和 mysql 的“网关”服务器的文件移动到其中一个媒体服务器。它可以在用户请求结束时完成,也可以每隔几分钟通过 cron 完成。

在这一点上,我真正熟悉的唯一方法是使用 ftp_put php 函数,并将文件通过 ftp 传输到不同的服务器,但我过去曾遇到过这种方法的问题,尤其是对于较大的文件,而且很多将要传输的文件将超过 100mb。

谁能为此提出一个好的解决方案?最好我正在寻找一个纯粹的软件解决方案......希望只不过是一个 php/bash 脚本。

4

3 回答 3

1

您可以编写一个在 cron 中运行的 bash 脚本

并使用 scp 或 sftp 或 rsync 等命令行

例子 :

[bash]# scp filename alice@galaxy.example.com:/home/alice

将“文件名”复制到远程galaxy.example.com 服务器上alice 的主目录中

于 2009-06-17T06:35:15.443 回答
1

一种不需要编程设置并且非常安全的方法是从另一台服务器挂载一个文件夹,然后像往常一样使用 php 保存到该目录。

您不必使用 sshfs,还有很多其他方法可以提供相同的解决方案。我会在这种情况下使用 sshfs,因为它可以跨 ssh 工作,因此安全且相对容易设置。

要实现这一点(使用 sshfs):

  1. 安装sshfs
  2. 将 ssfs 文件挂载到 php 可访问的文件夹中
  3. 使用 php 脚本将文件存储在 sshfs 挂载中,因此存储在另一台服务器上。

另一种方法是使用 crontab 在两者之间设置rsync命令。

于 2009-06-17T06:52:51.823 回答
0

使用 cron、bash 脚本和 rsync。

cron: “Cron 是类 Unix 计算机操作系统中基于时间的作业调度程序。'cron' 是 'chronograph' 的缩写。”

bash: “Bash 是为 GNU 项目编写的免费软件 Unix shell。”

rsync: “rsync 是用于 Unix 系统的软件应用程序,它可以将文件和目录从一个位置同步到另一个位置,同时在适当的时候使用 delta 编码最小化数据传输。”

总之,将 rsync 命令放在 bash 脚本中,并让 cron 定期运行它。

有关一些示例,请参见此处:

于 2009-06-17T06:59:35.700 回答