Б
dd if=/dev/zero of=somepartition bs=512
також протирати розділи після somepartition
або зупинити в кінці somepartition
?
Б
dd if=/dev/zero of=somepartition bs=512
також протирати розділи після somepartition
або зупинити в кінці somepartition
?
Відповіді:
dd
dd
є дуже потужним, але й небезпечним інструментом. Це робить те, що ви скажете, без проблем. Тож якщо ви скажете йому витерти сімейні фотографії, ... і це незначна помилка введення тексту.
Але якщо ви перевірите і подвійно перевірте, ви можете скористатися цим.
dd if=/dev/zero of=somepartition bs=512
або я б запропонував
dd if=/dev/zero of=/dev/sdxn bs=4096
де x
є літера диска та n
номер розділу та розмір блоку 4096 байт, що робить процес запису більш швидким.
Важливо, щоб у цьому випадку ви писали на розділ . Якщо ви запишете на весь диск (кінець головки диска), /dev/sdx
весь диск буде перезаписаний. Але запис у розділ буде перервано в кінці розділу, і розділи, що стоять за ним, будуть збережені. (Я протестував зараз на USB-матриці в Lubuntu 16.04 LTS, тому знаю, що він працює так.)
Існує виняток для розширеного розділу (який є контейнером для логічних розділів, щоб мати більше чотирьох розділів у таблиці розділів MSDOS). Це описано в наступному посиланні,
Чи можу я зробити зображення "розширеного" розділу за допомогою dd?
Але є й інша проблема. Я перевірив вашу команду в тестовому середовищі, і dd прочитав лише один кібібайт (1024 байти), коли хотів, щоб він створив зображення розширеного розділу.
Я перевірив це також зараз на USB-матриці в Lubuntu 16.04 LTS, і це стосується написання (а також читання). Перезаписується лише перший кібібайт.
Отже, підсумовуючи, перезапис первинних розділів та логічних розділів працює відповідно до основного опису цієї відповіді. Але не використовуйте цей метод для перезапису розширеного розділу, оскільки буде замінено лише перший кібібайт. Логічні розділи розширеного розділу більше не будуть знаходитись через таблицю розділів, але дані, що зберігаються в них, все ще є.
dd
і що це ризиковано, так що ви дуже обережні при його використанні. Удачі :-) Загалом, у вас завжди має бути резервна копія всіх файлів, яку ви не можете дозволити собі втратити.
Записи на пристрій розділів не записуватимуть за межами цього розділу, з dd або чим-небудь іншим. Для будь-якого ефекту поза одним розділом вам потрібно буде використовувати пристрій з великим доступом.
(Caveat: якщо на вашому диску немає таблиці розділів із перекриттями розділів, що ніколи не повинно відбуватися.)
Я думаю, що ваше запитання базується на принциповому непорозумінні щодо того, як dd
(і насправді Unix-подібні операційні системи взагалі працюють):
dd
не може перезаписати сусідні розділи, просто тому, що dd
не можна перезаписати розділи, періодично .
dd
просто записує у файли . Це воно.
Тепер, якщо ви передати dd
файл , який представляє кілька розділів, то dd
буде перезаписувати цей файл . Але в цьому випадку це не dd
написання минулого кінця розділу. dd
записуватиметься до кінця файлу і лише до кінця файлу.
Але, якщо ви передасте dd
файл, який представляє лише один розділ, він dd
не запише минулого кінця цього розділу. Знову ж таки, це не має нічого спільного dd
. dd
просто записує у файл, до якого ви скажете його написати. Те, що цей файл являє собою єдиний розділ, (у цьому випадку) забезпечується драйвером блокового пристрою в ядрі. dd
не має нічого спільного з цим.
Отже, коротше: dd
записує у файли. Те, що представляють ці файли, не викликає жодних dd
проблем. dd
нічого не знає про перегородки.
dd
для запису в необроблені розділи. Можна писати лише у файли. Звичайно, ви можете записати у файл блокового пристрою, який представляє розділ (наприклад /dev/sda1
), але ви не можете записати на необроблений розділ. А оскільки ви можете записувати лише у файл, який представляє розділ, ви не можете записати минулий кінець розділу, оскільки файл представляє лише розділ, а не розділ і трохи минулий кінець.
/dev/sda
у своєму текстовому редакторі та змінити дані, що dd
не відрізняється від будь-якої іншої програми з точки зору можливості доступу до розділів. Дуже гарна відповідь!
Існує небезпечний, але рідкісний спеціальний сценарій, за якого це може статися навіть із драйверами блокових пристроїв, що не мають помилок:
Ви повинні бути обережними з dd, як якщо ви помилитесь, ви можете перезаписати більше, ніж ви торгувались, і це залежить від того, для чого ви використовуєте dd (ОП було розпливчастим у його використанні dd та точному синтаксисі dd команда).
Якщо ви вкажете розділ, він запише до цього розділу, поки розділ не буде заповнений.
Якщо ви помилитесь і помістите весь диск, наприклад = / dev / sda, dd запише весь диск, щоб почати ігнорувати (і перезаписувати) вашу таблицю розділів.
Ви також можете використовувати нас на розділі, щоб перезаписати видалені файли (видалені файли можуть залишатися на розділі та виявлені різними інструментами відновлення з різним ступенем успіху, поки вони не будуть записані. У цьому випадку ви можете використовувати dd для заповнення вільного простору шляхом запис у файл.
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
Однак, залежно від того, чим займаєтесь, ви можете скористатися альтернативним інструментом для безпечного видалення файлів. Див. Розділ Як безпечно видалити файли? для варіантів.
dd
- це не такий низький рівень. Насправді більшість речей, якими користуються люди, dd
можна було б зробити те саме cat
. Насправді cat
це трохи швидше, оскільки він використовує більші блоки, ніж dd
за замовчуванням. Весь код низького рівня знаходиться в ядрі. І водію не дуже важливо, чи ви користуєтесь, dd
або cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
або dd if=/dev/zero of=/dev/sda bs=512
є прикладами. З другою командою він буде продовжувати писати і заповнює весь диск, "ігноруючи" таблицю розділів. Якщо вказати розділ, dd if=/dev/zero of=/dev/sda1
він не вийде за межі розділу. Сортування залежить від того, що ви хочете зробити з dd.
of=somepartition
, тому випадок, коли ви пишете на весь дисковий пристрій, не застосовується. dd
не може обійти обмеження драйвера пристрою.
/dev/sda1
, створені ядром таким чином, що неможливо отримати доступ до суміжного сховища через них (якщо припустити, що таблиця розділів не була змінена після того, як ядро прочитало її в останній раз). Якщо ви могли отримати доступ до суміжного сховища таким чином, це вважатиметься величезною помилкою.