この記事では、Linuxでディレクトリの内容を効率的にコピーする方法について深掘りします。`cp` コマンドの基本的な使い方から、高度なオプションや、より高性能な `rsync` による方法までを取り上げ、具体的なコード例とその解説、応用例を含めています。
基本的なディレクトリのコピー方法
まずは、Linuxの基本的なコマンド`cp`を使った方法から見ていきます。
cp -r /path/to/source_directory /path/to/destination/
上記のコードは、`source_directory` の内容を `destination` にコピーします。`-r` オプションは、ディレクトリとその内容を再帰的にコピーするために使用されます。
cpコマンドのオプション
– `-r` : ディレクトリとその内容を再帰的にコピー
– `-a` : アーカイブモード、ファイルの属性やシンボリックリンクも保持
– `-u` : ソースのファイルが宛先のファイルより新しい場合のみコピー
– `-v` : 詳細モード、実行中のコピー情報を表示
`rsync`を使った高効率なコピー
次に、大量のデータや大きなディレクトリを効率的にコピーする場合に使える`rsync`について紹介します。
rsync -av /path/to/source_directory/ /path/to/destination/
`rsync`は変更されたファイルだけを転送するため、`cp`よりも高速です。特に大きなデータのバックアップやミラーリングに向いています。
`rsync`の主なオプション
– `-a` : アーカイブモード
– `-v` : 詳細モード
– `–delete` : 宛先ディレクトリの余分なファイルやディレクトリを削除
– `–exclude` : 指定したパターンに一致するファイルやディレクトリを除外
応用例
1. バックアップ時に古いファイルを削除
rsync -av --delete /path/to/source_directory/ /path/to/backup_directory/
このコマンドで、`source_directory`の内容を`backup_directory`に同期します。そして、`backup_directory`に存在して、`source_directory`に存在しない古いファイルは自動的に削除されます。
2. 特定のファイルやディレクトリを除外してコピー
rsync -av --exclude 'pattern_to_exclude*' /path/to/source_directory/ /path/to/destination/
`pattern_to_exclude*` に一致するファイルやディレクトリを除外して、コピーします。
3. ネットワーク経由でのディレクトリのコピー
rsync -av /path/to/source_directory/ user@remote_host:/path/to/destination/
このコマンドを使用すると、ローカルマシンのディレクトリをリモートマシンにコピーできます。
4. 変更されたファイルのみをコピー
rsync -avu /path/to/source_directory/ /path/to/destination/
このコマンドは、`source_directory`内の新しいまたは変更されたファイルのみを`destination`にコピーします。
まとめ
Linuxでディレクトリの内容を効率的にコピーする方法は多々あります。目的やデータの量に応じて、適切なコマンドやオプションを選択することで、作業の効率を大きく向上させることができます。
コメント