Как снять флаг разреженности файла в разделе ntfs-3g, используя только linux? - PullRequest
0 голосов
/ 04 августа 2020

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

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

1 Ответ

0 голосов
/ 05 августа 2020

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

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

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

  1. сначала измените размер (увеличьте) файл, используя усечение, чтобы создать некоторые дыры.
  2. umount, используя ntfsfallocate для усечения до исходного размера. demo command:
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.

...