Zbudowałem aplikację internetową, która działa na serwerze wirtualnym dla jednego z moich klientów. Obejmuje to możliwość przesyłania plików, ale teraz chcą przechowywać te pliki na serwerze w swoim biurze.
Najłatwiejszym sposobem jest zamontowanie systemu plików przez Internet bezpośrednio na serwerze wirtualnym. Mam doświadczenie w montowaniu NFS przez sieć wewnętrzną, ale nie jestem pewien, czy zadziałałoby w tym scenariuszu.
jakieś pomysły? Zawsze mogę napisać nowe oprogramowanie do przesyłania plików, ale byłoby to łatwe!
Uwaga: Serwer w biurze to serwer Ubuntu 12 działający na serwerze wirtualnym w środowisku Windows Hyper-V. VPS z aplikacją internetową to Ubuntu 11.04
linux
filesystems
internet
nfs
Ben Holness
źródło
źródło
Odpowiedzi:
Nikt jeszcze nie wspomniał o sshfs . Jeśli korzystasz z nowoczesnej dystrybucji Linuksa i masz dostęp ssh do zdalnego hosta, jest to tak proste, jak:
Wydajność jest całkiem do przyjęcia (ale nie tak szybka jak synchronizacja strumieniowa jak rsync, jeśli potrzebujesz całego katalogu).
źródło
NFS jest z natury niepewny. Byłby to bardzo zły wybór do łączenia się przez Internet.
Podoba mi się post, który wspomina rsync. Zamiast używać crona do uruchomienia transferu, mam nadzieję, że możesz po prostu uruchomić zadanie rsync z kodu, który obsługuje przesyłanie plików.
Po zakończeniu przesyłania zsynchronizuj plik na serwerze, gotowe.
Oczekuję, że będziesz musiał skonfigurować bezpieczne połączenie z ich serwerem do transferu.
Jeśli chcesz, możesz umieścić przychodzące pliki na liście do przesłania, usuwając nazwy po udanym skopiowaniu i dać sobie możliwość przełączenia awaryjnego na wypadek, gdyby coś się stało z połączeniem.
Jak ktoś już zauważył, rsync jest zaprojektowany do obsługi grup plików lub hierarchii (dzięki, sprawdzanie pisowni), więc nie byłoby to trudne do osiągnięcia.
źródło
NFS może być z natury niepewny, ale nie jest to wina usługi. Telnet i FTP również są z natury niepewne, ale oba są używane od dziesięcioleci w otwartym Internecie. Jeśli zostanie ustanowiony zaszyfrowany tunel VPN, brak szyfrowania NFS nie ma znaczenia.
Ponadto, jeśli zapora sieciowa jest skonfigurowana tak, aby zezwalać tylko konkretnemu zdalnemu adresowi hosta na łączenie się z punktem montażowym NFS, wtedy nagie połączenie NFS jest w większości bezpieczne przed włamaniem, z wyjątkiem agencji Three Letter, które wąchają ruch internetowy i mają dostęp do potężnego deszyfrowania do i tak złamać zaszyfrowane zdalne połączenia.
Widzę, że niektóre wersje NFS domyślnie używają UDP, co prawdopodobnie wynika z problemów z niezawodnością Internetu. Pakiety UDP mogą zostać utracone, jeśli połączenie jest przeciążone i automatycznie nie jest podejmowana żadna retransmisja. Jeśli chcesz mieć niezawodne połączenie, upewnij się, że Twój NFS używa (lub jest zmuszony używać tylko) pakietów TCP przez Internet.
źródło
NFS można wykonać przez zaporę ogniową. Jeśli szukasz, znajdziesz innych, którzy próbowali i zakończyli się sukcesem z tym procesem, jednak nie jest to tak proste jak otwieranie portów i wydaje się być zależne od wersji NFS.
rsync jest doskonałą sugestią i ma dużą elastyczność. Byłby to jednak proces uruchamiany poza aplikacją. rsync obsługuje synchronizację lokalnych aktualizacji plików i utrzymuje synchronizację całego katalogu z innymi folderami.
ssh byłby kolejną bezpieczną opcją i wymagałby otwarcia tylko jednego portu. Używałem tego w przeszłości między systemami Windows i Linux i działałem dobrze zarówno z poziomu aplikacji, jak i planowania procesu.
Jestem pewien, że istnieją inne sposoby na osiągnięcie tego, czego szukasz, ale potrzebowalibyśmy więcej informacji na temat typów plików, które są, i jeśli łączysz je ze stroną lub przesyłasz strumieniowo za pomocą czegoś bardziej złożonego.
źródło
Montowania NFS można wykonać przy użyciu automount, który będzie próbował wypróbować montowanie w przypadku awarii, ale jedynym sposobem, w jaki rozważałbym użycie go w potoku, jest połączenie VPN lub inne bezpieczne połączenie (właściwie nie wziąłbym tego pod uwagę, ale wydaje się, że pomysł jest zablokowany).
Nawet przy użyciu automount, jeśli występuje problem z siecią, a Ty umieszczasz ich przesyłanie na podstawie NFS, przesyłanie najprawdopodobniej zakończy się niepowodzeniem lub zostanie uszkodzone, chyba że przechowujesz plik lokalnie, a następnie kopiujesz po pomyślnym przesłaniu.
źródło