Nadpisuję mój dysk twardy losowymi danymi, używając starego dobrego dd
:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
To tablica 2 TB, a mój MacBook (z systemem Linux, dobrze?) Może zapisywać dane tylko z prędkością około 3,7 MB / s, co jest dość żałosne, ponieważ widziałem, jak mój komputer stacjonarny robi prędkość 20 MB / s. Kiedy wieczorem wracam do domu, chciałbym zatrzymać dd
bieg, zabrać go do domu i zobaczyć, jakie postępy można zrobić z dnia na dzień dzięki mocniejszej maszynie.
Postępy monitoruję za pomocą prostej pętli:
while true; do kill -USR1 $PID ; sleep 10 ; done
Dane wyjściowe wyglądają następująco:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Gdybym miał wznowić dd
przepustkę w domu, jak ją zrestartować? Znam ten seek
parametr, ale na co mam wskazywać, numer rekordu lub liczbę bajtów?
seek=464938960
Odpowiedzi:
Jak już skomentował @don_crissti, wystarczy użyć,
seek=
aby wznowić.GNU dd
obsługuje także wyszukiwanie w bajtach, więc możesz wznowić dokładnie, niezależnie od rozmiaru bloku:Większy rozmiar bloku powinien pomóc w prędkościach, nawet w przypadku wolnego urządzenia, takiego jak
/dev/urandom
.Jeśli szukasz szybszych alternatyw, możesz
cryptsetup plainOpen
użyć losowego klucza i wyzerować go, powinien bić/dev/urandom
o rząd wielkości (bez AES-NI) lub nawet biegać z pełną prędkością (z AES-NI).Możesz także użyć,
shred -n 1
jeśli dane pseudolosowe są wystarczające dla twojego przypadku użycia.shred
powinien być w stanie wykorzystać pełną prędkość dysku, nawet na bardzo wolnej maszynie.źródło
plainOpen
Do tej pory nie wiedziałem . Świetny! Zakończyłem szyfrowanie dysku 2 TB w ciągu około 4 godzin, w przeciwieństwie do 256 GB w ponad 12 przy użyciu/dev/urandom
.Przypomnienie dla osób, które chciałyby skopiować, a nie tylko losowe dyski (co nie jest tak powszechne): możesz użyć,
skip=BLOCKS
aby rozpocząć czytanie we właściwej pozycji iseek=BLOCKS
zacząć pisać we właściwej pozycji. Obie opcje używają bloków, a nie bajtów. Podczas łamania / restartowania zaleca się na wszelki wypadek usunięcie kilku bloków. Zazwyczaj warto podnieśćbs
wartość powyżej 512, ponieważ można osiągnąć lepszą wydajność, jeśli odczytuje się dużo danych z rzędu.W twoim przypadku jest to rzeczywiście wartość blokowa, którą musisz przekazać
seek
. Być może powinieneś postarać się dostosować,bs
aby sprawdzić, czy możesz zwiększyć prędkość, tak jak/dev/random
powinien iść szybko (pseudolosowy i nieblokujący, gdy nie ma dostępnej entropii)źródło
dd
z niewielkim rozmiarem bloku, takim jak 512 bajtów, prawdopodobnie będzie on znacznie wolniejszy niż maksymalna przepustowość dysku. Użyj większej wielkości bloku (na przeczucie powiedziałbym, że kilka MB) dla dobrej wydajności. Lub użyjcat
- w systemie Linux okazałocat
się, że jestem tak szybki, jakdd
przy optymalnym rozmiarze bloku, gdy zaangażowany jest pojedynczy dysk (nie wiem, czy to dotyczy również OSX).Aby dowiedzieć się, jak daleko
cat
doszedł, uruchom,lsof -p1234
gdzie 1234 jest identyfikatoremcat
procesu.Aby wznowić pracę z pozycji, użyj
gdzie 123456 jest przesunięciem w bajtach.
źródło
Klonowanie dysku:
Rozwijając tę odpowiedź z tego wątku, oto jak można sklonować cały dysk i wznowić:
Ten przykład jest zoptymalizowany do kopiowania z napędu obrotowego 5400 rpm na dysk SSD w określonym systemie.
gdd
reprezentujeGNU dd
:Mogę wznowić to na jeden z dwóch sposobów:
Lub:
W pierwszym przykładzie, którego używamy,
59011
a nie59012
, jest59011
to, ile rekordów wielkości bloku zostało w pełni skopiowanych przed przerwaniem. (nagrywa).źródło