【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
おまけ
せっかくなので、よくありそうなバックアップ処理を自動化するバッチのサンプルをば。
- 同階層の特定のフォルダを
- 入力した任意のパスワードで暗号化して
- 特定のファイルやフォルダを除外した上で
.7z
形式で圧縮したのち- ファイル名
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
バックアップ作業が大変楽になるので重宝している。
※もちろん、必要なものまで除外されてしまわないよう、そこだけ注意されたい。