ポイントファイルをバックアップするための最良の方法を見つけようとしており、そのための方法を考案しました。私は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-filter
rsyncソースディレクトリ(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
中のオプションエマ・ルーオの答えより簡単なユースケースの場合。
答え2
以下を
~/.config/ABC/
除いて、自分のファイルをバックアップしたい場合があります。~/.config/ABC/ex
rsync
- 必要なファイルとディレクトリが含まれています。
- 不要なファイルとディレクトリを除外
したがって、コマンドがで実行されると仮定すると、$HOME
次のようになります。
rsync --dry-run -avP --exclude '/ex' .config/ABC/ ABCBackup
または、下のすべてのドットファイルとディレクトリをコピーするように既存のコマンドを変更することについて話している場合$HOME
:
rsync --dry-run -avP --exclude '.config/ABC/ex/' --exclude '.dotbackup/' .??* .dotBackup
発言で判断すると「[...]バックアップしたい特定のディレクトリとファイルのリストが欲しいです。「はるかに簡単です。
ファイルのリストをファイルに入れます(たとえば$HOME/.to_backup
、含めるディレクトリ全体がある場合は、そのディレクトリの後ろにスラッシュを追加します)。すべてのパスは相対的にすることができます$HOME
。サンプルツリーを使用すると、ファイルに次のエントリが含まれます。
.bashrc
.config/nvim/
.config/code/preferences.json
次に、次のコマンドを使用します(--dry-run
期待通りに機能する場合は削除します)。
cd # Start from $HOME so relative paths in the source file work correctly
rsync --dry-run --files-from .to_backup -arvP . .dotBackup/