может ли Linux dd скопировать один файл из раздела, отформатированного в ext4, в раздел NTFS?

309
TimDaniels

1) Я хотел бы скопировать один файл из раздела ext4, отформатированного в Ubuntu 18.04, в раздел Windows 10, отформатированный в NTFS, без промежуточного раздела FAT32. Может ли команда "dd" в Ubuntu сделать это? Какие команды "mount" могут понадобиться для этого?

2) Если источником является блок байтов, а не файл, может ли "dd" перевести эти байты в формат файла в разделе, отформатированном в NTFS? (Я пытаюсь настроить файл "\ linux.bin" с помощью BCDedit в Windows для двойной загрузки в Ubuntu, как показано в: bcdedit / set путь C: \ linux.bin, где dd's if = является сектор 512 байт.)

TimDaniels

0

1 ответ на вопрос

3
grawity

1) Я хотел бы скопировать один файл из раздела ext4, отформатированного в Ubuntu 18.04, в раздел Windows 10, отформатированный в NTFS, без промежуточного раздела FAT32. Может ли команда "dd" в Ubuntu сделать это? Какие команды "mount" могут понадобиться для этого?

ДД не заботится о разделах или файловых системах. Его ввод и вывод - это обычные файлы, и единственное, что он делает, - это копирует данные побайтно (или чанк за чанк) со своего ввода на свой выход.

В вашей ситуации dd не более полезен, чем обычный cp или даже cat . После того, как вы смонтировали исходный раздел ext4 и целевой раздел NTFS в Linux, вы можете просто ... скопировать файлы, используя cp или другие обычные инструменты, или даже используя графический файловый менеджер.

Чтобы смонтировать файловую систему NTFS с функциями чтения / записи, установите ntfs-3g. Никаких специальных опций со стороны Linux (как правило) не требуется, но если это внутренний диск, вам нужно убедиться, что Windows полностью размонтировала его во время выключения, то есть не перешла в «спящий», «гибридный» или «гибридный» режим быстрого запуска.

(Например, вы можете использовать shutdown /s /t 0из Windows, чтобы начать полное отключение.)

2) Если источником является блок байтов, а не файл, может ли "dd" перевести эти байты в формат файла в разделе, отформатированном в NTFS? (Я пытаюсь настроить файл "\ linux.bin" с помощью BCDedit в Windows для двойной загрузки в Ubuntu, как показано в: bcdedit / set путь C: \ linux.bin, где dd's if = является сектор 512 байт.)

Тот же ответ, что и раньше. дд не понимает файловые системы; он просто копирует файлы. Таким образом, если выходной файл должен быть файлом в NTFS, вы должны смонтировать файловую систему NTFS в самой Linux, и тогда dd просто запишет в файл, который вы ему предоставили.

Так что просто смонтируйте раздел NTFS, как вы это делали в части 1 выше, и используйте dd if=/dev/xxx of=/mnt/windows/linux.bin bs=... count=...для копирования загрузочного кода.

Размер сектора не имеет отношения к окончательным данным. Он только сообщает dd, насколько большой блок должен быть прочитан за один раз - например, чтение одного 512-байтового блока намного быстрее, чем чтение 512 однобайтовых блоков, но полученные данные будут идентичны в любом случае.

(То есть dd if=A of=B bs=1 count=512и dd if=A of=B bs=512 count=1будем создавать одинаковые файлы, просто делая это на разных скоростях.

На самом деле, head -c 512 A > Bсоздаст идентичный файл для обоих.)

Upvoted, хотя одна проблема: при указании `count` вы * не можете * получить идентичные файлы. Вы будете удивлены, если `dd` читает частичный блок ввода. Это все равно будет считаться успешным чтением, но даст меньше данных, чем ibs. По сути, когда вы достигнете `count`, вы не достигнете нужного вам количества данных. Я никогда не видел этого при чтении из локальной файловой системы, но в целом (каналы, именованные каналы, сетевые подключения ?, FUSE?) Вам нужно `iflag = fullblock`. Подтверждение концепции: ` Kamil Maciorowski 5 лет назад 1
Очевидно, что dd не нужен источник, чтобы быть именованным файлом, но он также может взять только блок шестнадцатеричного кода из физического местоположения, идентифицируемого только его сектором no. и запишите его в файл формата, который соответствует файловой системе назначения, добавив метаданные и структуру записи в процессе. Правда? Ложь? TimDaniels 5 лет назад 0
Включен ли ntfs-3g в состав Ubuntu 18.04 или его необходимо загрузить из онлайн-хранилища? После установки ntfs-3g и выполнения надлежащих команд «mount» dd может скопировать MBR, известную только по его расположению в начале диска, или загрузочную запись раздела, известную только по его расположению в начале раздела непосредственно к файлу в разделе NTFS (например, Windows) без использования промежуточного общего раздела FAT32? TimDaniels 5 лет назад 0
@TimDaniels: он является частью основных репозиториев, хотя я не уверен, является ли он частью "базовой" установки. Есть ли какая-то другая причина, помимо поддержки ntfs-3g, что вы спрашиваете, нужен ли промежуточный раздел? grawity 5 лет назад 0
@TimDaniels: источником в `dd if =…`, а также местом назначения всегда является именованный файл. Это может быть виртуальный файл «устройства», предоставляемый ядром, но, насколько известно dd, это все же просто файл. дд никогда не добавляет метаданные. дд никогда не добавляет никакой структуры записи. ** dd не понимает файловые системы. ** Единственный способ заставить dd создать файл в NTFS - это монтировать файловую систему NTFS глобально. grawity 5 лет назад 1
@grawity: я пытаюсь запустить менеджер загрузки Grub2 в Linux из BCD Windows 10, предоставив копию MBR устройства SSD в BCD Windows в виде пути к файлу NTFS, содержащему эту копию MBR. Обычно один использует dd, чтобы скопировать MBR в общий раздел с Linux, затем скопировать полученный файл в раздел Windows с Windows и указать путь к этому файлу в BCD Windows, чтобы менеджер загрузки Windows мог использовать его для загрузки Linux. Я хотел бы, чтобы не нужен промежуточный файл и дд непосредственно в файловую систему Windows NTFS. TimDaniels 5 лет назад 0

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