1. 概要

Linux rsync コマンドラインユーティリティを使用すると、ディスク上のファイルをコピーおよび削除できます。 このチュートリアルでは、特定の種類のファイルのみをコピーできるオプションをコマンドに提供する方法を説明します。

2. rsync

通常、はrsyncを使用して、Linuxファイルシステムのソースディレクトリと宛先ディレクトリを同期します。 これらのディレクトリは、ホストに対してローカルであるか、リモートホスト上にあります。

最終的に、同等性を実現するために、コマンドは、実行方法に応じて、必要な各ファイルの一部のみをある場所から次の場所にコピーします。 このため、 rsync は、最小限のデータしか移動しないため、ファイルを転送するための推奨される方法であることがよくあります。 その結果、これにより、リモートホストへのファイルのコピーが非常に高速になります。

3. includeオプションの使用

rsync によって転送されるファイルを制限したい場合は、includeコマンドラインオプションを利用できます。 その名前が示すように、このオプションは転送されたファイルをフィルタリングし、提供された値に基づいてファイルを含めます。 ただし、 includeオプションはexcludeオプションと一緒にのみ機能します。これは、rsyncのデフォルトの操作がソースディレクトリ内のすべてを含めることであるためです。

現在のディレクトリのテキストファイルのみを転送したいとします。 includeフィルタを提供し、ワイルドカード文字でexcludeを使用するだけで済みます。

rsync --include=*.txt --exclude=* /source/* /destination/

ここでは、オプションの順序が非常に重要です。 両方のオプションはフィルターであり、順番に適用されます。したがって、最初に必要なファイルを表すフィルターを使用してから、すべてを除外する必要があります。 これを適用すると、すべてのテキストファイルが転送対象として選択され、他のファイルはすべて除外されます。

ここで、テキストファイルとログファイルを転送する場合は、それぞれに include オプションを使用する必要があります。これも、excludeオプションの前に使用します。

rsync --include=*.txt --include=*.log --exclude=* /source/* /destination/

最後に、すべてのサブディレクトリで一致するすべてのファイルを転送するには、-aおよび-rオプションを使用して再帰するようにコマンドに指示します。

rsync -ar --include=*/ include=*.txt --exclude=* /source/* /destination/

ただし、これにはすべてのサブディレクトリ(ファイルなし)がコピーされる可能性があるため、 —prune-empty-dirs または-m[も使用する必要があります。 X153X]これを防ぐためのオプション:

rsync --ar --prune-empty-dirs --include=*/ include=*.txt --exclude=* /source/* /destination/

4. バージョンとバリアント

このチュートリアルは、バージョン3.2.3に基づいています。 rsync の最新バージョンは、常にhttps://rsync.samba.org。で入手できます。

includeおよびexcludeフィルターオプションの順序、およびそれらがどのように適用されるかは、バージョンによって異なります。 以前のバージョンでは、このチュートリアルで説明されているようにファイルを処理できない場合があります。 ただし、3.0.5以降のバージョンは期待どおりに実行されるはずです。

5. 結論

この記事では、 include オプションを使用して、rsyncを使用するときに転送されるファイルをフィルタリングする方法を説明しました。