Я перезаписываю свой жесткий диск случайными данными, используя старые добрые данные dd
:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Это массив размером 2 ТБ, и мой MacBook (под управлением Linux, хорошо?) Может записывать данные только со скоростью 3,7 МБ / с, что довольно жалко, так как я видел, как мой рабочий стол дома работает со скоростью 20 МБ / с. Когда я пойду домой сегодня вечером, я бы хотел остановить dd
здесь пробежку, взять ее домой и посмотреть, какой прогресс может быть достигнут за одну ночь с более мощной машиной.
Я отслеживал прогресс, используя простой цикл:
while true; do kill -USR1 $PID ; sleep 10 ; done
Вывод выглядит так:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Если бы я возобновил dd
пропуск дома, как бы я его перезапустил? Я знаю о seek
параметре, но на что я могу указать, номер записи или количество байтов?
seek=464938960
Ответы:
Как уже писал @don_crissti, просто используйте
seek=
для возобновления.GNU dd
также поддерживает поиск в байтах, так что вы можете возобновить точно, независимо от размера блока:Больший размер блока должен помочь со скоростью даже для медленного устройства, как
/dev/urandom
.Если вы ищете более быстрые альтернативы, вы могли бы
cryptsetup plainOpen
с помощью случайного ключа и обнулить его, он должен биться/dev/urandom
на порядок (без AES-NI) или даже работать на полной скорости (с AES-NI).Вы также можете использовать,
shred -n 1
если псевдослучайные данные достаточно хороши для вашего случая использования.shred
должна быть в состоянии использовать полную скорость диска, даже на очень медленной машине.источник
plainOpen
до сих пор. Большой! Закончил шифрование диска объемом 2 ТБ примерно за 4 часа вместо 256 ГБ при использовании более 12/dev/urandom
.Просто напоминание для людей , которые хотели бы скопировать , а не только рандомизации дисков (который не является , что объединяет): вы можете использовать ,
skip=BLOCKS
чтобы начать чтение в правильном положении, иseek=BLOCKS
начать писать в правильном положении. Оба варианта используют блоки, а не байты. При взломе / перезапуске желательно на всякий случай удалить кучу блоков. Обычно стоит увеличитьbs
значение выше 512, так как вы можете достичь лучшей производительности, если будете читать много данных подряд.В вашем случае это действительно значение блока, которое вам нужно передать
seek
. Возможно, вам следует попытаться откорректировать,bs
чтобы увидеть, можете ли вы повысить скорость, так же как и/dev/random
быстро (псевдослучайный и неблокирующий, когда энтропия недоступна)источник
dd
с крошечным размером блока, например, 512 байт, вероятно, будет намного медленнее, чем максимальная пропускная способность вашего диска. Используйте более высокий размер блока (на догадку, я бы сказал, несколько МБ) для хорошей производительности. Или используйтеcat
- в Linux я обнаружил,cat
что он работает так же быстро, как иdd
с оптимальным размером блока, когда задействован один диск (я не знаю, подходит ли это и для OSX).Чтобы узнать, как далеко
cat
он продвинулся , запуститеlsof -p1234
где 1234 - идентификаторcat
процесса.Чтобы возобновить с позиции, используйте
где 123456 - смещение в байтах.
источник
Клонирование диска:
В продолжение этого ответа из этой цепочки можно выполнить клонирование всего диска и возобновить его:
Этот пример оптимизирован для копирования с вращающегося диска со скоростью 5400 об / мин на твердотельный накопитель в конкретной системе.
gdd
представляетGNU dd
:Я могу возобновить это одним из двух способов:
Или:
В первом примере причина, по которой мы используем
59011
и нет59012
, заключается59011
в том, сколько записей размера блока было полностью скопировано перед прерыванием. (записывает).источник