次のようなバッチファイルを OneDrive のフォルダーにおいて、実行する。 tar と Zstandard (Facebook の開発した圧縮プログラム)を使う
minecraft.cmd
move "%APPDATA%\.minecraft\screenshots\*.png" "%USERPROFILE%\OneDrive\画像\dotminecraft\." tar -C "%APPDATA%" --exclude ".minecraft/backups/*.zip" -cvf - .minecraft | zstd > dotminecraft-%DATE:/=%.tar.zst
マインクラフトでは F2 キーで簡単にスクショが撮れる。が、このデータはずっとたまり続けてしまうので、バックアップ時に負荷になる。でも、ちゃんと残しておきたい。そこで画像ファイルだけは、OneDrive の別の画像フォルダーに逃しっぱなしにする。
また、.minecraft/backups には、マインクラフト自身がバージョンアップ前に取得するバックアップZIPがある。これが結構なサイズになるので、tar の --exclude オプションで排除しておく。
だが、exclude でちゃんと目的のファイルだけ除外されたのだろうか。zip という拡張子が指定されているので、関係ないファイルまで除外されていないだろうな。心配になったので、ドライランさせてログで比較だ。
tar -C "%APPDATA%" --exclude ".minecraft/backups/*.zip" -cvf - .minecraft >nul 2>exclude-test.log tar -C "%APPDATA%" -cvf - .minecraft >nul 2>no-exclude-test.log vim -d exclude-test.log no-exclude-test.log
OK だった!