ファイルやディレクトリのコピーは、どのオペレーティング・システムでも基本的なコマンドです。バックアップという行為は、基本的にファイルとディレクトリのコピーを作成することです。Linuxでは、cpコマンドでこれを行うことができます。
コピーコマンドとは何ですか?
前述したように、cpはファイルやディレクトリのコピーを作成するためのコマンドです。日常的な操作で使われるcpコマンドの例をいくつか示します。
1.引数なしでcpを実行します。
これがcpコマンドの最も基本的な使い方です。 myfile.txtという名前のファイルをある場所から別の場所にコピーするには、次のように入力します:
$ cp myfile.txt /home/pungki/office
絶対パスが入力されていない場合は、カレントディレクトリからファイルがコピーされることを意味します。上の例では、myfile.txt は /home/pungki/Documents ディレクトリにあります。カレントディレクトリが/home/pungki/Documetsの場合、ファイルをコピーするために/home/pungki/Documents/myfile.txtと入力する必要はありません。home/pungki/officeがディレクトリの場合、ファイルはその中にコピーされます。
2.複数ファイルの同時コピー
複数のファイルを同時にコピーするには、ファイルをスペースで区切ります。以下はその例です:
$ cp file_1.txt file_2.txt file_3.txt /home/pungki/office
3.カタログのコピー
ディレクトリをコピーするのは少し難しいかもしれません。これを行うには、-r または -R オプションを追加する必要があります。rまたは-Rオプションは再帰的な操作を示します。このオプションは、ディレクトリが空であるかどうかにかかわらず必要です。以下に例を示します:
$ cp -r directory_1 /home/pungki/office
注意点として、ディレクトリ名の最後にあるスラッシュを削除する必要があります。そうしないと、cp: omitting directory 'directory_1/' のようなエラーメッセージが表示されます。
エラーメッセージが表示された場合、ディレクトリはコピー先フォルダにコピーされません。
4.ドキュメントをコピーするのではなく、ハードリンクを作成します。
ファイルをコピーするということは、コピーしたファイルを保存するためにいくらかのストレージスペースを使わなければならないということです。何らかの理由で、ファイルをコピーする代わりに「ショートカット」やファイルへのリンクを作成したい場合があります。これを行うには、-l オプションを使用します。
$ cp -l file_4.txt /home/pungki/office
上の図から、file_4.txtのハードリンクは/home/pungki/office/file_4.txtにコピーされていることがわかります。以下に例を示します。
元のディレクトリdirectory_1のinode値は872230です。
directory_1でcpコマンドを実行
コピーされたdirectory_1コピーのinode値は472800です。
5.ドキュメントへのシンボリックリンクの作成
ソフトリンクやシンボリックリンクと呼ばれるタイプのリンクもあります。これは -s オプションで行います。以下はコマンドの例です。
$ cp -s /home/pungki/Documents/file_6.txt file_6.txt
[訳注:シンボリックリンクファイルだけをコピーするという意味です。]
これは -P オプションで実行できます。シンボリックリンクにcpコマンドを使うと、そのままコピーされます。次の例を見てください。
$ cp -P file_6.txt ./movie
ご覧のように、cpコマンドはfile_6.txtそのものをそのままコピーします。ファイルタイプはシンボリックリンクのままです。
次に-Lオプションを試してください。基本的には、上記の-Pオプションの逆です。以下はその例です:
$ cp -L file_6.txt ./movie
8.文書のアーカイブ
$ cp -a directory_1/ /home/pungki/office
上記のコマンドは、directory1というディレクトリを/home/pungki/officeディレクトリにコピーします。見ての通り、**file6.txt**はシンボリックリンクとしてコピーされたままです。
9.何が行われているかを示すこと
デフォルトでは、コピージョブが成功すると、単にコマンド・プロンプトが再び表示されます。ファイルをコピーしたときに何が起こるかを見たい場合は、-v オプションを使用できます。
$ cp -v *.txt /home/pungki/office
すべてのtxtファイルをカレントディレクトリから/home/pungki/officeディレクトリにコピーする場合、-vオプションは操作中のプロセスを表示します。この追加情報は、コピー処理についてより深く理解するのに役立ちます。
これには -u オプションを使います。以下に具体例を示します。
$ cp -vu *.txt /home/pungki/office
最初、file_1.txtのサイズが0バイトであることがわかりました。次にviで編集し、内容を追加して保存します。次に、ファイルサイズが36バイトに変わっているのがわかります。 同時に、/home/pungki/officeディレクトリにはすでにすべてのtxtファイルが格納されています。uオプションと-vオプションを併用すると、cpコマンドはコピー先のディレクトリより新しいファイルだけをコピーします。したがって、file_1.txtだけが/home/pungki/officeディレクトリにコピーされていることがわかります。
11.インタラクティブモデルの使用
対話型モードでは、ターゲット・ディレクトリのファイルを上書きするかどうかを尋ねます。対話型モードを有効にするには、-i オプションを使用します。
$ cp -ir directory_1/ /home/pungki/office/
12.バックアップファイルの作成
デフォルトでは、cpコマンドは、ターゲット・ディレクトリに同名のファイルがすでに存在する場合、そのファイルを上書きします。backup オプションを指定すると、cp コマンドは既存の各ファイルのバックアップを作成します。/home/pungki/officeの代わりに/officeを指定します。以下はその例です:
$ cp --backup=simple -v *.txt ../office
ご覧のように、-backup=simpleオプションは、ファイル名の最後に波線文字が付いたバックアップ・ファイルを作成します。-backupオプションには他にもいくつかの制御があります:
- none, off:ネバーバックアップ
- numbered, t:番号でバックアップ
- existing, nil :番号付きバックアップが存在する場合はそれを使用し、そうでない場合は単純なバックアップを使用します。
- シンプル、ネバー:常にシンプルなバックアップを使用
13.コピー専用ファイル属性
cpコマンドには--attributes-onlyというオプションもあります。名前が示すように、このオプションはファイル名とその属性のみをコピーし、データはコピーしません。以下に例を示します:
$ cp --attributes-only file_6.txt -v ../office
14.強制コピー
fオプションはコピー操作を強制します。ターゲット・ファイルが開けない場合は、-f を付けてみてください。
$ cp -f *.txt -v ../office
15.コピー前のターゲット削除
これは--remove-destinationオプションで実現できます。このオプションは、上記の--fオプションとは対照的です。cpコマンドは、コピー先のディレクトリに同じ名前のファイルを見つけると、コピー先のファイルを削除して新しいコピーを作成します。以下はその例です:
$ cp --remove-destination *.txt -v ../office
概要
cpコマンドはLinuxで最も基本的なコマンドの1つです。Linuxを学びたい人にとって、このコマンドは必須です。もちろん、ターミナルでman cpやcp --helpと入力すれば、より詳しいヘルプが表示されます。
via:




