7zip を使用して Web サイトの .7z アーカイブを作成したいと考えています。いくつかのディレクトリには、バックアップする価値のない大きなファイル (数ギガバイト) が含まれていますが、すでにバックアップされています。特定のファイルまたはディレクトリのみをバックアップするように指定することもできますが、これを行うスクリプトを作成する予定です。新しいファイル、ファイルの種類、およびディレクトリを含めるためにスクリプトを更新し続けるのは少し面倒です。ドキュメントでディレクトリを除外してファイルのみをバックアップすることについて、どうしても何も見つけることができません。これを行う最も簡単な方法は何ですか?
以前(大きなファイルを避ける必要があった頃)私が使っていたコマンドは、単純に
7z a backup.7z *
作業ディレクトリで実行されます。
答え1
directory
ファイルの種類です。man 7z
読みにくいですが、次の内容が記載されています-x
:
-x[r[-|0]]]{@listfile|!wildcard} Exclude filenames
次のようなディレクトリ ツリーがあるとします。
$ tree
.
├── dir
│ └── file3
├── dir1
│ └── file4
├── file1
└── file2
2 directories, 4 files
そして、私たちはそれを無視したいのですdir
。dir1
$ 7z a -x'!dir' -x'!dir1' b.7z *
それを行った後:
$ 7z l b.7z
(...)
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-04-03 22:25:24 ....A 0 0 file1
2018-04-03 22:25:24 ....A 0 0 file2
------------------- ----- ------------ ------------ ------------------------
2018-04-03 22:25:24 0 0 2 files
答え2
私の場合、構文が少し異なります。
NOW=`date +%Y-%m-%d-%H-%M-%S`
XX=`cat ~aaaaaazzzzzz/.gnupg2/passphrase-symmetric`
7z a \
-t7z -m0=lzma2 -mx=9 -mfb=64 \
-md=32m -ms=on -mhe=on -p${XX} \
'-xr!~/Documents/temp/' \
'-xr!~/Documents/Sites/' \
'-xr!**/*.zip' '-xr!**/*.bz2' '-xr!**/*.gz' '-xr!**/*.7z' \
'-xr!**/*.pyc' '-xr!**/__pycache__/**' \
'-xr!**/*.gpkg' '-xr!**/*.gramp' '-xr!**/*.ged' \
'-xr!**/*.log' '-xr!*/venv/*' '-xr!*.sqlit*' '-xr!*.bak' '-xr!*.html~' '-xr!*.html~*' \
'-xr!*.vm' '-xr!*.vmdk' '-xr!*.vmem' '-xr!*.vmsd' '-xr!*.vmss' '-xr!*.vmx' '-xr!*.vmxf' \
'-xr!*.mp4' '-xr!*.msf' \
'-xr!*.htm' '-xr!*.html' \
${BACKUP_DIR}/data-encrypted/BackUp-${NOW}.7z \
~/Documents \
~/.ssh \
~/.gnupg2 \
~/.gnupg
Linux / Ubuntuで実行しています