Montowanie systemu plików przez Internet


11

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


Czy bezpieczeństwo jest problemem dla tych plików?
Adrian Cornish,

rsync przez zadanie cron.
Ignacio Vazquez-Abrams,

@AdrianCornish - niezupełnie, chociaż preferowane byłoby bezpieczne rozwiązanie.

Odpowiedzi:


12

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:

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

Wydajność jest całkiem do przyjęcia (ale nie tak szybka jak synchronizacja strumieniowa jak rsync, jeśli potrzebujesz całego katalogu).


Wydaje się, że jest to jak dotąd najlepsze rozwiązanie. Często zadawane pytania mówią nawet: „Zasoby można montować na wolnych i zawodnych (odległych) połączeniach”. Inna strona mówi mi, że „sshfs -o reconnect server: / path / to / mount” spowoduje automatyczne ponowne połączenie, jeśli połączenie zostanie zerwane.

3

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.


1
rsync nie ma problemów z użyciem SSH jako transportu.
Ignacio Vazquez-Abrams,

Aplikacja internetowa już zapisuje pliki na lokalnym serwerze i tam się do nich odwołuje. Na serwerze lokalnym nie będzie miejsca, więc będą musiały zostać usunięte po przesłaniu, co oznacza napisanie nowego kodu, dlatego szukam najpierw zamontowanego rozwiązania, jeśli to możliwe.

1

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.


1
> Telnet i FTP również są z natury niepewne, ale oba są używane od dziesięcioleci w otwartym Internecie. Chociaż to prawda, nie sądzę, że jest to dobry punkt, ponieważ ogólnie uważa się (bardzo) złą praktykę za korzystanie z nich przez Internet teraz. Mozilla sugeruje nawet wycofanie niezaszyfrowanego http .
Ian D. Scott

0

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.


Rozumiem alternatywy, montowanie systemu plików byłoby najłatwiejszym rozwiązaniem, po prostu nie wiem, jak stabilny jest NFS w Internecie, a nie w sieci wewnętrznej. Co się stanie, jeśli połączenie zostanie zerwane itp., Lub jeśli istnieje nowsza alternatywa zaprojektowana tak, aby była do tego odporna.

0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.