はじめに
Linux ファイルシステムは、ファイルやディレクトリを管理するための強力なツールを提供します。定期的に使用する最も重要なコマンドの 1 つは cp コマンドで、ファイルやディレクトリをある場所から別の場所にコピーできます。
この実験(Lab)では、cp コマンドを使用して、個々のファイルや複数のファイルを一度にコピーする方法を学びます。この基本的なスキルは、データのバックアップ、ファイルシステムの整理、Linux 環境の効果的な管理に不可欠です。
この実験(Lab)を終える頃には、さまざまなオプションを指定して cp コマンドを自信を持って使用し、ファイルのコピーニーズを満たすことができるようになります。
ディレクトリとファイルの作成
ファイルのコピーを練習する前に、操作するディレクトリとファイルを作成する必要があります。このステップでは、ディレクトリ構造といくつかのサンプルファイルを作成します。
まず、作業するプロジェクトディレクトリに移動します。
cd ~/project
次に、サンプルファイルを含む data-files というディレクトリを作成しましょう。
mkdir data-files
このコマンドを実行しても何も出力されないはずです。これは、多くの Linux コマンドが正常に実行された場合の通常の動作です。
次に、この新しいディレクトリに移動しましょう。
cd data-files
次に、コピーの練習に使用する 3 つの空のテキストファイルを作成しましょう。
touch apple.txt orange.txt grape.txt
touch コマンドは、ファイルが存在しない場合は空のファイルを作成し、既に存在する場合は更新日時を更新します。
現在のディレクトリの内容を一覧表示して、ファイルが正しく作成されたことを確認しましょう。
ls -l
次のような出力が表示されるはずです。
total 0
-rw-r--r-- 1 labex labex 0 [date] apple.txt
-rw-r--r-- 1 labex labex 0 [date] grape.txt
-rw-r--r-- 1 labex labex 0 [date] orange.txt
この出力は、3 つの空のファイルが正常に作成されたことを示しています(ファイルサイズは 0 バイト)。
この時点で、ディレクトリ構造は次のようになります。
~/project/
└── data-files/
├── apple.txt
├── orange.txt
└── grape.txt
次のステップでは、これらのファイルを操作し、さまざまな場所にコピーする方法を学びます。
単一ファイルのコピー
このステップでは、cp コマンドを使用して、単一のファイルをある場所から別の場所にコピーする方法を学びます。
cp コマンドの基本的な構文は次のとおりです。
cp [options] source_file destination
ここで:
source_fileはコピーするファイルですdestinationはファイルのコピー先です(ディレクトリまたは新しいファイル名を指定できます)
現在、data-files ディレクトリにいます。 apple.txt ファイルにコンテンツを追加して、コンテンツが正しくコピーされることを確認しましょう。
echo "This is sample content for the apple file." > apple.txt
> 記号は、echo コマンドの出力をファイルにリダイレクトし、既存のコンテンツを上書きします。
次に、apple.txt ファイルを親ディレクトリ(~/project)に新しい名前でコピーしましょう。
cp apple.txt ../apple_copy.txt
このコマンドを分解すると:
cpはコピーコマンドですapple.txtはコピーするソースファイルです../apple_copy.txtは、親ディレクトリ(..)に新しいファイル名apple_copy.txtでコピーすることを指定します
ファイルが正しくコピーされたことを、その内容を確認して検証しましょう。
cat ../apple_copy.txt
次の出力が表示されるはずです。
This is sample content for the apple file.
これは、ファイルがコンテンツをそのまま正常にコピーされたことを確認します。
この操作後、ディレクトリ構造は次のようになります。
~/project/
├── data-files/
│ ├── apple.txt
│ ├── orange.txt
│ └── grape.txt
└── apple_copy.txt
複数のファイルを一度にコピー
このステップでは、複数のファイルを一度に新しいディレクトリにコピーする方法を学びます。これは、複数のファイルを同時にバックアップまたは整理する必要がある場合に特に役立ちます。
まず、プロジェクトディレクトリに戻りましょう(現在は data-files ディレクトリにいます)。
cd ~/project
次に、ファイルをコピーする新しいディレクトリ backup を作成しましょう。
mkdir backup
ファイルをコピーする前に、残りのテキストファイルにコンテンツを追加して、コピープロセスをより適切に検証できるようにしましょう。
echo "This is sample content for the orange file." > data-files/orange.txt
echo "This is sample content for the grape file." > data-files/grape.txt
次に、ワイルドカードパターンを使用して、data-files ディレクトリから backup ディレクトリにすべてのテキストファイルをコピーしましょう。
cp data-files/*.txt backup/
このコマンドでは:
cpはコピーコマンドですdata-files/*.txtは、ワイルドカード*を使用して、data-filesディレクトリ内の拡張子が.txtのすべてのファイルに一致させますbackup/は、ファイルをコピーする宛先ディレクトリです
すべてのファイルが正しくコピーされたことを、backup ディレクトリの内容を一覧表示して検証しましょう。
ls -l backup/
次のような出力が表示されるはずです。
total 12
-rw-r--r-- 1 labex labex 41 [date] apple.txt
-rw-r--r-- 1 labex labex 41 [date] grape.txt
-rw-r--r-- 1 labex labex 42 [date] orange.txt
また、コピーされたファイルの 1 つの内容をチェックして、データが正しくコピーされたことを確認しましょう。
cat backup/orange.txt
次のように表示されるはずです。
This is sample content for the orange file.
これにより、すべてのファイルがコンテンツをそのままバックアップディレクトリに正常にコピーされたことが確認されます。
この操作後、ディレクトリ構造は次のようになります。
~/project/
├── data-files/
│ ├── apple.txt
│ ├── orange.txt
│ └── grape.txt
├── backup/
│ ├── apple.txt
│ ├── orange.txt
│ └── grape.txt
└── apple_copy.txt
高度なファイルコピーオプション
このステップでは、ファイルコピーのタスクをより効率的にする cp コマンドの便利なオプションについて学びます。
まず、プロジェクトディレクトリに戻りましょう。
cd ~/project
-p によるファイル属性の保持
ファイルをコピーするときに、タイムスタンプ、所有権、権限など、元のファイルの属性を保持したい場合があります。 -p オプションを使用すると、これを行うことができます。
cp -p data-files/apple.txt backup/apple_preserved.txt
元のファイルと保持されたコピーを比較してみましょう。
ls -l data-files/apple.txt backup/apple.txt backup/apple_preserved.txt
backup/apple_preserved.txt は元のファイルと同じタイムスタンプを持っているのに対し、-p オプションなしで以前にコピーした backup/apple.txt は新しいタイムスタンプを持っていることに気付くでしょう。
-r による再帰的なコピーの作成
ディレクトリをその内容とともにコピーするには、-r(再帰的)オプションを使用する必要があります。これを実証するために、ネストされたディレクトリ構造を作成しましょう。
mkdir -p data-files/nested/deep
echo "This is a nested file." > data-files/nested/nested_file.txt
echo "This is a deep nested file." > data-files/nested/deep/deep_file.txt
次に、data-files ディレクトリ全体とその内容を新しい場所にコピーしましょう。
cp -r data-files data-files-backup
ディレクトリ構造とファイルが正しくコピーされたことを確認しましょう。
find data-files-backup -type f | sort
コピーされたディレクトリ構造内のすべてのファイルが一覧表示された出力が表示されるはずです。
data-files-backup/apple.txt
data-files-backup/grape.txt
data-files-backup/nested/deep/deep_file.txt
data-files-backup/nested/nested_file.txt
data-files-backup/orange.txt
-i によるインタラクティブモード
ファイルをコピーするときに、既存のファイルを誤って上書きしてしまう可能性があります。 -i(インタラクティブ)オプションは、ファイルを上書きする前にプロンプトを表示します。
cp -i data-files/apple.txt backup/apple.txt
backup/apple.txt は既に存在するため、上書きするかどうかを確認するプロンプトが表示されます。
cp: overwrite 'backup/apple.txt'?
y で上書きするか、n でキャンセルすることができます。
これらの高度なオプションにより、cp コマンドはファイル管理のニーズに対してさらに強力で柔軟になります。
まとめ
この実験(Lab)では、Linux の cp コマンドを使用して、ファイルとディレクトリを効率的にコピーする方法を学びました。ディレクトリとファイルを作成する基本から始め、個々のファイルや複数のファイルを一度にコピーする方法に進みました。
取り上げた主な概念:
基本的なファイルコピー:
cpコマンドを使用して、単一のファイルをある場所から別の場所にコピーします。cp source_file destination複数のファイルのコピー: ワイルドカードを使用して、複数のファイルを 1 つのコマンドでコピーします。
cp source_directory/*.txt destination_directory/高度なオプション:
-p: ファイル属性(タイムスタンプ、権限など)の保持-r: ディレクトリとその内容を再帰的にコピー-i: 誤った上書きを防ぐためのインタラクティブモード
これらのファイルコピーのスキルは、Linux での効果的なファイル管理の基本です。重要なファイルのバックアップ、ディレクトリの整理、アプリケーションのデプロイなど、cp コマンドは Linux ツールキットに不可欠なツールになります。
Linux コマンドラインは、ファイル操作のための多くの強力なツールを提供しており、cp コマンドはそのうちの 1 つにすぎないことを忘れないでください。Linux の学習を続けるにつれて、これらのツールを組み合わせて複雑なファイル操作を効率的に実行する方法を発見するでしょう。



