问题
我在 WSL 上使用此命令移动了包含大量文件的文件夹:
mv --verbose /mnt/c/Users/FreePhoenix/Documents/Programming/object-to-links-async-converter.zip ./
附加信息
我过去常常--verbose
看看是否真的发生了什么,结果确实如此!但我已经等了 10 分钟,还没看到完成 - 它仍然在移动,没有它,--verbose
我得到了相同的结果
问题
还有其他更快捷的方法将该文件夹移动到 WSL 吗?
环境
请注意,我的 WSL 版本是 2:
PS C:\Users\FreePhoenix> wsl --list --verbose
NAME STATE VERSION
* Ubuntu Running 2
答案1
更多信息请参阅帖子 与原生 Windows NPM/Yarn 处理相比,为什么 WSL 非常慢?
帖子中的信息表明这是 WSL2 的问题,与 WSL1 相比,这是一种倒退。我推测这是因为 WSL1 直接在 Windows 下执行,而 WSL2 在 Hyper-V 下执行。
已经在微软 比较 WSL 1 和 WSL 2 这 '跨操作系统文件系统的性能微软明确承认 WSL2 中的情况更糟通过设计:
请注意,这不是一个新问题。它已经在错误报告中指出 [wsl2] /mnt 中的文件系统性能比 wsl1 慢得多 #4197,日期为 2019 年。
由于微软五年来一直未解决这个问题,因此它被纠正的机会不大。
发帖者通过将文件夹打包到档案中并将档案作为一个文件进行传输,然后在 WSL2 中解压,最大限度地减少了他在 WSL2 中与 WSL 和 Windows 文件系统的交互。
答案2
1. 存档您的文件夹(选择一个选项)
选项 A:使用 GUI
选项 B:使用 PowerShell
Compress-Archive -Path C:\SOURCE\PATH\TO\YOUR\FILES -Update -DestinationPath C:\DESTINATION\PATH\ZIPPEDFILE.zip
确保用源位置和目标位置替换路径。
2.将存档移至 WSL
- 进入 WSL:输入
wsl
命令提示符以进入您的 WSL 环境。 - 移动档案:使用此命令将档案从 Windows 目录移动到 WSL 中的某个位置:
mv /mnt/c/PATH/OF/SOURCE/ARCHIVE ~/PATH/TO/DESTINATION/ARCHIVE
用相关位置替换路径。
笔记:在 WSL 中,您的 C: 驱动器通常安装在/mnt/c
。
3. 在 WSL 中解压存档
请注意,此步骤使用的apt
是 Debian 包管理器,如果你在 WSL 上使用非 Debian 操作系统,则应使用你的包管理器
3.1 安装 Unzip(如果尚未安装)
运行以下命令:
sudo apt update
sudo apt install unzip
3.2 解压档案
使用:
unzip ~/PATH/TO/DESTINATION/ARCHIVE
或者,到特定目录:
unzip ~/PATH/TO/DESTINATION/ARCHIVE -d /path/to/extract/folder
笔记:为了防止覆盖,请添加-n
选项:
unzip -n ~/PATH/TO/DESTINATION/ARCHIVE -d /path/to/extract/folder