Unison で 1 つのファイル タイプのみを同期するにはどうすればよいですか?

Unison で 1 つのファイル タイプのみを同期するにはどうすればよいですか?

フォルダーを unison と同期したいが、.jpg ファイルのみを同期したいとします。

どうすればそれができるのでしょうか?

答え1

プロフィールに次の行を追加する必要があります。

ignore = Name ?*
ignorenot = Name *.jpg

答え2

8 年後...受け入れられたファイルは、ピリオドのないファイル、つまりドットファイルを適切に無視しません。

そして、これらに一致するパターン(たとえば、Regex ^((?!.jpg).)*$)は、子として .jpg を持つ可能性のあるディレクトリも飲み込んでしまいます。(「Unison が更新を検出し始める...」の項を参照)パスを無視するマニュアルに記載されています。

私が見つけた唯一の方法は、それらの追加ファイルを含めて同期を進め、その後

find "$DEST" --type f ! -iname "*.jpg" -delete
find "$DEST" --type d -empty -delete

それらを削除し、空のディレクトリをクリーンアップします。(私の場合は、実際には

find "$DEST" --type d -empty ! -name ".stfolder" -delete

SyncThing マーカー ディレクトリを保存します (聞かないでください)。

この潜在的な悪い結果は、短時間に大量の余分なデータがコピーされることです。私の場合、約 3.5 GB が 1 つのパーティションから別のパーティションに移動し、すぐに削除されます。

関連情報