如何仅使用 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 分区中取消设置文件的稀疏标志?的主要内容,如果未能解决你的问题,请参考以下文章