什么是将文件传输到其他服务器的最佳方法?

时间:2009-06-17 06:31:42

标签: php scaling

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

此时我真正熟悉的唯一方法是使用ftp_put php函数,只需将文件ftping到另一台服务器,但我以前遇到过这种方法的问题,特别是对于较大的文件,以及很多将被转移的文件将超过100mb。

有人能建议一个好的解决方案吗?我最好寻找一个纯粹的软件解决方案...希望只不过是一个php / bash脚本。

3 个答案:

答案 0 :(得分:1)

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

并使用命令行,如scp或sftp或rsync

示例:

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

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

答案 1 :(得分:1)

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

您不必使用sshfs,还有许多其他方法可以提供相同的解决方案。我会使用sshfs来处理这种情况,因为它适用于ssh,因此安全且相对容易设置。

实现这一目标(使用sshfs):

  1. 安装sshfs
  2. 将ssfs文件挂载到可访问php的文件夹
  3. 使用php脚本将文件存储在sshfs mount中,因此存储在另一台服务器上。
  4. 另一种方法是使用crontab在两者之间设置rsync命令。

答案 2 :(得分:0)

使用cron,bash脚本和rsync。

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

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

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

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

有关示例,请参阅here