- PR -

Windowsコマンド

1
投稿者投稿内容
BB
常連さん
会議室デビュー日: 2005/01/04
投稿数: 25
投稿日時: 2005-03-17 18:14
Windowsコマンドでcompactというのがあるようです。

これは、gzipとかtarとかのイメージでよいのでしょうか?

と言うのは、書式とおりにやっても圧縮されないようで。

(例)compact /C c:\test.txt

とか

ちなみに、テストはXP上です。
よろしくお願いします。

[ メッセージ編集済み 編集者: BB 編集日時 2005-03-17 18:15 ]

[ メッセージ編集済み 編集者: BB 編集日時 2005-03-17 18:25 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-03-17 19:14
圧縮されないとはどのように判断されましたか?

compact での圧縮はファイルシステムレベルで行われるので、多くのファイル関連 API は非圧縮時のサイズを返したり、そのままファイルを開けたりします。エクスプローラのサイズも圧縮前の値をそのまま示しますね。ただし、エクスプローラでは圧縮されている証としてファイルの文字が青文字になるはず。

あと、ファイルのプロパティでサイズは変わらないけど、ディスク上のサイズは小さくなっていたりしませんか?

そういった意味では gzip とはイメージがかなり異なりますね。他の種類のファイルシステムにコピーすると、自動的に圧縮が解除されたりしますし。

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-03-17 19:15 ]
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-03-17 19:25
引用:

Windowsコマンドでcompactというのがあるようです。

これは、gzipとかtarとかのイメージでよいのでしょうか?


gzipやtarは、圧縮元のファイルを圧縮して別ファイルにするイメージです。
ですから、圧縮後のファイルを別の場所に移動しても圧縮されたままであるというメリット、
逆に圧縮ファイルを利用するには解凍を意識しないとならないというデメリットがあります。
(Windows98以降ではCAB、WindowsME以降ではZIPの圧縮ファイルは、あたかもフォルダのように扱えたりはしますが)
Windows標準ツールでこの手の圧縮が出来るものといったら、iexpressかmakecabあたりでしょうか。
標準以外でのコマンドライン圧縮ツールはたくさんあるし、そっちの方が便利だとは思います。

それに対し、compactコマンドは、Windows2000以降(NTFS5.0)以降で実装された、
NTFSのファイルシステムによる圧縮を行うコマンドです。
ファイルシステムでの圧縮なので、そのファイルシステム上で利用する限りでは、
ユーザは圧縮されてるか否かを意識せずに利用することができます。
反面、圧縮された状態のまま、そのファイルシステム上から移動させることは出来ません。

引用:

と言うのは、書式とおりにやっても圧縮されないようで。

(例)compact /C c:\test.txt


NTFS圧縮がなされてるかどうかは、ファイルのプロパティから確認できます。
サイズとディスク上のサイズを見比べれば、圧縮の効果もわかります。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-03-17 20:04
こんばんわ.
引用:

BBさんの書き込み (2005-03-17 18:14) より:

これは、gzipとかtarとかのイメージでよいのでしょうか?


ついでに書くと,本来 tar は「圧縮」するためのものではないです.
GNU の tar はそのような機能が追加されてますけど,
Solaris や HP-UX では tar と gzip などを組み合わせて使うことで圧縮します.
tar は元来「複数の files を書庫として纏める」のが仕事で,
これは gzip や compact にはできません.
なので tar と compact は毛色が違います.

以上,ご参考までに.
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-03-17 20:11
便乗質問ですが...

compact で圧縮したファイルやディレクトリは,
他の pc へ copy/move したら,圧縮されたままなのでしょうか?
BB
常連さん
会議室デビュー日: 2005/01/04
投稿数: 25
投稿日時: 2005-03-17 20:16
kazさん、Mattunさん、未記入さん
うーーーん、、すばらしい回答ありがとうございます。

>>標準以外でのコマンドライン圧縮ツールはたくさんあるし、そっちの方が便利だとは思います。

探してみます。

またよろしく、どうも。

close
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-03-17 21:41
引用:

compact で圧縮したファイルやディレクトリは,
他の pc へ copy/move したら,圧縮されたままなのでしょうか?


NTFS圧縮とNTFSアクセス権に関しては、同じ法則に基づいて変化します。
# NTFS暗号化はちょっと違う。

一番の大前提は、
・ファイルが新たに作成される場合→コピー/移動先の設定に従う
・ファイルが新たに作成されない場合→属性は保持される
です。

ファイルが新たに作成されないパターンは、
「同一マシン内」&「同一パーティション内」&「移動」
という条件です。
この条件の場合はファイルパスの情報が書き換わるだけでファイル自体は
変化しませんので、属性は保持されます。

それ以外の移動は、移動先へのファイル新規作成後に元ファイル削除、って
処理が行われていますので、コピーと同様に新たなファイルが作成されてます。
この場合は移動先に従います。

なので、
引用:

compact で圧縮したファイルやディレクトリは,
他の pc へ copy/move したら,圧縮されたままなのでしょうか?


のケースの場合、ファイル共有機能を経由しての移動/コピーであれば、
移動/コピー先フォルダの属性に従います。


この辺の理屈は、リソキに書いてあったと記憶してます。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-03-17 23:00
引用:

Mattunさんの書き込み (2005-03-17 21:41) より:

なので、
引用:

compact で圧縮したファイルやディレクトリは,
他の pc へ copy/move したら,圧縮されたままなのでしょうか?


のケースの場合、ファイル共有機能を経由しての移動/コピーであれば、
移動/コピー先フォルダの属性に従います。


ありがとうございます.
とすると,file そのものが変わるのではなく,
属性が変わるということですね.
つまり,NTFS の機能で圧縮していると...
であれば,file system が非 NTFS な volume への copy/move は
「元に戻った」ように見えるんでしょうね.
引用:

この辺の理屈は、リソキに書いてあったと記憶してます。


重ね重ねありがとうございます.
会社で早速読んでみます.
1

スキルアップ/キャリアアップ(JOB@IT)