複数のソースフォルダを再同期する方法

複数のソースフォルダを再同期する方法

複数のソースを同期したいと思い、これを達成するための最良の方法を知りたいです。

例えば

/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
    

おすすめ記事