Каков наилучший способ передачи файла на другой сервер? - PullRequest
0 голосов
/ 17 июня 2009

Я использую файловый хост, размер которого превышает возможности одного сервера, и мне нужно реализовать хранилище файлов на нескольких серверах.Я хотел бы сделать это как можно дешевле, поэтому об этих причудливых методах массового хранения не может быть и речи.Я просто хочу переместить файл, загруженный пользователем, на сервер «шлюза», на котором размещены все http и mysql, на один из медиасерверов.Это можно сделать либо в конце запроса пользователя, либо через cron каждые пару минут.

На данный момент единственный метод, с которым я действительно знаком, это использование php-функции ftp_put и просто передача файла на другой сервер, но в прошлом у меня были проблемы с этим методом, особенно для больших файлов.и многие файлы, которые будут передаваться, будут иметь размер более 100 МБ.

Кто-нибудь может предложить хорошее решение для этого?Предпочтительно, я ищу чисто программное решение ... надеюсь, не более, чем скрипт php / bash.

Ответы [ 3 ]

1 голос
/ 17 июня 2009

Один метод, который не требует программной настройки и является достаточно безопасным, - это монтировать папку с другого сервера и использовать php для сохранения в этот каталог, как вы это обычно делаете.

Вам не нужно использовать sshfs, есть множество других способов предоставить то же решение. В этой ситуации я бы использовал sshfs, так как он работает в ssh, поэтому он безопасен и относительно прост в настройке.

Для этого (с помощью sshfs):

  1. Установка sshfs
  2. Смонтируйте файл ssfs в папку, доступную для php
  3. Используйте сценарий php для хранения файлов внутри монтирования sshfs и, следовательно, на другом сервере.

Другим способом является установка команды rsync между этими двумя командами с помощью crontab.

1 голос
/ 17 июня 2009

вы можете написать скрипт bash, который запускается в cron

и используйте командную строку, например, scp или sftp или rsync

пример:

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

Скопируйте "filename" в домашний каталог Алисы на удаленном сервере galaxy.example.com

0 голосов
/ 17 июня 2009

Используйте cron, bash-скрипт и rsync.

cron:"Cron - это планировщик заданий на основе времени в Unix-подобных компьютерных операционных системах.« Cron »- это сокращение от« хронограф »."

bash:"Bash - это бесплатная программная оболочка Unix, написанная для проекта GNU."

rsync:"rsync - это программное приложение для систем Unix, которое синхронизирует файлы и каталоги из одного местоположения в другое, минимизируя передачу данных с использованием дельта-кодирования, когда это необходимо."

В итоге, поместите команду rsync в скрипт bash и заставьте cron запускать ее через регулярные промежутки времени.

См. здесь для некоторых примеров:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...