の続き。その後、 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 $
あらかじめ全部ダウンロードした状態なら、問題がないことを確認できた。よしよし