导出/导入压缩的 WSL2 发行版

vec*_*ect 3 powershell wsl2

我正在寻找一种在导出 WSL2 发行版时压缩它的方法,并尝试通过管道传递由 to 生成的 tar 文件wsl7z但大约一个小时后,它只产生 CPU 负载,并且该7z过程甚至没有根据到任务管理器:

wsl --export myDistro - | 7z a -tgzip myDistro.tar.gz -si
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中那样创建类似文件的命名管道?

Dan*_*l B 5

你想要的效果非常好。在命令提示符下。

当涉及非 Cmdlet 时,PowerShell 中的管道就不正常。不要使用它们。如果要在 PowerShell 中编写脚本,请使用cmd /c "whatever"转义到命令提示符来执行单个命令。

  • 看起来是这样。以下是 PowerShell 在通过管道传输数据时如何处理数据的[说明](/sf/answers/4138295171/)。这是一个相关的[问题](https://github.com/PowerShell/PowerShell/issues/1908),它已经开放了 5 年。我是 PowerShell 的新手,有点惊讶它没有提供通过管道传输数据等基本功能。 (3认同)