我运行的文件主机超出了单个服务器的容量,我需要实现多个服务器存储文件。我想尽可能便宜地做到这一点,所以那些花哨的大容量存储方法是不可能的。我只是想将用户上传的文件移动到其中一个媒体服务器的“网关”服务器,该服务器承载所有的http和mysql。它可以在用户请求结束时完成,也可以每隔几分钟通过cron完成。
此时我真正熟悉的唯一方法是使用ftp_put php函数,只需将文件ftping到另一台服务器,但我以前遇到过这种方法的问题,特别是对于较大的文件,以及很多将被转移的文件将超过100mb。
有人能建议一个好的解决方案吗?我最好寻找一个纯粹的软件解决方案...希望只不过是一个php / bash脚本。
答案 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):
答案 2 :(得分:0)
使用cron,bash脚本和rsync。
cron:“Cron是类Unix计算机操作系统中基于时间的作业调度程序.'cron'是'计时码表'的缩写。”
bash:“Bash是为GNU项目编写的免费软件Unix shell。”
rsync:“rsync是Unix系统的软件应用程序,它将文件和目录从一个位置同步到另一个位置,同时在适当的时候使用增量编码最小化数据传输。”
总之,将rsync命令放在bash脚本中并让cron定期运行它。
有关示例,请参阅here: