rsyncソースファイルを最後のパラメータとして定義します。

rsyncソースファイルを最後のパラメータとして定義します。

私がfind定義するために使用すると仮定源泉ファイル操作の場合は、rsync次の2つのコマンドでのみ知られている特殊機能を使用します。

find /path/to/data -mtime -7 -mtime +5 -exec rsync -aAXu {} /path/to/dest \; 

ただし、この場合はasと+一緒に使用することはできません。-execrsync目的地最後の主張に。

これは、パラメータリストを作成して最小回数だけを呼び出すのrsyncではなく、一致する各ファイルが一度呼び出されることを意味します。rsync

xargsフラグが必要なため、同じ問題が発生します。-Iこれは-L 1

ドキュメントにはこの--destination-dir=destオプションは表示されないようです。

rsyncソースファイルのリストから-build-upコマンドを生成する簡単な方法はありますか?

たぶんこれはXYの問題であり、他のコマンドがより適切ですか?

答え1

rsyncに電話する-exec代わりに、sh -c以下を呼び出します。

find ... -exec sh -c 'rsync ... "$@" /path/to/dest' sh {} +

これは、単に目的の方法で呼び出され、渡された現在のバッチで見つかったパス名であるsh -cインラインスクリプトを使用して呼び出されます。rsync"$@"find

末尾は、インラインスクリプトにsh配置されるランダムな文字列です。それ以外の場合は、見つかった最初のパス名がに配置されていない$0ため、これが必要です。の値は現在のシェルの名前でなければならず、シェルによって生成されたすべての診断メッセージに使用されます。$0"$@"$0

関連情報