rsyncはファイルフィルタを使用して特定のフォルダを同期します(パターンごと)

rsyncはファイルフィルタを使用して特定のフォルダを同期します(パターンごと)

私は次の構造を持っています:

/src/2016/aaa1.pdf
/src/2016/aaa2.pdf
/src/2016/aaabbb1.pdf - needed
/src/2016/aaabbb2.pdf - needed
/src/2017/aaa1.pdf
/src/2017/aaa2.pdf
/src/2017/aaabbb1.pdf - needed
/src/2017/aaabbb2.pdf - needed
/src/2018/aaa1.pdf
/src/2018/aaa2.pdf
/src/junk/2016/aaa1.pdf
/src/tmp/aaabbb1.pdf
/src/anotherfolder/aaabbb2.pdf

私が望むのは、すべてのフォルダが同期モードにあることです。bbb.pdfはsrcディレクトリのフォルダパターン201 *から取得されます。 (ゴミを除く、tmpのすべてのディレクトリ...)構造を維持し、以下を取得します。

/dst/2016/aaabbb1.pdf
/dst/2016/aaabbb2.pdf
/dst/2017/aaabbb1.pdf
/dst/2017/aaabbb2.pdf

ベストアンサー1

単純なシェルglobを使用してこれらのファイルを照合し、--relative-R)フラグを使用してターゲット内のファイルパスを保持できます。

rsync -avR src/./201?/*bbb*.pdf dst/

データを使用した例の実行

rsync -avR src/./201?/*bbb* dst/
created directory dst
sending incremental file list
2016/
2016/aaabbb1.pdf
2016/aaabbb2.pdf
2017/
2017/aaabbb1.pdf
2017/aaabbb2.pdf

を使用して、何が起こるかをテストできますrsync --dry-run

おすすめ記事