A3サイズの升目帖(旧)

ゲーム制作やプログラミングに関する雑記

【7-Zip】特定の拡張子のファイルやフォルダを除外して圧縮

7-Zipのロゴマーク


今やっている個人プロジェクトは外部のリモートリポジトリを使っていないので、週1くらいの間隔でバックアップをとっている。

その際、圧縮には 7-Zip を使っているのだが、プロジェクト内に .lib.exe のようなバイナリファイルが大量にあると、圧縮に時間はかかるしファイルサイズは大きくなるしでいいことがない。

バイナリファイルはソースコードさえあれば何度でも再生成できるので、ソースコードだけバックアップできればそれで十分なわけだ。

調べたところ、特定の拡張子のファイルや特定の名称のフォルダを除外して圧縮する方法があるようなので、備忘録としてまとめておく。

なお、7-Zip のバージョンは 19.00 である。


7-Zip の除外パラメータ -x

前置きが長くなったが、7-Zip ではファイルやフォルダの除外に -x を使用する。

オプションとして、r再帰的処理を、!ワイルドカードを有効にできる。

特定の拡張子のファイルを除外する

例えば、拡張子 .xxx のファイルすべてを除外するなら以下のようなパラメータになる。

-xr!*.xxx

特定の名称のフォルダを除外する

また、folder というフォルダすべてを除外するなら以下のようになる。

-xr!folder

複数パターンまとめて除外するには?

-x はひとつにつき1個のパターンしか指定できないらしく、複数パターンのファイルやフォルダを除外したい場合は愚直に羅列するしかないようだ。(筆者調べ)

-xr!folder1 -xr!folder2 -xr!*.xxx -xr!*.yyy -xr!*.zzz


おまけ

せっかくなので、よくありそうなバックアップ処理を自動化するバッチのサンプルをば。

  1. 同階層の特定のフォルダを
  2. 入力した任意のパスワードで暗号化して
  3. 特定のファイルやフォルダを除外した上で
  4. .7z 形式で圧縮したのち
  5. ファイル名 backup_YYYYMMDD.7z として出力する。
@echo off

cd /d %~dp0

echo パスワードを入力してください。
set /p pwd=

set filename=backup_%date:~0,4%%date:~5,2%%date:~8,2%.7z
"[7-Zipのパス]\7z.exe" a -p%pwd% -xr!folder -xr!*.lib -xr!*.exe %filename% "[対象フォルダ名]"

pause

バックアップ作業が大変楽になるので重宝している。

※もちろん、必要なものまで除外されてしまわないよう、そこだけ注意されたい。


参考文献