Mam dwa serwery. Jeden z nich ma 15 milionów plików tekstowych (około 40 GB). Próbuję przenieść je na inny serwer. Rozważałem spakowanie ich i przeniesienie archiwum, ale zdałem sobie sprawę, że to nie jest dobry pomysł.
Więc użyłem następującego polecenia:
scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt
Zauważyłem jednak, że to polecenie przesyła tylko około 50 000 plików, a następnie połączenie zostaje utracone.
Czy jest jakieś lepsze rozwiązanie, które pozwala mi przenieść całą kolekcję plików? Mam na myśli coś w rodzaju rsync
transferu plików, które nie zostały przesłane po utracie połączenia. Gdy nastąpi kolejne przerwanie połączenia, ponownie wpiszę polecenie, aby przesłać pliki, ignorując te, które zostały już pomyślnie przesłane.
Nie jest to możliwe scp
, ponieważ zawsze zaczyna się od pierwszego pliku.
źródło
-h
flagi, aby użyć jednostek czytelnych dla ludzi. A jeśli chcesz więcej gadatliwości, masz kilka opcji:-i
i / lub-v
/-vv
.ssh
nie jest to dla ciebie opcja i nie potrzebujesz lub nie chcesz szyfrowania, możesz wypróbować mój skrypt s3.amazonaws.com/skaperen/rsendWystarczy użyć rsync nad ssh!
rsync -av username@ip:/var/www/html/txt /var/www/html/
Zwróć uwagę, jak użyłem ukośników na końcu folderów - to ważne .
źródło
rsync
podręcznika: „Końcowy ukośnik na źródle zmienia to zachowanie, aby uniknąć utworzenia dodatkowego poziomu katalogu w miejscu docelowym. Można myśleć o końcowym / na źródle jako o„ kopiowaniu zawartości tego katalogu ”w przeciwieństwie do„ skopiuj katalog według nazwy „, ale w obu przypadkach atrybuty katalogu zawierającego zostaną przeniesione do katalogu zawierającego w miejscu docelowym”.-av
?Użyj lftp, jest znacznie szybszy niż rsync i najlepszy do tworzenia kopii lustrzanych stron internetowych (wiele małych plików). Może również przesyłać równolegle za pomocą wielu połączeń:
Jeśli jedno połączenie zostanie zerwane, zostanie ponownie połączone i będzie kontynuowane. Przerwanie transferu spowoduje pominięcie istniejących plików i kontynuowanie.
http://lftp.yar.ru/
źródło
Innym sposobem jest przesłanie pliku tar (opcjonalnie skompresowanego) przez ssh:
źródło