как я должен понимать "искать" и "считать" команды dd?

См. команду dd и вывод ниже.

dd if=/dev/null of=./VirtualDisk.img bs=1M count=1024  
0+0 records in   
0+0 records out   
0 bytes copied, 0.000281296 s, 0.0 kB/s   

Я ожидал, что в выходной файл будет записано 1024 блока размером 1 МБ. Но почему размер выходного файла VirtualDisk.img 0?

Также смотрите другой пример.

dd if=/dev/null of=./VirtualDisk.img bs=1M seek=1024
0+0 records in
0+0 records out
0 bytes copied, 0.000254032 s, 0.0 kB/s

Согласно руководству, должно быть пропущено 1024 блока размером 1МБ с самого начала выходного файла. Но размер сгенерированного выходного файла VirtualDisk.img составляет 1073741824 (1МБ * 1024). Видно, что пропущенная область заполнена нулем.

Это руководство по dd : https://man7.org/linux/man-pages/man1/dd.1.html
Для меня поведение для count и seek отличается от того, что написано в руководстве. Как я должен усвоить это поведение?

1
задан 17 April 2021 в 11:17

1 ответ

Краткий ответ

В корневой папке/каталоге Можно ли создать новые папки, которые могут иметь файлы, такие как видео, документы, программные пакеты и т.д.

  • Да, если у вас есть привилегия.

Будет ли это иметь какие-либо побочные эффекты, если мы создадим дополнительные папки?

  • Нет, это просто другой каталог.

В дисководе Windows C у меня было такое управление файлами.

  • Такое поведение не рекомендуется даже в Windows при использовании в многопользовательской среде.

WWH (что, почему и как) отвечает

Системные администраторы могут создавать и использовать дополнительные каталоги в корневом каталоге / по различным причинам... например, совместное использование файлов, FTP, карантин... и т.д.

Некоторые производители устройств, например, маршрутизаторы, системы камер, устройства IOT... и т.д. могли бы сделать это также.

Однако рекомендуется использовать структуру каталогов Ubuntu/Linux/Unix. Эта структура существует в течение длительного времени в той мере, в какой она учитывается при создании, установке и запуске приложений, системных служб, сценариев, обслуживания, резервного копирования и даже устранения неполадок... Некоторые переменные среды, такие как $ HOME , являются реализацией этой концепции.

Да, это просто концепция ... но эта концепция (структура) была широко принята и принята как само собой разумеющееся в качестве стандартной структуры каталогов для систем * nix.

-121--913689-

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

Сначала , получите список каталогов с деревом .

Затем передайте их в xargs like so:

tree --noreport -dfi | xargs -L 1 -I {} echo touch {}/emptyfile_"$(date +%s)"

или , в while loop like so:

tree --noreport -dfi | \
while read -r d; do echo touch "$d"/emptyfile_"$(date +%s)"; done

или , даже в for loop (если имена каталогов не содержат мест) loop so:

for d in $(tree --noreport -dfi); do echo touch "$d"/emptyfile_"$(date +%s)"; done
  • echo есть ли предотвратить непреднамеренное создание файлов во время тестирования. После завершения вывода удалите эхо для создания файлов.

  • --noreport пропускает печать отчета файла и каталога в конце списка дерева.

  • -dfi перечисляет только каталоги, печатает полный префикс пути для каждого каталога и делает дерево не печатающим строки отступа.

  • Используйте -dfia вместо -dfi для включения скрытых каталогов .

  • «$ (дата +% s)» добавляет текущую отметку времени к имени файла, например emptyfile _ 1618679443 , делая его уникальным из существующих файлов в каждом каталоге. Обратите внимание, что это можно изменить на случайное число, например, 67639871206723 , если требуется фиксированное имя файла.

  • xargs -L 1 -I {} считывает входные данные по одной строке за раз и присваивает их {} .

-121--913657-

Вы только что создали разреженный файл такого размера.

https ://en.wikipedia.org/wiki/Sparse_file

That означает, что приложение может считывать много нулей из этого файла, но не занимает много места на диске, пока приложение не запишет в него данные.

В этом контексте параметр seek означает «пропустить n блоков, затем начать запись», оставив «отверстие» в начале файла, т.е. нет места на диске (еще), выделенного для этой части файла.

Использование /dev/zero в качестве входного файла имеет тот же эффект. (Хотя я признаю, что не ожидал этого; Я бы ожидал, что файл будет заполнен фактическими нулями, занимающими фактическое место на диске).

1
ответ дан 23 April 2021 в 23:21

Другие вопросы по тегам:

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