はじめに
Windowsの長いパス問題は、ZIP圧縮時によく起きるトラブルです。
対応を調べると、レジストリで制限解除とか、ツールを変えるとかあるけど、
そんな面倒なことをしたくない・・・
よくよく考えたら、これはDocker使えば良いんじゃない!?
ってなったので、やってみました
やりたいこと
dataフォルダを丸っとZIP圧縮して、backupフォルダに保存するだけ
xxx/
├── compose.yaml ← こいつを用意するだけ
├── data/ ← 圧縮対象
└── backup/ ← zip出力先(事前に作成しておく)
用意するファイル
compose.yamlでボリュームマウントして、コマンド実行だけ
compose.yaml
services:
zipper:
image: alpine:latest
volumes:
- ./data:/data:ro
- ./backup:/backup
command: >
sh -c "
apk add --no-cache zip &&
FILENAME=data-$$(date '+%Y%m%d%H%M%S').zip &&
zip -r /backup/$$FILENAME /data &&
echo \"Done: $$FILENAME\"
"
実行方法
# 実行(完了後コンテナは自動停止)
docker compose run --rm zipper
# または
docker compose up
補足
既にcompose.yaml(もしくはdockercompose.yaml)が存在する場合はファイル名を変更してください。
例)compose.zipper.yaml
コマンドはこちら
例)docker compose -f compose.zipper.yaml run --rm zipper
最後に
Windows環境で面倒なことだけど、Dockerなら簡単に対応できるので便利ですね。