我正在使用在Linux机器上运行的自定义Bash脚本来大量复制FAT32格式的USB驱动器。
我需要保留Windows文件属性,例如“隐藏”。
我使用rsync
(或dd
与更新版本一起使用find
,mkdir
以强制I / O同步以获得更好的稳定性和最佳带宽使用)。
我盲目尝试-X
并-A
切换为rsync
,据说保留了一些文件属性,但它们似乎不适用于Windows文件属性。
在Linux环境中,有什么方法可以读写Windows文件属性?
如果没有更简单的方法,我可以在复制后应用它们。
我不想dd
使用整个源文件系统,因为这将无法优化,特别是当您需要编写数百个驱动器时。有时,驱动器的容量为16GB,并且其中只有几个GB的文件,而一个哑巴dd
会复制所有16GB的存储空间,这使得它在生产中无法正常工作。
我已经在网上搜索过,但是看起来Linux扩展属性与Windows文件属性无关,并且我还没有找到任何读写信息(或仅将其与文件一起复制)的方法。
“隐藏”是您要保留的唯一对象,还是其他任何一个?
—
M. Becerra
有趣。Linux VFAT驱动程序是否以任何可以写入的方式导出这些属性?
—
ilkkachu
@ M.Becerra-当前,我只需要“隐藏”属性,将来我可能不需要任何其他属性。
—
Unfa
@StephenKitt-我需要能够从源文件系统读取该信息,并将该信息传输到新的重复文件系统。我猜想一个非常粗糙的方法可以解决此问题,即对源文件系统进行零填充(以清理空白空间),创建压缩的dd映像,然后将其写入新驱动器,跳过稀疏部分,以避免写出空白部分。图片。这是一个有点暴力破解,我想它不会有一个相当的性能
—
Unfa
rsync
或手动find
/ mkdir
/ dd
操作我现在使用。
@ilkkachu是的,的确如此,有两个ioctl可用于检索和设置FAT属性。有关
—
Stephen Kitt
fatattr
使用这些工具的工具的一种实现,请参见。