[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この章は,基本的なファイル操作に対するコマンドを記述します.コピー,移 動(名前の変更),そして削除(リムーブ)です.
11.1 cp : ファイルとディレクトリのコピー | Copy files. | |
11.2 dd : ファイルの変換とコピー | Convert and copy a file. | |
11.3 install : ファイルのコピーと属性の設定 | Copy files and set attributes. | |
11.4 mv : ファイルの移動(名前の変更) | Move (rename) files. | |
11.5 rm : ファイルやディレクトリの削除 | Remove files or directories. | |
11.6 shred : より安全なファイルの削除 | Remove files more securely. |
cp
: ファイルとディレクトリのコピー
cp
は,ファイル(または,オプションでディレクトリ)をコピーしま
す.コピーはオリジナルから完全に独立しています.一つのファイルをもう一
つにコピーする,または,任意の多くのファイルをコピー先のディレクトリに
コピーすることのいずれかが可能です.概要です.
cp [option]... source dest cp [option]... source... directory |
最後の引数が既存のディレクトリを指す場合,cp
はそれぞれの
sourceファイルをそのディレクトリに(同じ名前のままで)コピーします.
それ以外で,二つのファイルが与えられた場合,最初のものを二番目のものに
コピーします.最後の引数がディレクトリでなく,二つ以上のオプションでな
い引数が与えられた場合エラーとなります.
一般的に,ファイルは読み込まれたとおりに書き込まれます.例外は,以下の `--sparse'オプションを参照してください.
デフォルトで,cp
はディレクトリをコピーしません.しかし,
`-R',`-a',そして`-r'オプションでは,
cp
は元のディレクトリを下り,対応するコピー先のディレクトリに
ファイルをコピーすることで,再帰的にコピーします.
デフォルトで,cp
は再帰的にコピーしないときのみ,シンボリック
リンクをたどります.このデフォルトは,`--no-dereference'
(`-d'),`--dereference' (`-L'),そして`-H'
オプションで優先することが可能です.これらのオプションの一つ以上が指定
されている場合,最後のものが他のものに対して,そのまま優先します.
デフォルトで,cp
は,再帰的なコピーではないときだけ特殊ファイ
ルの内容をコピーします.このデフォルトは,`--copy-contents'オプ
ションで優先させることが可能です.
cp
は一般的に,以下の例外はありますが,ファイルの自分自身への
コピーを拒絶します.`--force --backup'が同一のsourceと
destで指定され,通常のファイルを参照している場合,cp
は,
通常の方法(see section 2.2 バックアップオプション)で指定されたように,通常または番号付
きのバックアップファイルを作成します.これは,変更前に既存のファイルの
バックアップを単に作成したいとき役に立ちます.
プログラムは以下のオプションも受け入れます.2. 共通のオプションも参照 してください.
cp
はsourceのバックアップを作
成します.このオプションの組合わせの役に立つ応用の一つは,以下の小さな
Bourneシェルスクリプトです.
#!/bin/sh # Usage: backup FILE... # Create a GNU-style backup of each listed FILE. for i; do cp --backup --force "$i" "$i" done |
cp -R --copy-contents
は限りなく読み込み続け,
`/dev/zero'をコピーで使用している場合,コピー先のディスクはいっぱ
いになるでしょう.このオプションは,再帰的にコピーしていない限り効果が
無く,シンボリックリンクのコピーにも影響しません.
cp
はそれをア
ンリンクし,もう一度開こうとします.この動作は,`--link'と
`--symbolic-link'でそれを可能にすることとは異なり,それによって
コピー先ファイルは開かれることなく,無条件にアンリンクされます.
`--remove-destination'の記述も参照してください.
attribute_listを用いずに`--preserve'を使用することは, `--preserve=mode,ownership,timestamps'と等価です.
このオプションがないとき,それぞれのコピー先のファイルは,元のファイル に対応するパーミッションで作成され,umaskで設定されているビットがなく なり,そして,set-user-idビットとset-group-idビットがなくなります. See section 26. ファイルの許可.
cp
に与える最後の引数は,既存のディレクトリ名にする必要があり
ます.例えば,以下のようなコマンドを入力します.
cp --parents a/b/c existing_dir |
これはファイル`a/b/c'を`existing_dir/a/b/c'にコピーし,存在 しないあらゆる中間ディレクトリを作成します.
cp
が動作します.それは,それまでに使用されていた`--interactive'や
`-i'オプションを効果的に停止します.コピー先のファイルに関する
すべてのプロンプトに対する応答として`no'が与えられたかのように
cp
に動作させるため,`--reply=no'を指定して下さい.そ
れぞれ既存のコピー先のファイルに関して,cp
がユーザにプロンプ
トを表示するようにするため,`--reply=query'を指定して下さい.
cp
は発
見的手法を用いて入力された元ファイルの穴を見付け,対応する出力ファイル
に同様にまばらにします.
whenの値は以下の一つになります.
mkswap
コマンドを用いてファイ
ルを作成するとき,そのようなファイルには穴があってはならないので,これ
が役に立ちます.
dd
: ファイルの変換とコピー
dd
は,変更可能なI/Oブロックサイズを用いて,(デフォルトで,標
準入力から標準出力に)ファイルをコピーし,オプションの動作でそれを変更
します.概要です.
dd [option]... |
プログラムは,以下のオプションも受け入れます.2. 共通のオプションも参 照してください.
以下の(bytesとblocks)数値的な値のオプションを続けて倍数に することが可能です.それは,`b'=512,`c'=1,`w'=2, `xm'=m,または`k'=1024のようなあらゆるブロックサ イズ接尾子です(see section 2.3 ブロックサイズ).
スキップとI/Oに対し異なるブロックサイズを使用するためは,dd
の呼び出しを別々に行なってください.例えば,以下のシェルコマンドでは,
ディスクとテープの間で512kBブロックでデータをコピーしますが,ディスク
の最初の4kBのラベルは,保存されたり復元されたりしません.
disk=/dev/rdsk/c0t1d0s2 tape=/dev/rmt/0 # Copy all but the label from disk to tape. (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape # Copy from tape back to disk, but leave the disk label alone. (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk |
dd
はfileをゼロバイト(または,
`seek='で指定されたサイズ)に切り詰めます.
以下の変換です.
dd
は他と異な
り,偶数バイトを読み込んだとき動作します -- 最後のバイトは,単にコピー
されます.(入れ替えるバイトがないからです).
install
: ファイルのコピーと属性の設定
install
は,許可モードと,可能な場合は所有者とグループ設定し
ながらファイルをコピーします.概要です.
install [option]... source dest install [option]... source... directory install -d [option]... directory... |
これらの最初のものは,sourceファイルはdestターゲットファイ ルにコピーされます.二番目では,それぞれのsourceファイルはコピー 先のdirectoryにコピーされます.最後では,それぞれの directory(と足りない親ディレクトリ)がコピーされます.
install
はcp
に似ていますが,コピー先のファイルの属
性を制御することが可能になっています.それはMakefileで一般的に使用され,
プログラムをコピー先のディレクトリにコピーします.自分自身にファイルを
コピーすることは拒否されます.
プログラムは,以下のオプションも受け入れます.2. 共通のオプションも参 照してください.
install
の互換性のためです.
install
と異なり,そこではディレクトリはデフォルトの属性
が与えられます.)
chmod
の象徴的なモードが可能で,0が出発点となりま
す(see section 26. ファイルの許可).デフォルトモードは`u=rwx,go=rx'です
--- 所有者の読み書き実行,グループとそれ以外は読み込みと実行です.
install
が適切な特権(ルートとして実行)を持つ場合,インストー
ルされるファイルやディレクトリの所有権はownerに設定されます.デ
フォルトはroot
です.ownerは,ユーザ名または,数値のユーザ
IDが可能です.
mv
: ファイルの移動(名前の変更)
mv
は,ファイル(やディレクトリ)を移動したり名前を変更したりし
ます.概要です.
mv [option]... source dest mv [option]... source... directory |
最後の引数が,既存のディレクトリを示す場合,mv
は,それ以外の
与えられたそれぞれのファイルを,同じファイル名で,そのディレクトリに移
動します.それ以外では,二つのファイルが与えられた場合,一番目の名前を
二番目に変更します.最後の引数がディレクトリではなく,二つ以上のファイ
ルが与えられた場合,エラーとなります.
mv
は,一つのファイルシステムから別のものへ,あらゆる形式のファ
イル移動が可能です.fileutilsのバージョン4.0
以前では,
mv
は通常のファイルのみファイルシステム間での移動が可能でした.
例えば,現在のmv
は,一つのパーティションから別のものへ,特殊
なデバイスファイルを含むディレクトリ階層全体を移動することが可能です.
それは最初に,要求されたディレクトリとファイルをコピーするcp -a
で使用されているものと同じコードを使用し,それから(コピーが成功したと
仮定して)元を削除します.コピーが失敗した場合,移動先のパーティション
にコピーされた部分が削除されます.一つのパーティションから三つのディレ
クトリを別のものにコピーしていて,最初のディレクトリが成功し,二番目が
失敗した場合,最初のものは移動先のパーティションに残り,二番目と三番目
は元のパーティションに残ります.
移動先のファイルが存在し通常の書き込みが不可で,標準入力が端末で,
`-f'や`--force'オプションが与えられていない場合,
mv
はファイルを置換するかどうか,ユーザにプロンプトを表示しま
す.(自分が所有するファイル,または,そのディレクトリに書き込み許可が
ある必要があります.)応答が`y'または`Y'で始まらない場合,ファ
イルはスキップされます.
警告:ディレクトリを示すシンボリックリンクを移動しようとし,ス
ラッシュを後置したシンボリックリンクを指定した場合,mv
はシン
ボリックリンクを移動しませんが,その代わりにシンボリックリンクが参照す
るディレクトリを移動します.See section 2.5 末尾のスラッシュ.
プログラムは以下のオプションも受け入れます.2. 共通のオプションも参照 してください.
mv
が移動先のファイルに関するプロンプトに対し`no'が与え
られているかのように動作させるため,`--reply=no'を指定して下さ
い.移動先のファイルが存在するときmv
がユーザにプロンプトを表
示するようにするため,`--reply=query'を指定して下さい.
rm
: ファイルやディレクトリの削除
rm
は与えられたfileを削除します.デフォルトではディレク
トリを削除しません.概要です.
rm [option]... [file]... |
ファイルに書き込みができない,標準入力が端末,そして,`-f'また
は`--force'オプションが与えられていない場合,または,
`-i'または`--interactive'オプションが与えられてい
る場合,rm
はユーザにファイルを削除するかどうかを促すプロン
プトを表示します.`y' や`Y'で始まらない返答の場合,ファイル
は省略されます.
警告:ファイルを削除するためにrm
を使用する場合,通常
はファイルの内容を復活させることが可能です.より確実にファイルの内容を
本当に復活させないようにしたい場合,shred
の使用を検討して下
さい.
プログラムは以下のオプションも受け入れます.2. 共通のオプションも参照 してください.
rmdir
の代わりにunlink
を用いてディレクトリの削除を試み,
そしてアンリンクを試みる前にディレクトリが空である必要はありません.適
切な特権を持ち,オペレーティングシステムがディレクトリに対する
unlink
をサポートしている場合のみ,これは動作します.ディレクト
リのアンリンクはディレクトリ内のすべてのファイルを参照できなくなるので,
この後でファイルシステムにfsck
した方が賢明です.
よくある問題の一つは,`-'で始まる名前を持つファイルの削除の方法で
す.GNU rm
では,引数を解析するgetopt
関数を使用す
るすべてのプログラムに似ていて,以下のすべての引数がオプションでないこ
とを示す`--'オプションを使用します.現在のディレクトリの`-f'
というファイル名を削除するため,以下のどちらかの入力で可能になります.
rm -- -f |
または以下のようにします.
rm ./-f |
この目的に対する,Unix rm
プログラムの単一の`-'の使用は,
getoptの標準構文の開発以前のものです.
shred
: より安全なファイルの削除
shred
は,非常に高価なハードウェアを用いてもデータの復活を妨
げるように,デバイスやファイルを上書きします.
通常,ファイルを削除するとき(see section 11.5 rm
: ファイルやディレクトリの削除),データは実際には
破壊されません.ファイルが保存されている場所をリストアップしている索引
のみ破壊し,記憶装置は再利用可能になります.索引の再構築を試み,その部
分が再利用されていない場合,ファイルを元に戻すことが可能なアンデリート
ユーティリティがあります.
ほとんど満タンのドライブを使用している忙しいシステムでは,スペースは数 秒で再利用可能になります.しかし,それが確実であることを知る方法はあり ません.機密データがあり,機密でないデータでファイルを実際に上書きする ことでリカバリが不可能だということを確かめたいかもしれません.
しかし,そうした後でも,研究所へディスクを持っていき,上書きされたデー タの下の元データのかすかな"残響"を探すために感度の高い(そして高価な) 多くの機器を使用することが可能です.データが一度上書きされただけでは, それはさほど難しくありません.
取り返しができないように何かを削除する最前の方法は,メディアに酸をかけ
て破壊する,溶かしてしまう,またはそれに似たことをすることです.フロッ
ピーディスクのような,安い着脱可能なメディアに対しては,これは好ましい
方法です.しかし,ハードドライブは高価で,溶かすのが難しいため,
shred
ユーティリティでは破壊することなく類似の効果を達成しよ
うとします.
これは,古いデータに対するダメージを最大にするように選ばれたデータパター ンで,上書き動作を何回も使用します.これがフロッピーディスクで動作して いても,パターンはハードドライブで最適な効果があるように設計されている ものになります.詳細は,ソースコードと,Sixth USENIX Security Symposium (San Jose, California, 22--25 July, 1996)の予稿から,Peter Gutmannの論文Secure Deletion of Data from Magnetic and Solid-State Memoryを参照してください.論文は http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.htmlで,オ ンラインでも利用可能です.
shred
は非常に重要な仮定に依存していることに注意して
ください.それは,ファイルシステムがその場所のデータを上書きするとい
うことです.これは伝統的な方法ですが,現代の多くのファイルシステムはこ
の仮定を満足するように設計されていません.例外は以下を含みます.
ファイルシステムがどのように動作しているかよく分からない場合,その場所
に上書きされないと仮定すべきで,それは,そのファイルシステムの通常のファ
イルで,shred
が信頼できる動作を行うことができないことを意味
します.
一般的に言って,上記の手法で設計されたファイルシステムの問題をバイパス
するため,ファイルではなくデバイスにshred
するとより信頼でき
ます.しかし,デバイスをshred
してさえ,常に完全に信頼するこ
とはできません.例えば,ほとんどのディスクは,不良セクタがアプリケーショ
ンに見えないようにをマッピングします.不良セクタが機密データを含む場合,
shred
ではそれを破壊することは不可能です.
shred
は,バックアップについて何もしないように,これらの問題
の検出も報告も試みません.しかし,ファイルではなくデバイスに
shred
する方がより信頼できるので,shred
はデフォルト
で出力ファイルを切り詰めたり削除したりしません.このデフォルトはデバイ
スに対しより適していて,それは通常切り詰めもできませんし,削除もすべき
ではありません.
最後に,バックアップとミラーの危険性を検討します.ファイルシステムのバッ
クアップとリモートのミラーには,削除不可能なファイルのコピーが含まれ,
それでshred
したファイルを後に復活させることが可能です.その
ため,その後shred
を使用して破壊したいデータを保持している場
合,バックアップやミラーが無いことを確かめて下さい.
shred [option]... file[...] |
プログラムは以下のオプションも受け入れます.2. 共通のオプションも参照 してください.
shred
は25回の上書きを使用します.これで,少な
くとも一回の使用で使用される有用な上書きパターンの全てに対して十分にな
ります.時間の節約のため減らしたり,時間の無駄遣いをする場合に増やすこ
とが可能です.
shred
します.デフォルトは
ファイル全体をshred
します.BYTESは乗数を指定するために,
`k',`M',または`G'のようなサイズ指定を続けることができ
ます.See section 2.3 ブロックサイズ.
shred
した後,(可能な場合は)それを切り詰め,そして
削除します.ファイルが複数のリンクを持つ場合,指名されたリンクのみ削除
されます.
shred
は,ファイルの最後のブロックまで完全に消
去するため,通常のファイルのサイズをファイルシステムのブロックサイズの
次の乗数まで切り上げます.その動作を抑制するため,`--exact'を使
用して下さい.このため,デフォルトでは,512バイトのブロックを持つファ
イルシステム上の,10バイトの通常のファイルをshred
する場合,
結果としてファイルは512バイトになります.このオプションを用いると,
shred
はファイルのサイズを増加させません.
shred
の書き込みの最終動作は,ランダムデータの作成です.
これが(例えば,暗号化されたデータのように見えるため)ハードディスク上で
目立つ場合や,より整然とさせたいと考える場合,`--zero'オプショ
ンで全てをゼロビットを用いて上書きする動作を追加します.これは,
`--iterations'オプションで指定した動作数に追加されます.
shred
します.
この引数はオプションと見なされます.一般的な`--'オプションはコマ ンドラインのオプションの終りを示すために使用されますが,`-'は普通 のファイルとして解釈されます.
この使用目的は,削除された一時ファイルをshred
することです.
例です.
i=`tempfile -m 0600` exec 3<>"$i" rm -- "$i" echo "Hello, world" >&3 shred - >&3 exec 3>- |
シェルコマンド`shred - >file'は,shred
の呼び出しの前に,
それがfileを切り詰めるため,fileの内容を`shred'しない
ことに注意してください.コマンド`shred file',または(Bourne互換シェ
ルを使用している場合は)コマンド`shred - 1<>file'を代わりに使用し
てください.
最初のドライブのフロッピーディスクに作成されたファイルシステムの,全て の記録を消去するために,以下のコマンドを使用するかもしれません.そのコ マンドは,1.44MBフロッピーを消去するために約20分かかります.
shred --verbose /dev/fd0 |
同様に,ハードディスクの選択されたパーティションの全てのデータを消去す るために,以下のようなコマンドを与えることが可能です.
shred --verbose /dev/sda5 |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |