复现
事情是这样的,今天想装个hadoop,因为wsl里下载太慢了干脆在Windows用FDM下载后复制到C:\Users\xxxx\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_xxxxxx\LocalState\rootfs\opt\
下(也就是wsl中的/opt
)
于是神奇的事情就发生了,在wsl下输入ls /opt
居然是空的,刚放进去的hadoop并没有显示,然后新建了一个文件夹<b id="test123">test123</b>来确保是同一个目录。
接下来在Windows中手动删除test123文件夹,在wsl中test123文件夹还存在,然而Windows中已经无法访问了。
原因
引用Do not change Linux files using Windows apps and tools中的一段话
File metadata (e.g. permissions, ownership, timestamps, etc.) is stored for every file, folder, etc., on your storage devices. Alas, file metadata representation differs from one OS to another: Windows file metadata is different from Linux file metadata.
解决办法
不要在Windows中复制文件到wsl
Do not change Linux files using Windows apps and tools中推荐不要用Windows去修改wsl中的文件
如果要在wsl中操作Windows的文件
使用cp /mnt/e/test.png /home/test.png
,利用wsl中的mnt访问Windows磁盘的内容就不会发生上述问题。
在Windows中复制文件到wsl后重启bash即可。(没有尝试,似乎没有效果?
(所以我选择在wsl中用多线程工具下载
其他
遇到这个问题的时候突然弹出下面的窗口(这个文件夹 t 类似于复现中的test123),然而我并没有执行删除操作,似乎是Windows自己想删除这个文件夹?