我正在寻找一种在导出 WSL2 发行版时压缩它的方法,并尝试通过管道传递由 to 生成的 tar 文件wsl,7z但大约一个小时后,它只产生 CPU 负载,并且该7z过程甚至没有根据到任务管理器:
wsl --export myDistro - | 7z a -tgzip myDistro.tar.gz -si
Run Code Online (Sandbox Code Playgroud)
7z并且sample.tar.gz创建时没有任何问题:
Get-Content -Path sample.tar -Raw | 7z a -tgzip sample.tar.gz -si
Run Code Online (Sandbox Code Playgroud)
wsl --export myDistro .\myDistro.tar
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何将导出的 WSL2 发行版压缩为 gzip 存档而不将 tar 文件存储在磁盘上,以及如何通过管道导入它wsl --import?
正如 @DanielB 注意到的,PowerShell 不会按原样通过管道传输数据(请参阅此处和此处),但是命名管道呢?
wsl无法处理命名管道:
$ New-Object System.IO.Pipes.NamedPipeServerStream("\\.\pipe\wsl-exp-imp"); wsl --export experimentinGentoo '\\.\pipe\wsl-exp-imp'
The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
在Windows中,有没有办法像mkfifoLinux中那样创建类似文件的命名管道?
你想要的效果非常好。在命令提示符下。
当涉及非 Cmdlet 时,PowerShell 中的管道就不正常。不要使用它们。如果要在 PowerShell 中编写脚本,请使用cmd /c "whatever"转义到命令提示符来执行单个命令。
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |