複数のソースを rsync したいのですが、それを実現する最善の方法が知りたいです。
例えば
/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
ですべてのトップレベルディレクトリを含めます(rsyncがコピーするファイルを探すときにと を
/*/
走査するように)。 で第 2 レベルのディレクトリを含めます( の場合)。ただし、ファイルがコピーされないディレクトリは除外します。親を明示的にリストする必要がないため、この方が便利です。レベル数をカウントする代わりに を使用することもできますが、ここでは実用的ではありません。なぜなら、どのインクルードルールも との外側に一致しないにもかかわらず、rsync はディレクトリを探索するためにファイルシステム全体を走査するからです。/etc
/home
/*/*/
/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
答え2
私は Gilles の回答に非常に満足していますが、私の見解では、ディレクトリ構造を維持しながら複数のフォルダーを同期するという要件は、オプションと組み合わせて複数のソース引数を渡すことによって最もよく満たされるということを付け加えておきたいと思います--relative
。
この場合、次のようになります。
rsync -aR /etc/fstab /home/user/download bkp
その結果、bkp/etc/fstab
および が生まれますbkp/home/user/download
。
これの最も優れた点は、(rsync v. 2.6.7以降だと思いますが)宛先に複製するディレクトリ構造の量を本質的に制御できることです。 (オプション
のドキュメントを参照してください。--relative
ここ)
例えばこれをやると
rsync -aR /home/./user1/download /home/./user2/download bkp
bkp/user1/download
最終的にはおよびになりますbkp/user2/download
。
答え3
これも機能します - 中括弧で囲まれた、ソースのコンマ区切りリストが含まれます。
rsync -vap --progress --stats root@server:{/etc,/root/backups,/home/ultralazer} /mnt/bigdrive
これは、cp やその他の特定のユーティリティを使用して中括弧構文を呼び出したときに発生するものと多少似ています。
cp -vr /etc /root/backups /home/{ultralazer,zerocool} /mnt/bigdrive