Возобновление DD всего диска

Вы, вероятно, подразумеваете, что хотите отколоть жесткую ссылку на отдельный, независимый файл.

mv hardlink tempname && cp tempname hardlink && rm tempname

hardlink является соединением между записью в каталоге и inode блоком на диске.

метаданные файла хранилища inodes, и для маленьких файлов, некоторые файловые системы хранят данные в inode, иначе указатели на блоки данных, и для очень больших файлов косвенные и двойные косвенные списки указателей на дисковые единицы выделения.

Независимо, соединение между именем файла (Который является тем, что производит команда ls) и inode блок, который хранит эти метаданные, называют жесткой ссылкой.

Наличие нескольких жестких ссылок на единственный файл означает тот же inode, на который ссылается больше чем одна запись каталога, возможно в различных каталогах (в единственной файловой системе)

комната удаляет запись имени файла из каталога. После того как на inode больше не ссылаются никакие файлы, его пространство освобождено для использования другими файлами.

10
21.01.2015, 20:58
4 ответа

Поскольку @don_crissti уже прокомментировал, просто используйте seek=, чтобы возобновить.

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512 seek=464938971

GNU dd также поддерживает поиск в байтах, так что вы можете возобновить точно, независимо от размера блока:

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=1M \
   seek=238048755782 oflag=seek_bytes

Больший размер блока должен помочь со скоростями даже для медленных устройств, таких как /dev/urandom.

Если Вы ищете более быстрые альтернативы, то Вы можете cryptsetup plainOpen со случайным ключом и нулем, который должен бить /dev/urandom на порядок величины (без AES-NI) или даже работать на полной скорости (с AES-NI).

Вы также можете использовать shred -n 1, если псевдослучайные данные достаточно хороши для вашего случая использования. shred должен быть способен использовать полную скорость диска, даже на очень медленной машине.

8
27.01.2020, 20:02

Просто напоминание о людях, которые хотели бы скопировать, а не просто рандомизирование дисков (что не , что Common Commonse): вы можете использовать Skip = Blacks Для начала чтение на правильном положении, и resting = Blocks для начала Написание в правильном положении. Оба варианта используют блоки, а не байты. При разрыве / перезапуске целесообразно удалить кучу блоков на всякий случай. Обычно стоит поднять значение BS выше 512, так как вы можете достичь лучшей производительности, если вы прочитаете много данных подряд.

В вашем случае это действительно блочное значение, которое вам нужно пройти к ищете . Может быть, вы должны попробовать настроить BS , чтобы увидеть, сможете ли вы улучшить скорость, поскольку / dev / Random должен идти быстро (псевдослучайные и неблокирующиеся, когда она не имеет доступной энтропии)

3
27.01.2020, 20:02

DD с крошечным размером блока, такого как 512 байтов, вероятно, будет намного медленнее, чем максимальная пропускная способность вашего диска. Используйте более высокий размер блока (на дому я бы сказал несколько МБ) для хорошей производительности. Или использовать CAT - на Linux Я нашел CAT , чтобы быть так же быстрее, как DD с оптимальным размером блока , когда был вовлечен один диск (Я не знаю, имеет ли это только для OSX).

Чтобы найти, как далеко достиг CAT , запустите LSOF -P1234 , где 1234 - это процесс процесса CAT .

Чтобы возобновить из позиции, используйте

{ dd bs=1 seek=123456; cat /dev/urandom; } >/dev/disk/…

, где 123456 - это смещение в байтах.

0
27.01.2020, 20:02

Клонирование диска:

Расширяя этот ответ из этой темы, вот как можно клонировать весь диск и возобновлять:

Этот пример оптимизирован для копирования с дисковода со скоростью вращения 5400 об/мин на твердотельный накопитель в определенной системе. gddпредставляетGNU dd:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' bs=4M status=progress
247426187264 bytes (247 GB, 230 GiB) copied, 2082 s, 119 MB/s
59012+0 records in
59011+0 records out
247510073344 bytes (248 GB, 231 GiB) copied, 2082.92 s, 119 MB/s

Я могу продолжить это одним из двух способов:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=59011 skip=59011 \
status=progress

Или:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=247510073344 skip=247510073344 \
oflag=seek_bytes iflag=skip_bytes \
status=progress

В первом примере причина, по которой мы используем 59011, а не 59012, заключается в том, что 59011— это количество записей размером в блок, которые были полностью скопированы до того, как были прерваны. (записывает ).

1
27.01.2020, 20:02

Теги

Похожие вопросы