Как снять флажок разреженного файла в разделе NTFS-3g, используя только Linux?

Я хочу снять флажок разреженного файла в разделе ntfs-3g, используя только linux. и как следует(дырочки ноль?).

Что я пробовал: setfattr -h -v 0x00000000 -n system.ntfs_attrib_be /xxx/file

1 ответ

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

filesize=$(stat --format="%s" filename)
ntfsfallocate /dev/sdb1 -l ${filesize} /relative_path_to_mnt_target

Что делать, если в исходном разреженном файле нет дыр? также есть обходной путь.

  1. сначала измените размер (увеличьте) файл, используя усечение, чтобы создать несколько отверстий.
  2. umount, используя ntfsfallocate для усечения до исходного размера. демонстрационная команда:
filesize=$(stat --format="%s" filename)
truncate -s $((filesize + 16 * 1024 * 1024)) /path_to_sparse_file
umount /dev/sdb1
ntfsfallocate /dev/sdb1 -l ${filesize} /relative_path_to_mnt_target

Наконец, вы можете исправить исходный код ntfsfallocate (предоставленный ntfs-3g), чтобы напрямую сбросить флаг разреженности, но я не показываю здесь никакого кода C.

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