Czytałem wiele przewodników i wpisy na forum opisujące jak korzystać dd
, ale jedno zauważyłem jest to, że ludzie zawsze wykorzystują różne wartości dla bs=
, count=
i seek=
przełączników.
Proszę, ktoś może wyjaśnić, co dokładnie robią te przełączniki (strona podręcznika nie jest bardzo szczegółowa), i wyjaśnić, jakie są najlepsze dla nich ustawienia dla różnych zadań, takich jak tworzenie plików z / dev / random lub / dev / zero i nadpisywanie partycje i dyski zewnętrzne.
Odpowiedzi:
Naprawdę nie wiem, jak to wyjaśnić lepiej niż strona podręcznika.
bs=
ustawia rozmiar bloku, na przykładbs=1M
byłby to rozmiar bloku 1 MB.count=
kopiuje tylko tę liczbę bloków (domyślnie dd kontynuuje pracę w nieskończoność lub do momentu wyczerpania danych wejściowych). Idealnie bloki sąbs=
wielkości, ale mogą być niepełne odczyty, więc jeśli używaszcount=
do skopiowania określonej ilości danych (count*bs
), powinieneś również podaćiflag=fullblock
.seek=
szuka takiej liczby bloków na wyjściu, zamiast pisać na samym początku urządzenia wyjściowego.Na przykład kopiuje wartość 1 MB
y\n
do pozycji 8 MB pliku wyjściowego. Tak więc całkowity rozmiar pliku wyniesie 9 MB.Ponieważ wspominasz
/dev/random
i zastępujesz partycje ... to potrwa wieczność, ponieważ/dev/random
(jak również/dev/urandom
) jest po prostu zbyt wolne. Możesz po prostu użyćshred -v -n 1
zamiast tego, to jest szybkie i zwykle dostępne w dowolnym miejscu.źródło
Ok, powiedziałeś, że strony podręcznika nie są szczegółowe, więc wyjaśnię ich znaczenie łatwymi do zrozumienia metaforami o poruszającym się facecie (tak się nazywa
dd
):dd
podnosi coś (pudła, wazony, łóżka, ryż itp.), przesuwa się tam, gdzie musi być i upuszcza. Dopóki nie zrzuci ładunku, nie zbierze nic innego. Teraz, kiedy musisz powiedzieć mu dokładnie, ile przedmiotów powinien wybrać na podróż, to właśnie tobs
robi. Ustawiasz ilość danych, które będzie czytać i zapisywać. Jest to prawie obowiązkowe we wszystkich przydatnych i powszechnych poleceniach.To określa całkowitą liczbę pól, które on poruszy. Pudełka w tym kontekście to bloki na dysku . Mówisz mu, żeby przesunął 5 pudełek, on porusza tylko 5 pudełkami, nawet jeśli jest ich więcej niż 5 (jeśli jest ich mniej niż 5, weźmie znaleziony wazon obok pudeł, aby je dodać). Jeśli powiesz
dd
docount
tylko 5, a następnie zapisz go gdzieś, mógłby skopiować pierwszych 5 bloków on widzi i zapisać je tam, gdzie chcesz.Facet zwykle znajduje pierwsze dostępne miejsce do zrzucenia ładunku, zwykle na początku (dysku) i kontynuuje napełnianie do końca. Cóż, dzięki temu mówisz,
dd
aby zacząć dalej, powiedzmy zamiast przedpokoju, zacznij w jednym z pokoi w głębi. Po prostu „pomija” bloki startowe.Teraz, w zależności od tego, co robisz, będziesz potrzebować różnych kombinacji w zależności od źródła i miejsca docelowego, a także formatu, w jakim będą odczytywane i zapisywane. Polecam poszukać ich oddzielnie.
źródło