在Linux下复制文件时如何保留Windows文件属性?

在Linux下复制文件时如何保留Windows文件属性?

我正在使用在 Linux 计算机上运行的自定义 Bash 脚本来批量复制 FAT32 格式的 USB 驱动器。

我需要保留 Windows 文件属性,例如“隐藏”。

我使用rsync(或在较新版本中使用和dd强制I/O 同步以获得更好的稳定性和最佳带宽使用)。findmkdir

我盲目地尝试-X-A切换为rsync,据说可以保留一些文件属性,但它们似乎不适用于 Windows 文件属性。

有没有办法在Linux环境下读写Windows文件属性?

如果没有更简单的方法,我可以在复制后应用它们。

我不想要dd整个源文件系统,因为这将严重未优化,特别是当您需要写入数百个驱动器时。有时,驱动器的容量为 16GB,但其上只有几 GB 的文件 - 傻瓜dd会复制所有 16GB,这需要很长时间才能在生产中发挥作用。

我在网上搜索过,但看起来Linux扩展属性与Windows文件属性无关,而且我还没有找到任何方法来读取和写入这些信息(或者只是将其与文件一起复制)。

答案1

我可以想出几种方法来处理这个问题。

第一个是使用工具复制文件。为此,您需要定义“驱动器”(比如 A:对于源驱动器,B:对于目标驱动器),那么您应该能够复制所有内容,保留属性和时间戳,使用

mcopy -s -p -m a: b:

(未经测试)。

fatattr第二种是使用(在大多数发行版中可用)对属性进行后处理。它处理已安装的文件系统,因此您可以按照当前的方式复制文件系统,然后用于fatattr列出所有源文件的所有 FAT 属性,并解析它以指示fatattr在目标文件上适当设置属性。

相关内容