rsync除外パターンを明示的なファイルリストに変換する

rsync除外パターンを明示的なファイルリストに変換する

rsync合理的なバックアップのために維持する長い除外パターンのリストを明示的なファイル名とディレクトリ名のリストに変換する方法があるかどうかを確認します。

アプリケーションは、他のアプリケーションに同じリストを使用したい場所です(パターンを追加または削除して更新するたびに)(mksquashfs)。どちらのツールも、1行に1つのエントリを含む明示的なファイルのリストを除外リストとして指定できますが、パターン構文は詳細に異なります。

変換するリストは、ワイルドカードを含むrsync。で許可されているすべてのタイプのパターンで構成されていると想定できます。

2つのアプローチを考えることができます。

  1. rsyncフックの下で何が使用されているかを調べてください(単純なシェルグローブではないようですfind)。
  2. rsync詳細な出力でダミー転送を実行してリストを生成するために使用されます--dry-run(ここでは除外されたファイルの名前を印刷する方法がわかりません)。

ベストアンサー1

次のようになります。ここでは、"${other_opts[@]}"一般的なrsyncパラメータを表します。

rsync --dry-run --debug=FILTER  "${other_opts[@]}" /proc/$$/no-such-dir/

除外されたすべてのファイルを印刷する必要があります。

[sender] hiding file .bash_history-27611.tmp because of pattern *.tmp
[sender] hiding file .bash_history-21217.tmp because of pattern *.tmp
[sender] hiding file .bash_history-29735.tmp because of pattern *.tmp
[sender] hiding file .bash_history-20437.tmp because of pattern *.tmp

sedを使って切り取ることができます。

sed '/^\[sender\] hiding file .* because of / {
  s/^\[sender\] hiding file \(.*\) because of .*/\1/
  p
  }
d '

ただし、制御文字を含むファイル名が見つかると、この問題が発生する可能性があります。

おすすめ記事