複数のワイルドカードを使用した再同期

複数のワイルドカードを使用した再同期

リモートサーバーで複数の種類のファイルをすべて同期する方法は?たとえば、サーバーのフォルダにあるすべてのpdfとpngを同期させたいとします。

構文エラーが発生します。rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

私も試してみましたが、 rsync --include='*.png' --include='*.pdf' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH何も同期されません(exclude前にある場合でも同じ)。

私は現在助けを探していますが、 rsync REMOTE_SERVER:REMOTE_PATH/*.pdf LOCAL_PATH; rsync REMOTE_SERVER:REMOTE_PATH/*.png LOCAL_PATH単一のコマンドでこれを実行したいと思います。

答え1

努力する:

rsync -av --include='*.pdf' --include='*.png' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH

入れ子になったディレクトリ構造を使用している場合は、次のものを使用できます。

rsync -av --include='*/' --include='*.pdf' --include='*.png' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH

関連ファイル形式を含め、他のすべての形式を除外するために除外と埋め込みを使用しました。

お役に立てば幸い

答え2

何が起こるのか見てみましょう。私はあなたが中bashかっこ拡張を理解する別のシェルを使用していると仮定します。

rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

この接頭辞を付けると、中echoかっこが拡張されないことがわかります。

echo rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH
rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

そして、rsync3つのパラメータREMOTE_SERVER:REMOTE_PATH/{*.pdf,*.png}およびを確認してくださいLOCAL_PATH

もともと問題は、校正器内部に空間があって構造が壊れたということでした。これがより正確です:

echo rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf,*.png} LOCAL_PATH

rsync次の3つのパラメータを確認してくださいREMOTE_SERVER:REMOTE_PATH/*.pdfREMOTE_SERVER:REMOTE_PATH/*.png LOCAL_PATH

これにより、指定されたリモートディレクトリ内のすべてのPDFファイルとPNGファイルがローカルターゲットにコピーされます。ただし、rsyncファイル変更時間(--times、、、または)が含まれていないため、最適化されていません-t

rsync --times REMOTE_SERVER:REMOTE_PATH/{*.pdf,*.png} LOCAL_PATH

ルートツリーからすべてのPDFファイルとPNGファイルをコピーするには、REMOTE_PATHまったく異なるアプローチが必要です。

rsync --recursive --times --include '*.pdf' --include '*.png' --include '**/' --exclude '*' --prune‐empty‐dirs REMOTE_SERVER:REMOTE_PATH LOCAL_PATH

関連情報