Przesyłanie dużej ilości danych między kontynentami [duplikat]

12

Możliwy duplikat:
Darmowy sposób udostępniania dużych plików przez Internet?
Jakie są opcje przesyłania dużych plików bez korzystania z Internetu?

Laboratorium mojej żony realizuje projekt tutaj w USA ze współpracownikami w Singapurze. Od czasu do czasu muszą przesyłać duże ilości danych o dużych wymiarach (skompresowane ~ 10 GB) między kontynentami. Przy obecnych technologiach, co byłoby dobrym rozwiązaniem dla tego scenariusza użytkowania?

Mogę wymyślić kilka, ale żaden z nich nie wydaje się idealny:

  • Bezpośrednie połączenie przez Internet: szybkość transferu wynosi około 500 KB / s, brak też narzędzia do obsługi błędów / retransmisji.
  • Przesyłanie na wspólny serwer lub usługę, taką jak Dropbox: przesyłanie dla współpracownika spoza USA jest bolesne.
  • Nagrywanie płyt lub kopiowanie na dyski twarde i wysyłanie za pośrednictwem firmy kurierskiej: opóźnienie jest znaczne, a także dodatkowa praca, aby wykonać kopię lokalną.

Jakieś sugestie?

Aktualizacja: żadna ze stron współpracy nie jest zaawansowanym technologicznie użytkownikiem.

Szczery
źródło
Obraz jak na zdjęciach, czy obraz jak w pliku reprezentującym DVD?
Daniel Beck
Obrazy wielowymiarowe generowane przez mikroskopy.
Frank
1
To kilka bardzo dużych plików? Czy możesz podać nam więcej informacji na temat liczby plików, indywidualnych rozmiarów plików i liczby zmian między transferami? Czy to wszystko z nich, niektóre z nich itp.?
Daniel Beck
Brzmi jak praca dla Sneakernet lub IPoAC .
Naftuli Kay,

Odpowiedzi:

20

Sugeruję użycie rsync . Rsync obsługuje algorytm transferu delta, więc jeśli twoje pliki są tylko częściowo zmienione lub jeśli poprzedni transfer został nieprawidłowo zakończony, Rsync jest wystarczająco inteligentny, aby zsynchronizować tylko to, co nowe / zmienione.

Istnieje kilka portów oryginalnego Rsync na Windows i inne niekompatybilne systemy, zarówno wolne, jak i niewolne. Szczegółowe informacje można znaleźć w artykule Rsync na Wikipedii .

Rsync przez SSH jest bardzo szeroko stosowany i działa dobrze. 10 GB to obecnie stosunkowo niewielka ilość danych i nie określiłeś, co oznacza „czasami”. Co tydzień? Codziennie? Cogodzinny? Przy prędkości transferu 500 KB / s zajmie to około 6 godzin, a nie długo. Jeśli musisz często przesyłać dane, prawdopodobnie lepiej jest utworzyć zadanie cron, aby automatycznie uruchomić rsync.

haimg
źródło
Nie rsyncwymaga własnego protokołu dla delt, wymagając odpowiedniego systemu odpowiednika na drugim końcu?
Daniel Beck
@DanielBeck: W dokumentach nie ma nic, co mówi, że rsync przez SSH nie może używać deltacopy ... Zasadniczo klient rsync wykonuje kolejną kopię rsync na serwerze przez ssh, więc nie rozumiem, dlaczego to nie działa.
haimg
+1 Masz punkt. Czy to pozostawia wymagania dotyczące Linuksa na serwerze?
Daniel Beck
Czy rsyncalgorytm delta działa podczas przesyłania binarnie skompresowanych danych ( .ziplub .jpg)?
Aditya
@DanielBeck: Dodałem link do artykułu w Wikipedii z kilkoma portami rsync Windows. Najwyraźniej przynajmniej niektóre z nich działają jako serwer, w tym ssh. Jednak nigdy z nich nie korzystałem.
haimg
12

Połączenie przez Internet może być realną opcją, a program taki jak bittorrent jest dokładnie odpowiedni do tego celu, ponieważ rozbije pliki na logiczne części, które zostaną wysłane przez Internet w celu odtworzenia na drugim końcu.

Bittorrent zapewnia również automatyczną korektę błędów, naprawę uszkodzonych elementów, a jeśli więcej osób potrzebuje plików, będą mogli skorzystać z możliwości dostarczenia pliku z tylu źródeł, ile już ma (części) pobranego pliku.

Zapewnione osoby postrzegają to jako dobry sposób na pobieranie filmów i tym podobne, ale ma on wiele innych legalnych zastosowań.

Wiele klientów bittorrent ma również wbudowane moduły śledzące, więc nie trzeba mieć dedykowanego serwera do przechowywania plików.

Mokubai
źródło
2
Dzięki za wkład. Korzystanie z BitTorrent w sieciach akademickich może denerwować ich administratorów. Również konfiguracja i obsługa serwera śledzenia może nie być tak łatwa dla przeciętnego użytkownika komputera.
Frank
2
To dobra uwaga, bittorrent jest aktywnie zabroniony w wielu sieciach korporacyjnych i akademickich. Przy prawidłowej administracji możesz jednak ustawić białą listę w sieciach użytkowników lub komputerów, które mogą korzystać z bittorrenta, choć oznaczałoby to bardzo bliskie powiązania z odpowiednimi działami IT, aby działały poprawnie. Jak wspomniałem, niekoniecznie musisz mieć serwer dedykowany, ponieważ można go wbudować w wiele programów klienckich. Jeśli to nie pasuje do twojej sytuacji, to nie martw się, po prostu wydawało mi się rozsądne, biorąc pod uwagę twoje wymagania.
Mokubai
Jeśli korzystasz z bitorrenta, również użycie nasion internetowych wydaje się być sprytnym pomysłem
Journeyman Geek
(Jako przykład jednego z „bardziej legalnych zastosowań” wymienionych w odpowiedzi, Facebook wykorzystuje bittorrent do wdrożenia swojej witryny, binarnej 1 GB, na tysiącach serwerów produkcyjnych. Jak to niefortunne, że technologia została odrzucona głównie z powodu jednego z jej zastosowań.)
Anton Strogonoff,
6

