標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

PowerShell 7.4 でのパイプラインならパラレルで動いた。

の続き。その後、 X(旧twitter)にて

という情報を頂戴したので、試してみた。

現在インストールされている PowerShell

PS C:\Users\hymkor> Get-Host | Select-Object Version

Version
-------
5.1.22000.2538

つまり、5.1 だ。リンク先:PowerShell の試験的機能の使用 - PowerShell | Microsoft Learnによると

  • curl -s -L $uri | tar -xzvf - -C . といった機能が期待どおり動く
  • PowerShell 7.4 以降でメインストリームになっている

とのことらしい。ならば、最新版を入れてみよう

PowerShell 7 のインストール

$ winget search Microsoft.PowerShell
$ winget install --id Microsoft.Powershell --source winget

PowerShell の最新版の実行ファイル名は PowerShell.exe ではなく、pwsh.exe にかわったと、どこかで聞いた。

$ pwsh
PowerShell 7.4.0
PS C:\Users\hymkor>

特にバージョンを表示するコマンドを実行しなくても起動時に表示してくれるようになったらしい。ありがたい。

検証

例のスクリプトは無変更で、呼び出し方法だけ

$ pwsh.exe ~\Share\cmds\backup-Demo_world.ps1

と変えてみた (-ExecutionPolicy RemoteSigned -file みたいなオプションを付けなくても起動できるのは嬉しい)

消費メモリがかなり少なくなった。すばらしい。

さて、この .tar.zst アーカイブ、壊れてないだろうか。 先日の verify-Demo_World.cmd で検証してみよう。

$ rclone cat "(略)/minecraft-Demo_World-20231225.tar.zst"   | zstd -dc   | verifyarc -C "(略)\AppData\Roaming\.minecraft\saves" -
ARCHIVE: [OK] Demo_World/icon.png
ARCHIVE: [OK] Demo_World/level.dat
    : 中略
ARCHIVE: [OK] Demo_World/region/r.-2.11.mca
ARCHIVE: [OK] Demo_World/region/r.-2.12.mca
/*stdin*\ : Decoding error (36) : Data corruption detected
ARCHIVE: [DIFFER] Demo_World/region/r.-2.13.mca
2023/12/25 18:06:59 ERROR : minecraft-Demo_World-20231225.tar.zst: Failed to send to output: write /dev/stdout: The pipe has been ended.
2023/12/25 18:07:00 Failed to cat: write /dev/stdout: The pipe has been ended.
START=2023/12/25 月 18:01:20.16
END=2023/12/25 月 18:07:00.76

どうもネットワーク不調でうなくいかない… ( これは CMD.exe 版のバックアップに対しても発生した )

rclone は今はあきらめて、手動(ftp.exe) でリトライだ

ftp> bin
200 Type set to I
ftp> get minecraft-Demo_World-20231225.tar.zst
200 PORT command successful
150 Opening BINARY mode data connection for minecraft-Demo_World-20231225.tar.zst (3769602366 bytes)
226 Transfer complete
ftp: 3769602366 バイトが受信されました 1608.86秒 2343.03KB/秒。
ftp> bye
221 Goodbye.
$ zstd.exe -d < minecraft-Demo_World-20231225.tar.zst | verifyarc.exe -C "%APPDATA%\.minecraft\saves" -
ARCHIVE: [OK] Demo_World/icon.png
ARCHIVE: [OK] Demo_World/level.dat
ARCHIVE: [OK] Demo_World/level.dat_mcr
:
FILESYS: [OK] Demo_World\DIM-1\region\r.9.-12.mca
FILESYS: [OK] Demo_World\DIM-1\region\r.9.-13.mca
$

あらかじめ全部ダウンロードした状態なら、問題がないことを確認できた。よしよし