Linuxでディレクトリを他のディレクトリと同期させるための方法はいくつかありますが、この記事では特に効率的な手法とその応用例に焦点を当てて解説します。具体的なコード例とその詳細な解説、さらには実用的な応用例も含めています。
目次
同期とは?
同期(Synchronization)とは、一つのディレクトリの内容を別のディレクトリと一致させることを指します。バックアップ、データの移行、ミラーリングなど、多くの用途で利用されます。
基本的な同期手法
Linuxにおいては主に`rsync`と`cp`コマンドが用いられます。それぞれの特徴と基本的な使用法を解説します。
rsyncコマンド
`rsync`はリモートとローカルのファイルを高速にコピー・同期するためのコマンドです。差分のみをコピーするため、効率が良いです。
# ディレクトリ dir1 の内容を dir2 に同期する
rsync -av dir1/ dir2/
オプションについて
– `-a`: アーカイブモード(再帰的にコピー、シンボリックリンクやパーミッションも保持)
– `-v`: 冗長モード(何が行われているかを表示)
cpコマンド
`cp`コマンドは単純にファイルやディレクトリをコピーするための基本的なコマンドです。
# ディレクトリ dir1 の内容を dir2 にコピーする
cp -r dir1/ dir2/
オプションについて
– `-r`: 再帰的にディレクトリをコピー
応用例
同期手法をさらに活かすための応用例を4つ紹介します。
定期的なバックアップ
`cron`を用いて定期的にディレクトリを同期します。
# crontabに追加(毎日0時に同期)
0 0 * * * rsync -av /path/to/source/ /path/to/destination/
リモートマシンとの同期
SSH経由でリモートマシンとディレクトリを同期します。
# リモートマシンのディレクトリをローカルに同期
rsync -av user@remote:/path/to/source/ /path/to/destination/
バージョン管理
`–backup`オプションでバックアップを取りながら同期します。
# バックアップを取りながら同期
rsync -av --backup --suffix=.bak dir1/ dir2/
除外設定
特定のファイルやディレクトリを同期から除外します。
# .git ディレクトリを除外して同期
rsync -av --exclude '.git/' dir1/ dir2/
まとめ
Linuxでディレクトリを他のディレクトリと同期させるための方法として、`rsync`と`cp`コマンドの基本的な使い方と応用例を解説しました。特に`rsync`は多機能で効率的なため、多くのケースで優れた選択肢となるでしょう。
コメント