См. команду 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
отличается от того, что написано в руководстве. Как я должен усвоить это поведение?
В корневой папке/каталоге Можно ли создать новые папки, которые могут иметь файлы, такие как видео, документы, программные пакеты и т.д.
Будет ли это иметь какие-либо побочные эффекты, если мы создадим дополнительные папки?
В дисководе Windows C у меня было такое управление файлами.
Системные администраторы могут создавать и использовать дополнительные каталоги в корневом каталоге /
по различным причинам... например, совместное использование файлов, 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 {}
считывает входные данные по одной строке за раз и присваивает их {}
.
Вы только что создали разреженный файл такого размера.
https ://en.wikipedia.org/wiki/Sparse_file
That означает, что приложение может считывать много нулей из этого файла, но не занимает много места на диске, пока приложение не запишет в него данные.
В этом контексте параметр seek
означает «пропустить n блоков, затем начать запись», оставив «отверстие» в начале файла, т.е. нет места на диске (еще), выделенного для этой части файла.
Использование /dev/zero
в качестве входного файла имеет тот же эффект. (Хотя я признаю, что не ожидал этого; Я бы ожидал, что файл будет заполнен фактическими нулями, занимающими фактическое место на диске).