複数のソースを同期したいと思い、これを達成するための最良の方法を知りたいです。
例えば
/etc/fstab
/home/user/download
私は3つの解決策を考えました。
- ソリューション1
rsyncを複数回呼び出す
rsync -a /etc/fstab bkp
rsync -a /home/user/download bkp
欠点:集計統計を取得するのは難しいです。
- ソリューション2
tobackup
シンボリックリンクを含むフォルダを作成し、-L
オプションを使用します。
sync -aL /home/user/tobackup bkp
欠点:バックアップするコンテンツにはシンボリックリンクを含めないでください。
- 解決策3
ファイルをバックアップに移動し、元の場所にシンボリックリンクを作成する
rsync -a /home/user/tobackup bkp
欠点:いくつかの手動設定
どちらをお勧めしますか?
もっと良い方法がありますか?
ベストアンサー1
複数のソースパラメータを渡すことができます。
rsync -a /etc/fstab /home/user/download bkp
これにより、ユーザーが提供した別のコマンドと同様に、およびbkp/fstab
が作成されます。bkp/download
代わりに、ソース構造を保存する必要があります。これを行うには、/
ソースとして使用して使用します。含める - 除外ルールコピーするファイルを指定します。これを行う方法は2つあります。
ディレクトリツリー全体をコピーするには、各ファイルとそのファイルにつながる各ディレクトリコンポーネントを明示的に含め、ディレクトリの末尾に
/***
次を追加します。rsync -a \ --include=/etc --include=/etc/fstab \ --include=/home --include=/home/user --include='/home/user/download/***' \ --exclude='*' / bkp
/*/
/etc
すべての最上位ディレクトリを含めるには(コピーするファイルを探すときにrsyncが巡回するように)を使用し、2番目のレベルのすべてのディレクトリを/home
含めるには(for)を使用しますが、ファイルをコピーしないディレクトリを削除します。これは、親を明示的にリストする必要がないため、より便利です。レベル数を計算する代わりに使用することもできますが、rsyncはファイルシステム全体をナビゲートしてディレクトリをナビゲートするため、ここでは実用的ではありません。包含規則がおよび外部の項目と一致できない場合でも同様です。/*/*/
/home/user
--prune-empty-dirs --include='*/'
/etc
/home/user/download
rsync -a --prune-empty-dirs \ --include='/*/' --include='/*/*/' \ --include=/etc/fstab \ --include='/home/user/download/***' \ --exclude='*' / bkp