特定のファイルとディレクトリにrsyncを使用する

特定のファイルとディレクトリにrsyncを使用する

ポイントファイルをバックアップするための最良の方法を見つけようとしており、そのための方法を考案しました。私はgitとrsyncを使ってすべてのドットファイルをバックアップします。 rsyncスクリプトは次のようになります。

rsync -avhP $HOME/.??* --exclude-from=$HOME/.dotBackup/exclusions.list $HOME/.dotBackup

しかし、私はこれが最善のアプローチではないと思います。exclude-from私はargを使ってファイルを除外したくないので、別の方法でバックアップしたい特定のディレクトリとファイルのリストが欲しいです。ここでは状況が少しあいまいになります。たとえば、~ディレクトリが~次のようないくつかのファイルをバックアップしたいとします。

~
|- Downloads (do not back up)
|- .bashrc (back up)
|- .config
     |- nvim (back up including subdirectories)
     |- code
          |- extensions (do not back up)
          |- preferences.json (back up)

rsyncを使ってこのようなことをするにはどうすればよいですか?

ベストアンサー1

以下は、rsyncフィルタファイルを使用する例です。--filter='dir-merge /.rsync-filter'オプションで使用するか、単に-F

次の内容を含むファイルを.rsync-filterrsyncソースディレクトリ(yours)に配置します。$HOME

# include .bashrc
+ /.bashrc

# include .config dir (parent of nvim and code)
+ /.config/

# exclude (overrides nvim include below)
- /.config/nvim/but_not_this_dir/

# include nvim dir and everything in this directory
+ /.config/nvim/***

# include code dir and preferences.json
+ /.config/code/
+ /.config/code/preferences.json

# exclude everything in the source dir
- *

ソースディレクトリ内のすべてのエントリの除外を使用しているため、親ディレクトリを含む含める- *すべてのディレクトリをソースディレクトリに手動で追加する必要があります。を含めるfoo/bar/が含めない場合は、上書きを追加する必要がfoo/abc/あります。これらの包含の上書きは、これらの包含の前に追加する必要があります。+ /foo/- *+ /foo/bar/

テスト実行オプションでコマンドをテストし-nて出力を確認し、追加してフィルタが表示または非表示になる-vvファイル/ディレクトリを確認します。

修正されたコマンドは次のとおりです。

rsync -avFhp ~/ ~/.dotBackup

多くのカバレッジが必要な場合(このディレクトリとそのディレクトリを同期しますが、この/ fooとその/ bar / bazを除く)は、このようなフィルタを使用するのが合理的です。使用--files-from中のオプションエマ・ルーオの答えより簡単なユースケースの場合。

おすすめ記事