najlepsze narzędzie linux do przesyłania tysięcy plików między dwoma serwerami [zamknięte]

0

Jeśli uważasz, że to duplikat ... cóż, nie znalazłem jeszcze satysfakcjonującej odpowiedzi: /

Muszę przeprowadzić migrację folderu z serwera na inny. Osobiście użyłbym rsync, ale pytanie brzmi ... ten folder zawiera zarówno duże pliki (> 5 GB), jak i wiele małych plików (ponad 1 KB <30 KB).

Chciałbym uniknąć wąskiego gardła spowodowanego przesyłaniem wielu małych plików.

Czy rsync jest odpowiednim narzędziem do tego, czy istnieją lepsze rozwiązania?

SCP działa jeszcze wolniej, na wypadek, gdyby ktoś to zasugerował.

Wyatt Gillette
źródło
Szukasz odpowiedzi opartej na opiniach, której nie uzyskasz na tej stronie. Zamiast tego wypróbuj Zalecenia dotyczące oprogramowania , ale musisz jasno określić, co rozumiesz przez najlepszy : najszybszy, najbezpieczniejszy, najniższy narzut, najłatwiejszy w użyciu lub inne kryteria? Dla mnie, jeśli serwery są blisko geograficznie, użyłbym zewnętrznego dysku do tak dużego transferu.
AFH
Dziękuję za komentarz. Nie pytam o odpowiedź opartą na opiniach, powinienem sprecyzować, że szukam najszybszego rozwiązania. Niestety, ruchów fizycznych nie można zastosować z powodu wielu czynników (głównie burokratów). Kiedyś klonowałem maszynę bezpośrednio, ale w tym przypadku byłoby to stratą czasu i przestrzeni.
Wyatt Gillette
@WyattGillette Wciąż szukasz rekomendacji oprogramowania, a tutaj, w Superuser, pytania, które wydają się rekomendacjami oprogramowania (co potwierdziłeś dwa razy, nie ma zastosowania).
Ramhound
Pytasz o rekomendację produktu ( narzędzie linux ) i jasno oparte na opiniach ( najlepsze narzędzie linux), co jest wyraźnie wskazane jako nie na temat w wytycznych centrum pomocy .
Ken White

Odpowiedzi:

1

Jeśli jest to jednorazowy transfer, rsync NIE jest narzędziem do zadania.

Sposób, w jaki bym to zrobił, polegałby na tarowaniu plików (i opcjonalnie kompresji, w zależności od charakterystyki serwerów i połączenia między nimi), a następnie przesyłaniu tego przez SSH na nowy serwer i dekompresji. Można to zrobić za pomocą 1 polecenia. Będziesz musiał go zmieniać w zależności od specyfiki, ale będzie wyglądać mniej więcej tak:

tar -cz /startdir | pv | ssh user@ip "cd /destpath; tar -xf" 

Spowoduje to skompresowanie plików do pojedynczego strumienia, więc nie będzie dużo tam iz powrotem dla każdego pliku, co zapewnia maksymalną prędkość. Wykonuje również kompresję, wysyłkę i dekompresję w jednym kroku, dzięki czemu zminimalizuje całkowity czas.

Aby rozbić, jak to działa:

tar kompresuje / dekompresuje pliki do strumienia na standardowym wyjściu (ponieważ nie podano nazwy pliku). -c oznacza tworzenie, a z oznacza kompresję. Możesz pominąć z, jeśli kompresja nie jest pożądana.

Bit pv nie jest potrzebny, ale zapewnia informację zwrotną o tym, że dane są przesyłane oraz o szybkości przesyłania skompresowanych danych. Polecenie ssh oczywiście tworzy połączenie ze stroną zdalną i podaje do niego dane wyjściowe poprzednich poleceń. Następnie przeskakuje do odpowiedniego katalogu i dekompresuje go.

Davidgo
źródło
Lubię to! Nie czeka to na zakończenie komendy tar, ale przesyła ją w sposób ciągły do ​​zdalnego hosta. Czy to prawda?
paradokson
1
Tak. Zgadza się.
davidgo
to jest doskonałe i właśnie tego potrzebowałem, dziękuję!
Wyatt Gillette
-1

Użyj find ... -sizedo tarplików o danym rozmiarze do jednego dużego, a następnie użyj rsync .... --min-sizedo przesłania tylko plików powyżej określonego rozmiaru.

ksenoid
źródło