By
dd if=/dev/zero of=somepartition bs=512
czy wyczyścić partycje po somepartitionlub zatrzymać na końcu somepartition?
By
dd if=/dev/zero of=somepartition bs=512
czy wyczyścić partycje po somepartitionlub zatrzymać na końcu somepartition?
Odpowiedzi:
ddddjest bardzo potężnym, ale także niebezpiecznym narzędziem. Robi to, co mu każesz, bez pytań. Więc jeśli powiesz mu, żeby wyczyściło zdjęcia rodzinne, ... a to pomniejszy błąd w pisaniu.
Ale jeśli sprawdzisz i sprawdzisz dwukrotnie, możesz go użyć.
dd if=/dev/zero of=somepartition bs=512
lub sugerowałbym
dd if=/dev/zero of=/dev/sdxn bs=4096
gdzie xjest literą dysku i nnumerem partycji, a rozmiar bloku 4096 bajtów przyspiesza proces zapisu.
W tym przypadku ważne jest zapisanie na partycji . Jeśli napiszesz na cały dysk (po stronie głowicy), /dev/sdxcały dysk zostanie zastąpiony. Ale zapis do partycji zostanie przerwany na końcu partycji, a partycje za nią zostaną zachowane. (Testowałem teraz na pendrive USB w Lubuntu 16.04 LTS, więc wiem, że tak to działa.)
Istnieje wyjątek dla partycji rozszerzonej (która jest kontenerem dla partycji logicznych, aby mieć więcej niż cztery partycje w tabeli partycji MSDOS). Jest to opisane w poniższym linku,
Czy mogę zrobić obraz partycji „rozszerzonej” za pomocą dd?
Ale jest też inny problem. Przetestowałem twoje polecenie w środowisku testowym i dd odczytałem tylko jeden kibibajt (1024 bajty), kiedy chciałem, aby utworzył obraz partycji rozszerzonej.
Przetestowałem to również teraz na pendrive USB w Lubuntu 16.04 LTS, i dotyczy to pisania (jak również czytania). Tylko pierwszy kibibajt jest nadpisywany.
Podsumowując, nadpisywanie partycji podstawowych i partycji logicznych działa zgodnie z głównym opisem w tej odpowiedzi. Ale nie używaj tej metody do zastępowania rozszerzonej partycji, ponieważ tylko pierwszy kibibajt zostanie zastąpiony. Partycje logiczne partycji rozszerzonej nie będą już znajdować się w tabeli partycji, ale przechowywane w nich dane nadal tam są.
ddi że jest to ryzykowne, abyś był bardzo ostrożny podczas jego używania. Powodzenia :-) Ogólnie powinieneś zawsze mieć kopię zapasową wszystkich plików, których nie możesz utracić.
Zapisuje na partycji urządzenie nie będzie zapisywać poza tą partycją, z dd lub czymkolwiek innym. Aby uzyskać jakikolwiek efekt poza jedną partycją, musisz użyć urządzenia z pełnym dyskiem.
(Uwaga: chyba że twój dysk ma tablicę partycji z nakładającymi się partycjami, co nigdy nie powinno się zdarzyć).
Myślę, że twoje pytanie opiera się na fundamentalnym nieporozumieniu na temat tego, jak dd(a właściwie w ogóle systemy operacyjne uniksopodobne) działają:
ddnie można nadpisać sąsiednich partycji, po prostu dlatego, że ddnie można nadpisać partycji, kropka .
ddpo prostu zapisuje do plików . Otóż to.
Teraz, jeśli masz przekazać ddplik, który reprezentuje wiele partycji, a następnie ddnadpisuje ten plik . Ale w takim przypadku nie ddpisze się poza końcem partycji. ddnadal będzie zapisywać do końca pliku i tylko do końca pliku.
Ale jeśli prześlesz ddplik, który reprezentuje tylko jedną partycję, ddnie zapisuje się poza końcem tej partycji. Ponownie nie ma to nic wspólnego dd. ddpo prostu zapisuje do pliku, do którego chcesz go zapisać. Fakt, że ten plik reprezentuje pojedynczą partycję jest (w tym przypadku) zapewniony przez sterownik urządzenia blokowego w jądrze. ddnie ma z tym nic wspólnego.
W skrócie: ddzapisuje do plików. To, co reprezentują te pliki, nie stanowi ddproblemu. ddnic nie wie o partycjach.
dddo zapisywania na surowych partycjach. Możesz pisać tylko do plików. Ty można oczywiście zapisać do pliku urządzenia blokowego, który stanowi przegrodę (takich jak /dev/sda1), ale nie można napisać do surowego partycji. A ponieważ możesz zapisywać tylko do pliku reprezentującego partycję, nie możesz zapisywać poza końcem partycji, ponieważ plik reprezentuje tylko partycję, a nie partycję i nieco za nią.
/dev/sdaw edytorze tekstu i zmienić dane, ddnie różni się od żadnego innego programu pod względem dostępu do partycji. Bardzo dobra odpowiedź!
Istnieje niebezpieczny, ale rzadki specjalny scenariusz, w którym może się to zdarzyć nawet w przypadku niezablokowanych sterowników urządzeń blokowych:
Musisz być ostrożny z dd, jakbyś popełnił błąd, możesz nadpisać więcej, niż się spodziewałeś, i zależy to od tego, do czego używasz dd (OP był niejasny w jego użyciu dd i dokładnej składni dd Komenda).
Jeśli określisz partycję , będzie ona zapisywać na niej aż do jej zapełnienia.
Jeśli popełnisz błąd i umieścisz cały dysk, na przykład = / dev / sda, dd zapisze na całym dysku, aby zakończyć ignorowanie (i nadpisywanie) tablicy partycji.
Możesz również użyć dd na partycji w celu zastąpienia usuniętych plików (usunięte pliki mogą pozostać na partycji i wykryte przez różne narzędzia odzyskiwania z różnym powodzeniem, dopóki nie zostaną nadpisane. W takim przypadku możesz użyć dd, aby wypełnić wolne miejsce przez zapis do pliku.
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
Jednak w zależności od tego, co robisz, możesz użyć alternatywnego narzędzia do bezpiecznego usuwania plików. Zobacz Jak bezpiecznie usunąć plik (i)? dla opcji.
ddnie jest tak niski. W rzeczywistości większość rzeczy, które ludzie robią, ddmożna zrobić tak samo cat. W rzeczywistości catjest nieco szybszy, ponieważ używa większych bloków niż dddomyślnie. Cały kod niskiego poziomu znajduje się w jądrze. A kierowca tak naprawdę nie dba o to, czy używasz ddlub cat.
dd if=/dev/zero of=/dev/sda bs=512 count=1lub dd if=/dev/zero of=/dev/sda bs=512są przykładami. Drugim poleceniem będzie kontynuował zapisywanie i zapełnił cały dysk „ignorując” tablicę partycji. Jeśli określisz partycję, dd if=/dev/zero of=/dev/sda1nie wyjdzie ona poza partycję. Rodzaj zależy od tego, co chcesz zrobić z dd.
of=somepartition, więc przypadek, w którym piszesz na całe urządzenie dyskowe, nie ma zastosowania. ddnie można obejść ograniczeń sterownika urządzenia.
/dev/sda1Są tworzone przez jądro w taki sposób, że nie można uzyskać dostępu do sąsiedniej pamięci przez nie (zakładając, że tablica partycji nie została zmieniona po ostatnim czytaniu przez jądro). Jeśli w ten sposób uzyskasz dostęp do sąsiedniego magazynu, będzie to uważane za ogromny błąd.