如何仅使用 linux 在 ntfs-3g 分区中取消设置文件的稀疏标志?

Posted

技术标签:

【中文标题】如何仅使用 linux 在 ntfs-3g 分区中取消设置文件的稀疏标志?【英文标题】:How to unset sparse flag of a file in ntfs-3g partition, using only linux? 【发布时间】:2020-08-04 06:07:59 【问题描述】:

我想在 ntfs-3g 分区中取消设置文件的稀疏标志,使用 only linux。 并且正确地(零填充孔?)。

我尝试过的: setfattr -h -v 0x00000000 -n system.ntfs_attrib_be /xxx/file

【问题讨论】:

请注意 Stack Overflow 是针对编程问题而不是一般计算问题。请查看What topics can I ask here? 了解更多详情。问题可能适用于Super User 或Unix & Linux,但请在发布前查看他们的帮助。 c/c++代码也可以 【参考方案1】:

我找到了解决方法。如果原始 spase 文件中存在漏洞,使用以下命令可能会清除稀疏标志。

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

如果原始稀疏文件中没有漏洞怎么办?还有一个变通办法。

    首先使用 truncate 调整文件大小(放大)以创建一些孔。 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提供)打补丁,直接清除sparse标志,但我这里不显示任何c代码。

【讨论】:

以上是关于如何仅使用 linux 在 ntfs-3g 分区中取消设置文件的稀疏标志?的主要内容,如果未能解决你的问题,请参考以下文章

Linux中怎样格式化硬盘

centos挂载ntfs分区的方法都有哪些

deepin下如何挂载NTFS

Centos如何访问本地硬盘的NTFS分区

linux 如何挂载移动硬盘

Linux下挂载NTFS分区