哪些 NTFS 属性可以阻止 Cygwin 列出目录中的文件?

What NTFS attributes could prevent Cygwin from listing a file in a directory?

下面的情况让我百思不得其解。似乎我有一个文件,在所有 Windows 工具中看起来完全正常,但是没有出现在 Cygwin 的任何目录列表中。但是,如果明确命名,它是可访问的。观察:

$ ls -lA
total 0

$ ls -lA magic.pdf
-rwxrwx---+ 1 Konstantin None 1647075 Oct 11  2017 magic.pdf

$ /cygdrive/c/Windows/System32/cmd /C dir
 Volume in drive G is Toshiba Backup
 Volume Serial Number is E692-2E8C

 Directory of G:\test

20/04/2018  11:49    <DIR>          .
20/04/2018  11:49    <DIR>          ..
11/10/2017  19:00         1.647.075 magic.pdf
               1 File(s)      1.647.075 bytes
               2 Dir(s)  483.796.258.816 bytes free

似乎我可以用这个文件做任何我喜欢的事情(复制、移动、压缩和解压缩)——只要我通过 Windows-native 工具来做,生成的文件仍然是 "invisible" 到 Cygwin(例如,在 Windows Explorer 中显示正常)。观察这个,例如:

$ 7z a magic.zip magic.pdf

7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive:
1 file, 1647075 bytes (1609 KiB)

Creating archive: magic.zip

Add new data to archive: 1 file, 1647075 bytes (1609 KiB)


Files read from disk: 1
Archive size: 1499080 bytes (1464 KiB)
Everything is Ok

$ ls
magic.zip

$ mkdir temp
$ cd temp
$ 7z x ../magic.zip

7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive for archives:
1 file, 1499080 bytes (1464 KiB)

Extracting archive: ..\magic.zip
--
Path = ..\magic.zip
Type = zip
Physical Size = 1499080

Everything is Ok

Size:       1647075
Compressed: 1499080

$ ls

$ cmd /C dir
 Volume in drive G is Toshiba Backup
 Volume Serial Number is E692-2E8C

 Directory of G:\test\temp

20/04/2018  11:56    <DIR>          .
20/04/2018  11:56    <DIR>          ..
11/10/2017  19:00         1.647.075 magic.pdf
               1 File(s)      1.647.075 bytes
               2 Dir(s)  483.791.458.304 bytes free

如果我使用 Cygwin 复制文件,则副本对 Cygwin 可见:

$ cp magic.pdf magic2.pdf
$ ls -lA
total 1612
-rwxrwx---+ 1 Konstantin None 1647075 Apr 20 11:50 magic2.pdf

然而这并没有帮助:

$ touch magic.pdf
$ ls -lA
total 1612
-rwxrwx---+ 1 Konstantin None 1647075 Apr 20 11:50 magic2.pdf

我可能会在各种硬盘驱动器上移动文件。只要它们是 NTFS,它就保持不可见。移动到 FAT32 使文件可见,因此它似乎与 NTFS 文件属性有某种关系。

比较 "invisible" 文件及其 cygwin 可见副本的属性,我可以看到前者在其属性对话框中有一个注释:"This file came from another computer and might be blocked to help protect this computer"。 如果我选中 "unblock" 复选框,消息就会消失,但文件仍然对 Cygwin 不可见。

有人可以向我解释发生了什么,我怎么能强制 Cygwin 查看 所有 文件(当您通过 rsync 备份目录然后发现并非所有文件都已传输)。

Cygwin64,最新版本,安装在 Windows 10 Pro 上,以管理员身份启动。

当前的 cygwin dll 2.10.0 在处理具有 Temporary 属性的文件和目录时存在错误。 这是一个模糊的文件属性,在 ATTRIB 命令中不可见 也不在资源管理器文件属性上。 这些文件通常由第三方程序而不是 cygwin 程序生成。

该错误在开发源上是正确的
https://sourceware.org/ml/cygwin/2018-03/msg00141.html
并且最新的快照正确处理了它们,并且具有此类属性的文件对 cygwin 程序可见。

据 KT 报道

PowerShell snippet "un-hides" the file: (Get-Item m.pdf).attributes = 0, while the following - hides it: (Get-Item m.pdf).attributes = 0x100. Strangely, there do not seem to be any other built-in (GUI or CLI) means of viewing or changing the "temporary" attribute.

力量shell可以修改Temporary属性