Próbuję skopiować zawartość uszkodzonego napędu USB. Jeśli odczytam dane zbyt szybko, układ kontrolera napędu przegrzewa się, a dysk znika z systemu. Kiedy tak się stanie, muszę odłączyć dysk, odczekać minutę, aż ostygnie, podłączyć go z powrotem i ponownie uruchomić kopię.
Mam starą kopię zapasową zawartości dysku, więc oczywistym sposobem na odzyskanie reszty danych jest rsync
zaktualizowanie kopii zapasowej, ale powoduje to całkowite „odczyt zbyt szybko, dysk znika i muszę zacząć od nowa ”. Czy istnieje sposób, aby powiedzieć, rsync
że odczytuje tylko X megabajtów danych na minutę? Alternatywnie, czy można nakazać mu zawieszenie operacji po zniknięciu napędu i wznowienie pracy po ponownym podłączeniu?
Odpowiedzi:
W przeciwieństwie do doświadczenia DopeGhoti,
--bwlimit
flaga ogranicza przesyłanie danych, z moim rsync (v3.1.2).test:
(uwaga: moje
time
wyniki wyglądają inaczej niż większośćtime
wywołań (zsh
funkcja), te czasy nie były przeze mnie edytowane)Indziej, być może coś wzdłuż linii podwójnej
-exec
infind
. Uważam , żersync -R
należy utworzyć i skopiować foldery nadrzędne, ale jeśli nie, tocp --parents
należy.Uwaga : sprawdź również ddrescue , może być to, czego szukasz :)
źródło
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
brak wzmianki o sieci. Od czasu do czasu przeglądanie kodu ogranicza prędkość odczytu , niezależnie od miejsca docelowego. Ponadto, anegdota: Korzystam z tej opcji od lat, aby ograniczyć prędkość zapisu od lokalnego do lokalnego. linux.die.net/man/1/rsyncio.c
, linie 832-3:if (bwlimit_writemax) sleep_for_bwlimit(n);
W każdym razie prawdopodobnie działałoby to zgodnie z przeznaczeniem, czytając w krótkich seriach i śpiąc między nimi. Poleciłbym zacząć od niskiej wartości i ostrożnie zwiększać, lub po prostu pozwolić powolnemu transferowi działać przez noc.Trochę rozwiązania MacGyver, ale w przeszłości miałem z tym duży sukces:
umieść stary koncentrator USB 1 między pamięcią a komputerem. Nie ma mowy, do diabła, szybko to skopiuje :-)
Inna możliwość: jeśli masz inną pamięć USB, umieść ją na innym porcie USB podłączonym do tego samego koncentratora głównego (aby dzieliła przepustowość z twoim dyskiem problemowym).
Teraz rozpocznij dużą operację zapisu na dodatkowym drążku, aby oba drążki rywalizowały o przepustowość. Aby uzyskać dalszą kontrolę, możesz użyć narzędzia jonice, aby jeszcze bardziej obniżyć priorytet na pasku problemu.
źródło
Możesz użyć
rsync --bwlimit=RATE
do ograniczenia prędkości transferu plików, która, w oparciu o poniższe komentarze, w rzeczywistości wydaje się działać, ograniczając prędkość odczytu danych, i właśnie tego szukasz.źródło
ionice
? linux.die.net/man/1/ionice--bwlimit
ustawia limit I / O, niekoniecznie limit sieci . Testowane wiele razy w różnych scenariuszach: ta opcja powoduje, że rsync ogranicza się do odczytu , niezależnie od miejsca docelowego. (Odkryto to w podobnym scenariuszu, w którym szybkie zapisywanie na wolnym urządzeniu lokalnym spowodowało, że zawiodły)Więcej rozwiązań oprócz
rsync --bwlimit=100
100KiB / s.Użyj
ddrescue
z--max-read-rate
opcją pełnej kopii dysku. Umożliwi to również ponowne uruchomienie pełnej kopii dysku w miejscu, w którym zostało przerwane po błędzie.ddrescue
ma również wiele innych opcji związanych z odzyskiwaniem danych, patrz instrukcja tutaj .Użyj
pv
(„podglądu rur”) z--rate-limit
opcją lubthrottle
narzędzia do oceny limitów rur.pv
może również pokazywać postęp. Możesz sprawić, aby działało to dla dowolnego narzędzia, które używa potoku lub może używać potoku:lub
Spójrz na stronę pv, aby uzyskać więcej ustawień i przykładów. Na przykład
throttle
możesz wypróbować-w
opcję, która określa sposób obliczania prędkości, zobacz stronę manszy przepustnicy .źródło
pv
manpage ma jeszcze więcej przykładów różnych zastosowań.pv
kółko odkąd w moim odkryciu taśmy jocking dni. Wcześniej, gdy tar zapisywał na napędy taśmowe. :)