Переместить файл в кластере серверов с сервера A на сервер B - PullRequest
1 голос
/ 13 июля 2011

** Предисловие: я не знаю много о сети.Если я описал настройки неправильно, я попробую еще раз.**

У меня есть кластер серверов serverA, serverB и serverC за брандмауэром и на коммутаторе.Я хочу переместить файл с сервера A на сервер B программным способом.В прошлом, когда мне приходилось перемещать файл на сервере А в другое место на сервере А, я просто вызывал exec ("sudo mv file1 / home / user / file1");Могу ли я сделать это, когда задействованы несколько серверов?

РЕДАКТИРОВАТЬ: Все отличные отзывы, ребята.Я смотрю, как сервер является кластером, и выясняю, монтируется ли он или что происходит.Всем спасибо!Вы, ребята, мой герой!

Ответы [ 4 ]

1 голос
/ 13 июля 2011

Хотя этот параметр, вероятно, слишком сложен для настройки, позвольте мне указать UDP дырокол .

Если адреса всех серверов известны и фиксированы, он может проходить через брандмауэры и сети с NAT.

В принципе, перфорация работает так:

Пусть A и B - два хоста , каждый в своей собственной частной сети; N1 и N2 - это два устройства NAT :

  • A и B пытаются создать UDP-соединение друг с другом
  • Скорее всего, обе попытки потерпят неудачу, так как отверстия еще не подготовлены
  • Но: устройства NAT N1 и N2 создают состояния трансляции UDP и назначают временные номера внешних портов
  • A и B связываются друг с другом через NAT-устройства непосредственно на транслируемых портах; устройства NAT используют ранее созданные состояния трансляции и отправляют пакеты A и B

Это даже работает, адреса A и B неизвестны друг другу. В этом случае требуется общедоступная известная промежуточная система S . См. статью в Википедии , чтобы узнать больше.

1 голос
/ 13 июля 2011

Если вы используете общий ресурс, такой как nfs, который смонтирован на всех серверах, вы можете использовать mv для файла.

Если у вас нет этой опции, вы можете перенести файл на другой сервериспользуя scp или rsync.

1 голос
/ 13 июля 2011

вы можете использовать инструмент командной строки linux SCP для копирования файлов по сети через SSH

убедитесь, что сертификаты SSH настроены на серверах.

Пример:

exec("sudo cp [-Cr] [[user@]ServerA:]/path/to/file [more...] [[user@]SERVERB:]/path/to/file
1 голос
/ 13 июля 2011

Ну, во-первых, вы должны использовать встроенные функции для перемещения файлов. См. rename: http://us2.php.net/rename. Это будет означать, что вам нужно убедиться, что разрешения в обоих местах правильные (вероятно, они должны принадлежать пользователю apache)

Но в ответ на ваш актуальный вопрос это действительно зависит от настроек. Как правило, другой сервер, на который вы можете перемещать файлы, будет иметь точку монтирования, и он будет выглядеть как любой другой каталог, поэтому вам вообще не понадобятся какие-либо изменения в вашем коде. Это, вероятно, лучший способ сделать это.

Если вам нужно использовать FTP или что-то подобное, вам нужно будет использовать соответствующие библиотеки для любого требуемого протокола.

...