Почему я не могу создавать разреженные файлы в разделе NTFS под Linux?

У меня есть очень большой разреженный файл в разделе EXT4, и я хочу скопировать этот файл в раздел NTFS. Размер файла составляет около 2 ТБ, но, поскольку это разреженный файл, он занимает на диске только 700 ГБ.

Раздел NTFS, в который я хочу скопировать этот файл, имеет всего около 1,3 ТБ свободного места. Так что, если я смогу скопировать туда разреженный файл, он вполне поместится; но как неразреженный файл он не подойдет.

Я попытался скопировать файл простымкоманда, но в конце концов она не удалась: «на устройстве не осталось места». Интересно, что это не удалось, хотя около 570 ГБ все еще считались свободными.

Проверив размер файла и его использование на диске, я вижу, что файл в разделе NTFS не разрежен.

Я также попытался создать разреженный файл вручную с помощью любой из этих команд:

  • dd if=/dev/zero of=test1.bin bs=1 count=1 seek=100000
  • truncate -s 100000 test2.bin

В разделе EXT4 оба созданных файла были редкими (показывает, что они используют 0 байт на диске). Но в разделе NTFS каждый файл фактически использует 100 КБ дискового пространства, согласно данныма также согласноls -lsk.

Итак: почему я не могу создавать разреженные файлы в разделе NTFS? И что я могу сделать, чтобы скопировать большой файл как разреженный в раздел NTFS?

Система, в которой это происходит:

  • Debian 11 (Яблочко) x86-64
  • пакет ядра 5.10.92-1
  • пакет ntfs-3g 1:2017.3.23AR.3-4+deb11u1

В соответствии с, раздел NTFS монтируется следующим образом:
/dev/sdg1 on /mnt/loop2 type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

Насколько я понимаю, раздел монтируется с помощью драйвера ntfs-3g - это правильно? И согласноэтот драйвер поддерживает разреженные файлы. Я также не нашел возможности включить или отключить эту функцию.

Я не создавал раздел NTFS самостоятельно, а использовал существующий раздел, который был на диске при его покупке.

1 ответ

Обычно в Windows невозможно скопировать или создать разреженный файл, если его номинальный размер превышает объем доступного свободного места. Кроме того, файлы Windows, возможно, потребуется пометить как разреженные с помощью команды fsutil sparse , иначе они не будут разреженными.

Я предлагаю выполнить копирование изнутри Windows, возможно, используя такую ​​утилиту, как sparse.zip , которую можно найти в конце статьи «Разреженные файлы NTFS для программистов ».

Синтаксис этой команды прост:

      cs.exe from-path to-path

Если это невозможно сделать в Windows, поскольку файл есть только в Linux, попробуйтеtarфайл в Linux, а затем разархивируйте его в целевой системе Windows с помощью подсистемы Windows для Linux (WSL).

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