この記事では、Linuxでディレクトリの内容を別のディレクトリに同期する方法について詳しく解説します。`rsync`や`cp`コマンドを使用した基本的な手法から、シェルスクリプトを用いた高度な同期処理まで、具体的なコード例とその解説、応用例を含めています。
目次
同期処理の必要性
ディレクトリの内容を同期することは、バックアップ作成やデータ移行、複数のマシンで作業を共有する際に非常に重要です。Linuxにはこのような同期処理を効率的に行うための様々なコマンドやツールが存在します。
基本的な手法:rsyncコマンド
`rsync`はリモートとローカルのデータ同期が可能な強力なコマンドです。基本的な使い方は以下の通りです。
# ディレクトリ dir1 の内容を dir2 に同期する
rsync -av dir1/ dir2/ # 末尾のスラッシュに注意
このコマンドにはいくつかのオプションがありますが、一般的によく使用されるのは `-a`(アーカイブモード)と `-v`(冗長モード)です。
rsyncのオプション
– `-a`: メタデータ、シンボリックリンク、パーミッション、タイムスタンプ等を保持してコピーします。
– `-v`: 処理内容を冗長に出力します。
cpコマンドを用いた同期
`cp`コマンドでも基本的なディレクトリ同期が可能です。例えば:
# dir1 の内容を dir2 にコピー
cp -r dir1/* dir2/
cpのオプション
– `-r`: ディレクトリを再帰的にコピーします。
高度な同期:シェルスクリプト
より複雑な同期処理のために、シェルスクリプトを利用することもあります。以下は簡単な例です。
#!/bin/bash
# sync.sh: dir1 と dir2 を同期するスクリプト
rsync -av dir1/ dir2/
応用例
1. タイムスタンプを用いたインクリメンタルバックアップ
rsync -av --link-dest=../backup.prev dir1/ backup/
2. SSHを介したリモート同期
rsync -av -e ssh dir1/ username@remote_host:dir2/
3. 除外パターンを指定する
rsync -av --exclude '.*' dir1/ dir2/ # 隠しファイルを除外
4. ディレクトリの比較
diff -r dir1/ dir2/ # ディレクトリの差分を表示
まとめ
Linuxにおいてディレクトリの内容を別のディレクトリに同期する方法は多く、`rsync`や`cp`コマンド、さらにはシェルスクリプトを使った高度な同期処理が可能です。状況や要件に応じて最適な手法を選ぶことが重要です。
コメント