Próbuję przesłać około 100 000 plików o łącznej wielkości 90 GB. Obecnie używam demona rsync, ale jego szybkość 3,4 Mb / s muszę to zrobić wiele razy. Zastanawiam się, jakie mam opcje, które zmaksymalizują połączenie 100mbit przez Internet i będą bardzo niezawodne.
rsync
file-transfer
incognito2
źródło
źródło
Odpowiedzi:
Czy rozważałeś Sneakernet ? Przy dużych zestawach danych nocna wysyłka jest często szybsza i tańsza niż przesyłanie przez Internet.
źródło
W jaki sposób? Lub TL; DR
Najszybszy sposób znalazłem to połączenie
tar
,mbuffer
assh
.Na przykład:
Dzięki temu osiągnąłem trwały transfer sieci lokalnej ponad 950 Mb / s na łączach 1 Gb. Zamień ścieżki w każdym poleceniu tar, aby były odpowiednie do tego, co przenosisz.
Dlaczego? mbuffer!
Największym wąskim gardłem w przesyłaniu dużych plików przez sieć jest zdecydowanie dyskowe operacje we / wy. Odpowiedź brzmi:
mbuffer
lubbuffer
. Są w dużej mierze podobne, alembuffer
mają pewne zalety. Domyślny rozmiar bufora to 2 MB dlambuffer
i 1 MB dlabuffer
. Większe bufory prawdopodobnie nigdy nie będą puste. Wybór rozmiaru bloku, który jest najniższą wspólną wielokrotnością rodzimego rozmiaru bloku zarówno w docelowym, jak i docelowym systemie plików, zapewni najlepszą wydajność.Buforowanie jest rzeczą, która sprawia, że wszystkie różnica! Użyj go, jeśli go masz! Jeśli go nie masz, weź go! Używanie
(m}?buffer
plus cokolwiek jest lepsze niż cokolwiek innego. jest to niemal dosłownie panaceum na powolne przesyłanie plików w sieci.Jeśli przenosisz wiele plików, użyj ich,
tar
aby „połączyć” je w jeden strumień danych. Jeśli jest to pojedynczy plik, którego można użyćcat
lub przekierowanie we / wy. Obciążenietar
vs.cat
jest statystycznie nieistotne, więc zawsze używamtar
(lubzfs -send
gdzie mogę), chyba że jest to już tarball . Żadne z nich nie gwarantuje otrzymania metadanych (w szczególnościcat
nie będzie). Jeśli chcesz metadanych, zostawię to jako ćwiczenie dla ciebie.Wreszcie użycie
ssh
mechanizmu transportowego jest zarówno bezpieczne, jak i niesie za sobą bardzo niewiele kosztów. Ponownie, narzutssh
kontra vs.nc
jest statystycznie nieistotny.źródło
tar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
ssh
sprawia, że to proste. Korzystaniestunnel
,socat
lubopenssl
też działa, ale są one bardziej skomplikowane, aby skonfigurować dla prostych transferów.Wspominasz o „rsync”, więc zakładam, że używasz Linuksa:
Dlaczego nie tworzysz pliku tar lub tar.gz? Czas transferu sieciowego jednego dużego pliku jest szybszy niż wielu małych. Możesz go nawet skompresować, jeśli chcesz ...
Smoła bez kompresji:
Na serwerze źródłowym:
Następnie na końcu odbierającym:
Smoła z kompresją:
Na serwerze źródłowym:
Następnie na końcu odbierającym:
Po prostu użyłbyś rsync do faktycznego przesłania plików (tar | tar.gz).
źródło
Można spróbować
tar
issh
trik opisany tutaj :powinno to być możliwe do ponownego zapisu do następujących czynności :
Jednak stracisz
--partial
cechyrsync
tego procesu. Jeśli pliki nie zmieniają się bardzo często, warto zainwestować w powolny inicjałrsync
, ponieważ w przyszłości będzie on działać znacznie szybciej.źródło
Możesz użyć różnych opcji kompresji rsync.
współczynnik kompresji plików binarnych jest bardzo niski, więc można je pomijać przy użyciu opcji --skip-compress np. iso, już zarchiwizowanych i skompresowanych plików archiwalnych itp.
źródło
Jestem wielkim fanem SFTP. Używam SFTP do przesyłania multimediów z mojego głównego komputera na mój serwer. Dostaję dobre prędkości przez LAN.
SFTP jest niezawodny, dałbym temu szansę, ponieważ jest łatwy w konfiguracji, aw niektórych przypadkach może być szybszy.
źródło