Podziel plik na części np. 50 MB (używając np split.). Oblicz sumy kontrolne dla wszystkich (np md5sum.). Przesyłaj bezpośrednio za pomocą FTP i odpornego na błędy klienta FTP, na przykład lftpw systemie Linux. Przenieś wszystkie części i plik zawierający wszystkie sumy kontrolne.

W zdalnej witrynie sprawdź, czy wszystkie porcje mają żądaną sumę kontrolną, ponownie załaduj te, które się nie powiodły, i ponownie złóż je do oryginalnego pliku (np. Używając cat).

W razie potrzeby przywróć lokalizację serwera (opublikowałem przy założeniu, że strona docelowa zapewniła serwer, a Ty zaczniesz transfer lokalnie, gdy pliki będą gotowe). Twój klient FTP nie powinien się tym przejmować.


W przeszłości miałem podobne problemy i działało używanie klienta FTP odpornego na błędy. Żadnych bitów nigdy nie przerzucano, po prostu zwykłe połączenie jest przerywane, więc mogłem pominąć tworzenie fragmentów i po prostu przesłać plik. Na wszelki wypadek podaliśmy sumę kontrolną dla pełnego pliku.

Daniel Beck
źródło
3
Musisz jednak pamiętać, że lftpz jakiegokolwiek powodu nie przerywa to trwającego transferu . Upewnij się, że zawsze masz wystarczająco dużo wolnego miejsca na dysku w witrynie docelowej.
Daniel Beck
3

Odmianą odpowiedzi Daniela Becka jest podzielenie plików na części w kolejności od 50 MB do 200 MB i utworzenie plików parzystości dla całego zestawu.

Teraz możesz przenieść pliki (w tym pliki parzystości) za pomocą FTP, SCP lub czegoś innego na zdalną stronę i sprawdzić po przybyciu całego zestawu. Teraz, jeśli części są uszkodzone, można je naprawić za pomocą plików parzystości, jeśli jest wystarczająca liczba bloków. Zależy to mniej więcej od liczby uszkodzonych plików i liczby utworzonych plików parzystości.

Pliki parzystości są często używane w sieci Usenet do wysyłania dużych plików. W większości przypadków są one dzielone na archiwa RAR. Często zdarza się, że w ten sposób przesyłane są dane o wielkości od 50 do 60 GB.

Zdecydowanie powinieneś sprawdzić pierwsze łącze, a możesz także rzucić okiem na QuickPar , narzędzie, którego można użyć do tworzenia plików parzystości, weryfikowania pobranych plików, a nawet przywracania uszkodzonych plików za pomocą dostarczonych plików parzystości.

Martijn B.
źródło
+1 - Podejście to działa dobrze na usenecie, a pliki parzystości mogą naprawić zadziwiającą ilość brakujących danych. Minusem jest czas przetwarzania wymagany do podzielenia i wygenerowania plików parzystości oraz na sprawdzenie parzystości i wyodrębnienie plików po otrzymaniu.
deizel
1

Czy to jeden duży plik 10 GB? Czy można to łatwo podzielić?

Nie grałem zbyt wiele, ale uderzyło mnie to jako interesująca i stosunkowo prosta koncepcja, która może zadziałać w tej sytuacji:

http://sendoid.com/

Craig H.
źródło
Sendoid jest całkiem fajny, ale niestety przesyłanie nadal będzie bolesne. Z drugiej strony problem utrzymuje się dla wszystkich typów, chyba że masz zamiar wysłać dysk twardy. +1, ponieważ jest łatwy w użyciu.
DMan
0

Udostępnij dane poprzez ftp / http / https / sftp / ftps (wymagające poświadczeń logowania) i użyj dowolnego menedżera pobierania po stronie klienta.

Menedżery pobierania są specjalnie zaprojektowane do pobierania danych bez względu na ewentualne błędy, więc idealnie pasują do Twojego zadania.

Jeśli chodzi o serwer, serwer FTP jest zazwyczaj najłatwiejszy do skonfigurowania. Możesz sprawdzić listę na Wikipedii. HTTPS, SFTP i FTPS zezwalają na szyfrowanie (w czystym FTP / HTTP hasło jest wysyłane zwykłym tekstem), ale SFTP / FTPS są rzadziej obsługiwane przez oprogramowanie klienckie, a konfiguracja serwera HTTP / HTTPS jest trudna.

ivan_pozdeev
źródło
1
Problem z używaniem http lub ftp polega na tym, że są jakieś błędy transmisji, musisz wysłać całość ponownie. rsync, bittorrent i inne protokoły mogą sprawdzić, czy pliki pasują, i ponownie przesłać tylko uszkodzone elementy. Pomocne mogą być również dane parzystości, takie jak generowane przez QuickPar.
afrazier
Zarówno FTP, jak i HTTP zawierają możliwość wznowienia transferu jako opcjonalne rozszerzenie, które jest obsługiwane przez większość serwerów i praktycznie wszystkich menedżerów pobierania.
ivan_pozdeev
Mogą zostać wznowione i teoretycznie TCP upewnia się, że dane docierają w kolejności i mają prawidłową sumę kontrolną. Jednak każdy, kto miał uszkodzony duży transfer HTTP lub FTP, nauczył się wartości bardziej niezawodnych protokołów lub jakiegoś ECC.
afrazier