Монтирование файловой системы через Интернет

11

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

Самый простой способ сделать это - смонтировать свою файловую систему через Интернет непосредственно на виртуальном сервере. У меня есть опыт монтирования NFS по внутренней сети, но я не уверен, будет ли он работать в этом сценарии.

Какие-нибудь мысли? Я всегда могу написать новое программное обеспечение для передачи файлов, но это было бы легко исправить!

Примечание. Сервером в офисе является сервер Ubuntu 12, работающий на виртуальном сервере в среде Windows Hyper-V. VPS с веб-приложением - Ubuntu 11.04

Бен Холнесс
источник
Является ли безопасность проблемой для этих файлов?
Адриан Корниш
rsync через работу cron.
Игнасио Васкес-Абрамс
@AdrianCornish - не совсем, хотя предпочтительнее было бы безопасное решение.

Ответы:

12

Никто еще не упомянул sshfs . Если вы работаете в современном дистрибутиве Linux и имеете доступ по ssh к удаленному хосту, это просто:

sshfs user@hostname:/remote/directory /local/directory

Производительность вполне приемлема (но не так быстро, как потоковая синхронизация, например, rsync, если вам нужен весь каталог).

Энди Росс
источник
Это кажется лучшим решением на сегодняшний день, в FAQ даже говорится: «Ресурсы можно монтировать через медленные и ненадежные (удаленные) соединения». Другая веб-страница сообщает мне, что "sshfs -o reconnect server: / path / to / mount" автоматически восстановит соединение, если соединение оборвется.
3

NFS по своей природе небезопасен. Это был бы очень плохой выбор для подключения через Интернет.

Мне нравится пост, в котором упоминается Rsync. Вместо того, чтобы использовать cron для запуска передачи, я надеюсь, что вы можете просто запустить задание rsync из своего кода, который обрабатывает загрузку файлов.

Когда загрузка завершится, rsync файл на их сервер, готово.

Я бы ожидал, что вам нужно будет установить безопасное соединение со своим сервером для передачи.

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

Как уже отмечал кто-то, rsync предназначен для обработки групп файлов или иерархии (спасибо, проверка орфографии), поэтому это не составит особого труда.


источник
1
У rsync нет проблем с использованием SSH в качестве транспорта.
Игнасио Васкес-Абрамс
Веб-приложение уже сохраняет файлы на локальном сервере и ссылается на них там. На локальном сервере не будет места, поэтому их нужно будет удалить после переноса, что означает написание нового кода, поэтому, если возможно, я сначала ищу смонтированное решение.
1

NFS может быть небезопасным, но это не ошибка службы. Telnet и FTP также небезопасны, но оба они десятилетиями использовались в открытом Интернете. Если зашифрованный VPN-туннель установлен, то отсутствие шифрования NFS не имеет значения.

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

Я вижу, что некоторые версии NFS по умолчанию используют UDP, что, вероятно, является причиной проблем с надежностью Интернета. UDP-пакеты могут быть потеряны, если соединение перегружено, и повторная передача не предпринимается автоматически. Если вы хотите надежного соединения, убедитесь, что ваша NFS использует (или вынуждена использовать только) TCP-пакеты через Интернет.

Дейл Махалко
источник
1
> Telnet и FTP также по своей природе небезопасны, но оба они десятилетиями использовались в открытом Интернете. Хотя это правда, я не думаю, что это хороший момент, потому что обычно считается (очень) плохой практикой использовать их через Интернет сейчас же. Mozilla даже предлагает отказаться от незашифрованного http .
Ян Д. Скотт,
0

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

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

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

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

Тим Косцельский
источник
Я понимаю альтернативы, монтирование файловой системы было бы самым простым решением, я просто не знаю, насколько стабильна NFS в Интернете, а не во внутренней сети. Что произойдет, если соединение прервется и т. Д., Или если есть более новая альтернатива, разработанная для обеспечения этого.
0

Монтирование NFS может быть выполнено с использованием автомонтирования, которое продолжит попытки монтирования при сбое, но я мог бы использовать его только по каналам с помощью vpn или другого безопасного соединения (на самом деле, я бы не стал это рассматривать, но Вы звучите сосредоточенно на идее).

Даже при использовании автоматического монтирования, если есть проблема с сетью, и вы помещаете их загрузки в монтирование NFS, загрузка, скорее всего, завершится неудачно или будет повреждена, если вы не сохраните файл локально, а затем скопируете его при успешной загрузке.


источник