Windows 8.1は、ファイルシステムのNTFSが持つ透過的圧縮機能と、ZIP形式を疑似フォルダーとして使用するという、2つの圧縮・展開(伸張/解凍)機能を備えている。前者はWindows NT 3.51時代から、後者はWindows XP時代からサポートしてきた。今回はNTFS圧縮機能に関するTipsを紹介しよう。
NTFS圧縮とは
前回紹介した「圧縮フォルダー」は他者との共有などに使えるが、今回の「NTFS圧縮」はPC管理を主軸においている。そもそも圧縮とは、冗長部分を符号化するアルゴリズムを用いて、実際のデータ量を縮小する技術だ。NTFS圧縮も、基盤にあるのはMS-DOS時代の圧縮機能であるDoubleSpaceであり、現在に至るまで多くの改良が加わっている。
NTFS圧縮の欠点と言われるのがパフォーマンスの低下だ。圧縮・展開時は、CPUやI/Oといったハードウェアリソースを消費するため、通常のファイル/フォルダー操作に比べてオーバーヘッドが発生するのは事実である。だが、これを欠点としていたのは10年以上も前の話で、現在の高性能化したPCであれば神経質になる必要はまったくない。
既に終えたプロジェクトに関する資料やファイルなどをNTFS圧縮し、必要に応じてインデックス検索で参照するといったソリューションを想定すれば、NTFS圧縮の利便性を理解してもらえるのではないだろうか。
圧縮したファイルが解除される?
NTFS圧縮の操作方法は第27回で述べているので、そちらを参照してほしい。今回紹介したいのは自動化だ。
本来であれば、NTFS圧縮を施したファイル/フォルダーは、コピー・移動先のフォルダー状態によって結果が異なる。移動先が圧縮済みフォルダーの場合、圧縮状態を維持するが、そうでない場合は圧縮状態を解除する仕組みだ。このルールはFAT32など異なるファイルシステム間にも適用される。
だが、移動元のフォルダーがシンボリックリンクで作成している場合、追加したファイル/フォルダーは適用外。このようにNTFS圧縮は簡単に解除されることが多いため、一定時間ごとに特定のフォルダー全体を圧縮するタスクを作成するのが簡単なのだ。
タスクを作成する
Windows NT時代からWindows 8.1の現在に至るまで、NTFS圧縮を制御するのが「compact」コマンドである。圧縮状態の表示や変更が可能なコマンドだが、今回使用するのは、圧縮を有効にするオプション「/C」、サブフォルダーまでを対象にするオプション「/S」、エラー発生時も処理を続けるオプション「/I」の3つ。
今回は操作ステップを減らすため、コマンドプロンプトの記述だけ紹介する。「schtasks /create /tn "Compact_Folder1" /tr "compact.exe /c /s C:\Users\kaz\Documents\Delivered* /i" /sc daily /st 17:00:00」と実行してみてほしい。これで毎日17時に「C:\Users\kaz\Documents\Delivered」フォルダー下はすべて自動圧縮される。そのため、パスはご自身の環境に応じた変更が必要だ。
schtasks /create /tn "Compact_Folder1" /tr "compact.exe /c /s C:\Users\kaz\Documents\Delivered\* /i" /sc daily /st 17:00:00
※上記の入力内容において、パスは環境に応じて変更する。
また、ユーザーがサインインしていない(かつPCはシャットダウンしていない)状態でもタスクを自動実行する場合は、タスクスケジューラを起動し、「ユーザーがログオンしているかどうかに関わらず実行する」を選択するとよい。
阿久津良和(Cactus)