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.
data-transfer
Szczery
źródło
źródło
Odpowiedzi:
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.
źródło
rsync
wymaga własnego protokołu dla delt, wymagając odpowiedniego systemu odpowiednika na drugim końcu?rsync
algorytm delta działa podczas przesyłania binarnie skompresowanych danych (.zip
lub.jpg
)?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.
źródło
Podziel plik na części np. 50 MB (używając np
split
.). Oblicz sumy kontrolne dla wszystkich (npmd5sum
.). Przesyłaj bezpośrednio za pomocą FTP i odpornego na błędy klienta FTP, na przykładlftp
w 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.
źródło
lftp
z jakiegokolwiek powodu nie przerywa to trwającego transferu . Upewnij się, że zawsze masz wystarczająco dużo wolnego miejsca na dysku w witrynie docelowej.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.
źródło
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/
źródło
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.
źródło