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ł.
Odpowiedzi:
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:
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.
źródło
Użyj
find ... -size
dotar
plików o danym rozmiarze do jednego dużego, a następnie użyjrsync .... --min-size
do przesłania tylko plików powyżej określonego rozmiaru.źródło