私の現場はオンプレ環境なのでマシン室に入っての作業があるのですが、作業ログを固めて事務所に持って帰るという作業が発生します。
サーバのログはtarで固めればいいですが、teraterm等のローカル側でのログも回収しないといけません。
マシン室の端末での作業を余儀なくされますが、圧縮の際毎回ポチポチと作業するのは面倒です。
幸いにも圧縮ツールは7zipがインストールされています。
7zipはCLIでの操作が出来ますので、楽するために今回はこれを覚えようと思います。
ググれば沢山出てきますが自分のブログの方が探しやすいですからね。
環境
サブWindowsPCで検証します。
7zipはインストールしてあるものとし、パスは通してません。
- OSバージョン
PS C:\Users\masashi\7ziptest> Get-WmiObject Win32_OperatingSystem SystemDirectory : C:\WINDOWS\system32 Organization : BuildNumber : 18363 RegisteredUser : user SerialNumber : 00330-80000-00000-AA868 Version : 10.0.18363
- 7zipバージョン
実行ファイルは7z.exeです。
PS C:\Users\masashi\7ziptest> & 'C:\Program Files\7-Zip\7z.exe' --help 7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30 Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]
ヘルプを見ると機能が沢山ありますが、断トツに使うフォルダの圧縮・解凍のみ確認します。
コマンドがバーッと出てきますが長いのでここでは割愛。
ちなみに7zipでは必須引数をcommand、オプション引数をswitchiesと言うそうです。
以下コマンド、スイッチで表記します。
圧縮
- フォルダ構成
サンプル的に数フォルダとファイル作りました。
PS C:\Users\masashi\7ziptest> ls -r ディレクトリ: C:\Users\masashi\7ziptest Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2020/10/03 12:47 folder1 d----- 2020/10/03 12:48 folder2 ディレクトリ: C:\Users\masashi\7ziptest\folder1 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2020/10/03 12:47 24 file1.txt -a---- 2020/10/03 12:47 24 file2.txt ディレクトリ: C:\Users\masashi\7ziptest\folder2 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2020/10/03 12:48 24 file3.txt
- 圧縮
コマンドaで圧縮です。
スイッチは-pでパスワードをかけられます。
-pの後に文字列を対話無しでかけられますが、履歴に残るし定期的にやるわけでもないので手動入力にしました。
archive.zipという名前で固めます。
コマンドはtarとほとんど一緒ですね。
PS C:\Users\masashi\7ziptest> & 'C:\Program Files\7-Zip\7z.exe' a -p archive.zip .\folder1 .\folder2\ 7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30 Scanning the drive: 2 folders, 3 files, 72 bytes (1 KiB) Creating archive: archive.zip Add new data to archive: 2 folders, 3 files, 72 bytes (1 KiB) Enter password (will not be echoed): Files read from disk: 3 Archive size: 824 bytes (1 KiB) Everything is Ok
圧縮ファイルの中身確認
コマンドlです。
Listのエルです。
PS C:\Users\masashi\7ziptest> & 'C:\Program Files\7-Zip\7z.exe' l .\archive.zip 7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30 Scanning the drive for archives: 1 file, 824 bytes (1 KiB) Listing archive: .\archive.zip -- Path = .\archive.zip Type = zip Physical Size = 824 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2020-10-03 12:47:47 D.... 0 0 folder1 2020-10-03 12:47:41 ....A 24 36 folder1\file1.txt 2020-10-03 12:47:47 ....A 24 36 folder1\file2.txt 2020-10-03 12:48:13 D.... 0 0 folder2 2020-10-03 12:48:13 ....A 24 36 folder2\file3.txt ------------------- ----- ------------ ------------ ------------------------ 2020-10-03 12:48:13 72 108 3 files, 2 folders
解凍
解凍はファイルのみ展開するのと、パスを保持したままの展開ができます。
私はフォルダ名のまま展開という方法しかやらないので、その方法のみ記載します。
パス保持したまま展開はコマンドx、
スイッチ-spfでサブフォルダまで保持して展開できます。
-oで展開用のフォルダを作成できます。
自動で同名のまま展開できなかったのでunzipという名前にしてしまいましたが、
同じ名前にしたいなら一細工する必要がありそうです。
パスワードがあれば展開時に聞かれますので、特に引数は不要です。
PS C:\Users\masashi\7ziptest> & 'C:\Program Files\7-Zip\7z.exe' x -spf -o'unzip' .\archive.zip 7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30 Scanning the drive for archives: Extracting archive: .\archive.zip -- Path = .\archive.zip Type = zip Physical Size = 824 Enter password (will not be echoed): Everything is Ok Folders: 2 Files: 3 Size: 72 Compressed: 824 PS C:\Users\masashi\7ziptest> ls ディレクトリ: C:\Users\masashi\7ziptest Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2020/10/03 12:47 folder1 d----- 2020/10/03 12:48 folder2 d----- 2020/10/03 12:59 unzip -a---- 2020/10/03 12:49 824 archive.zip
展開したフォルダを確認すると圧縮したものと同じですね。
PS C:\Users\masashi\7ziptest> ls -r unzip ディレクトリ: C:\Users\masashi\7ziptest\unzip Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2020/10/03 12:47 folder1 d----- 2020/10/03 12:48 folder2 ディレクトリ: C:\Users\masashi\7ziptest\unzip\folder1 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2020/10/03 12:47 24 file1.txt -a---- 2020/10/03 12:47 24 file2.txt ディレクトリ: C:\Users\masashi\7ziptest\unzip\folder2 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2020/10/03 12:48 24 file3.txt
むすび
今回は7zipの圧縮、解凍のみの簡単なコマンドを見てみました。
7zipコマンドラインの情報は各サイトいろいろありますが、
意外と自分が知りたい情報が無かったので整理してみました。
パスを全て保持したまま展開というのが意外と難しく何回も失敗しました。
(展開時にフォルダだけできて、ファイルは1階層目に展開しちゃうなど。-spfで解決)
ヘルプを見るとまだまだコマンドがありますが、とりあえずは圧縮・解凍を簡単にできそうです。
あとはdateコマンドのフォーマットをうまく使って一発圧縮ツールでも作りたいですね。