2009-06-17 3 views
0

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

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

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

ответ

1

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

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

Для достижения этой цели (используя SSHFS):

  1. Установите sshfs
  2. монтирования SSFS файла в, доступную папке для PHP
  3. Использовать PHP скрипта для хранения файлов в том SSHFS гора, и поэтому на другом сервере.

Другой способ - установить команду rsync между двумя, используя crontab.

+0

ли присылают на другой сервер, как только файл будет сохранен в смонтированном каталоге? Что относительно производительности, если несколько файлов одновременно синхронизируются? – 2009-06-17 06:54:50

+0

Я использовал этот метод для монтирования файловой системы с удаленного сервера (через туннелированный интернет-соединение) и испытывал лишь незначительные задержки. Я использую этот метод для доступа к крупным томам файлов на локальном сервере разработки и управления ими и не испытываю особо заметной задержки. С помощью sshfs файлы синхронизируются почти мгновенно, так что это похоже на локальную файловую систему, производительность должна быть неплохой, но если у вас большой сервер, вам может понадобиться вложить SAN. – Josiah

1

вы можете написать Баш скрипт, которые работают в хрон

и использовать командную строку, как УПП или SFTP или Rsync

пример:

[bash]# scp filename [email protected]:/home/alice 

Копировать «имя файла» в домашней директории ALICE на удаленный сервер galaxy.example.com

0

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

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

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

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

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

См here некоторые примеры: