この記事では、Linux環境でディレクトリの階層を指定してコピーする方法について詳しく解説します。`cp`コマンドと`rsync`コマンドを用いた基本的な方法から、スクリプトを用いた自動化まで、具体的なコード例とその解説、応用例を含めています。
目次
基本概念: cpコマンドとrsyncコマンド
Linuxでは、`cp`コマンドと`rsync`コマンドがディレクトリやファイルのコピーに広く用いられます。特に、`rsync`はリモートサーバとのデータの同期にも使える高機能なコマンドです。
cpコマンドの基本構文
cp [オプション] [ソース] [デスティネーション]
rsyncコマンドの基本構文
rsync [オプション] [ソース] [デスティネーション]
ディレクトリ階層を指定してコピーする基本的な方法
cpコマンドを使用する方法
`cp`コマンドに`-R`オプションをつけると、ディレクトリ内のファイルやサブディレクトリを再帰的にコピーできます。
cp -R /path/to/source /path/to/destination # ディレクトリとその内容を再帰的にコピー
rsyncコマンドを使用する方法
`rsync`コマンドに`-a`オプションを使用すると、ディレクトリ、ファイル属性、シンボリックリンクなどを維持したままコピーできます。
rsync -a /path/to/source/ /path/to/destination/ # 属性を保持しながらディレクトリをコピー
応用例
例1: ファイルタイプでフィルタリングしながらコピー
`rsync`コマンドの`–include`と`–exclude`オプションを使用すると、特定のファイルタイプだけをコピーすることができます。
rsync -a --include='*.txt' --exclude='*' /path/to/source/ /path/to/destination/ # .txtファイルのみをコピー
例2: ディレクトリの深さを指定してコピー
`find`コマンドと`cp`コマンドを組み合わせることで、特定の深さのディレクトリまでコピーすることが可能です。
find /path/to/source -maxdepth 2 -exec cp -R {} /path/to/destination/ \; # 階層が2以下のディレクトリをコピー
例3: データの同期
リモートサーバとのデータの同期にも`rsync`は有用です。
rsync -a /path/to/source/ user@remote:/path/to/destination/ # リモートサーバにデータを同期
例4: スクリプトで自動化
シェルスクリプトを使用して、定期的なバックアップを自動化することが可能です。
#!/bin/bash
rsync -a /path/to/source/ /path/to/backup/
まとめ
Linuxでディレクトリの階層を指定してコピーする方法は多数存在します。基本的な`cp`と`rsync`コマンドの使い方から、応用例までを理解することで、日常の作業が格段に効率化するでしょう。
コメント