アンドロイド

rsyncでファイルとディレクトリを除外する方法

NHK受信料を払わない方法・【正々堂々と受信料払わない方法】 YouTube

NHK受信料を払わない方法・【正々堂々と受信料払わない方法】 YouTube

目次:

Anonim

Rsyncは、リモートシェルを介して2つの場所の間でファイルとフォルダーを同期する高速で汎用性の高いコマンドラインユーティリティです。

Rsyncを使用すると、データをミラーリングし、増分バックアップを作成し、システム間でファイルをコピーできます。 データをコピーする場合、名前または場所に基づいて1つ以上のファイルまたはディレクトリを除外することができます。

このチュートリアルでは、rsyncを使用してファイルとディレクトリを除外する方法を示します。

あなたが始める前に

rsyncの仕組みに関する基本的な知識が必要です。

以下の例では、 -a オプションを -a してrsyncを使用します。 これにより、rsyncはディレクトリを再帰的に同期し、特別なデバイスとブロックデバイスを転送し、シンボリックリンク、変更時間、グループ、所有権、アクセス許可を保持します。

ファイルまたはディレクトリを除外するときは、ソースディレクトリへの相対パスを使用する必要があります。

除外するファイルとディレクトリを指定するには、2つのオプションがあります。

  • コマンドライン --exclude-from オプションを使用 --exclude-from ます。 ファイル --exclude-from オプションを使用 --exclude-from ます。

特定のファイルを除外する

特定のファイルを除外するには、ファイルへの相対パスを --exclude オプションに渡します。

次の例では、ファイル src_directory/file.txt は転送されません。

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

特定のディレクトリを除外する

特定のディレクトリを除外することは、ファイルを除外することと同じです。以下に示すように、ディレクトリへの相対パスを --exclude オプションに渡すだけです。

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

複数のファイルまたはディレクトリを除外する

複数のファイルまたはディレクトリを除外するには、複数の --exclude オプションを指定します。

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

除外するファイルやディレクトリの数が多い場合、複数の --exclude オプションを使用する代わりに、ファイルで除外するファイルやディレクトリを指定して、そのファイルを --exclude-from 渡すことができます。オプション。

次のコマンドは、上記のコマンドとまったく同じです。

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ exclude-file.txt

file1.txt dir1/* dir2

パターンに基づいて複数のファイルまたはディレクトリを除外する

rsyncを使用すると、ファイルまたはディレクトリ名に一致するパターンに基づいてファイルおよびディレクトリを除外することもできます。

たとえば、すべての .jpg ファイルを除外するには、次を実行します。

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

特定のパターンに一致するものを除く、他のすべてのファイルとディレクトリを除外するのは少し面倒です。 .jpg 終わるファイルを除く、他のすべてのファイルとディレクトリを除外するとします。

1つのオプションは、次のコマンドを使用することです。

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

複数の包含/除外オプションを使用する場合、最初の一致ルールが適用されます。

  • --include='*.jpg' 最初にすべての .jpg ファイルを含めます。 --include='*/' -次に、 src_directory ディレクトリ内のすべてのディレクトリを含めます。 これがないと、rsyncは最上位ディレクトリにある *.jpg ファイルのみをコピーします。 -m 空のディレクトリを削除します。

別のオプションは、findコマンドの出力をrsyncにパイプすることです。

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - src_directory/ をファイルパスから削除します。 --files-from=- は、標準入力(findコマンドから渡されたファイル)のファイルのみを含めることを意味します。

結論

このチュートリアルでは、Rsyncでデータを転送するときにファイルとディレクトリを除外する方法を学びました。 Rsyncの詳細については、Rsyncユーザーマニュアルページをご覧ください。

rsync端末