rsyncを使用してすべての* .jarファイルを強制的に一致させる方法は?

rsyncを使用してすべての* .jarファイルを強制的に一致させる方法は?

多くのファイルを含むディレクトリがあります。私が興味を持っている唯一のものは、拡張子が.である.jarファイルです。ただし、そのディレクトリには別のファイルがあります。

ソースディレクトリがありますただ .jar文書。私は次のことを達成したいと思います:

rm destdir/*.jar
cp sourcedir/*.jar destdir

しかし、実際にはそうでなければいいのです。削除するすでに存在するファイル(すでに正しいファイルの場合)


つまり、次のコマンドを実行できるようにしたいと思います。

  1. .jarに存在するsourcedirが存在しないファイルの場合は、destdirそのファイルをコピーしてください。
  2. とのファイルの場合は、の.jarコピーがのコピーと一致することを確認し、一致しない場合は上書きします。sourcedirdestdirdestdirsourcedir
  3. .jar存在するすべてdestdirについていいえsourcedir、ファイルを削除してください。
  4. その中の他のファイルdestdir(拡張子なし).jarは無視してください。削除または変更しないでください。

それ〜らしい渡す必要がありますrsync。どうすればいいですか?

答え1

あなたはそれを使用することができます:

rsync -av --include='*.jar' --exclude='*' --delete \
    sourcedir/ destdir/

このオプションは、リンクやタイムスタンプなどのアイテムを保存するアーカイブモードです(完全な手順については-aページを参照)。manこれは-v詳細情報を提供するためのものです。ログに興味がない場合は削除してください。

これは最初の3つのオプションを処理する必要があります。この--deleteオプションは、除外されたファイルを無視しながら4番目の要件を満たします。

.jarファイルを含むディレクトリを含めるには、次のものを使用できます。

rsync -av --include='*.jar' --include='*/' --exclude='*' --delete \
    sourcedir/ destdir/

ここにある回答に基づいて追加の質問がある場合は役立ちます。Rsyncフィルタ:1つのパターンのみをコピー

関連情報