GNU/Linux >> Linux の 問題 >  >> Linux

rsyncを使用してデータ転送でファイルとディレクトリを除外する方法

はじめに

Rsyncは、ファイルとディレクトリを同期およびコピーする便利なLinuxコマンドラインツールです。このツールを使用して、ディレクトリとドライブ間、または2台のリモートマシン間でデータをローカルに同期できます。

Linuxの基本的なrsyncコマンドは、指定した場所からすべてを同期します。多くのバックアップシナリオでは、特定のファイル、ディレクトリ、またはファイルタイプを除外したい場合があります。

このガイドの例に従って、rsyncを使用してファイルまたはディレクトリを除外する方法を学習してください。 日常のrsyncの使用法をカバーするために、最も一般的な除外のユースケースをリストします。

前提条件

  • sudoを使用するユーザー またはルート 特権
  • コマンドライン/ターミナルウィンドウへのアクセス
  • システムにインストールされているRsync

rsync除外オプションのしくみ

-除外 rsyncのオプション コマンドは、ソースディレクトリへの相対パスを使用します。 -excludeを追加します rsyncのオプション コマンドの後に、ディレクトリまたはファイルへの相対パスが続きます。

基本的な構文 rsyncのexcludeオプションは次のようになります:

rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/

source /を置き換えます 別の場所へのデータ転送のソースとして使用するディレクトリ名を使用します。

destination /を置き換えます ディレクトリ名を指定すると、rsyncはデータのターゲットの場所として使用します。ディレクトリが存在しない場合、rsyncがディレクトリを作成し、ファイルをそのディレクトリに転送します。

ファイルをリモートの場所にバックアップするには、他のガイドに従って、SSH経由でrsyncを使用してファイルをコピーまたは転送する方法を学習してください。

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

以下のrsync除外の例では、 -aを使用します アーカイブ )および -v 冗長 )オプション( -av )。 -a オプションは、アクセス許可、シンボリックリンク、所有権、およびグループ設定を維持しながら、ディレクトリを再帰的に同期します。 -v フラグはオプションであり、rsyncコマンドの進行状況とステータスを出力します。

rsyncを使用してフォルダーの内容を転送するときにファイルを除外するには、ファイルと相対パスを指定します。

例:

rsync -av --exclude 'testfile1.txt' sourcedir/ destinationdir/

このコマンドを使用すると、ファイルを destinationdirにコピーできます。 sourcedirから testfile1.txtを除外します。

出力からわかるように、 testfile1.txt リストにありません。

これを行うには、次のコマンドを実行します:

sudo rm -rf destinationdir

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

これで、 rsync --excludeの使用方法がわかりました。 fileコマンドで、同じ方法でツールを使用してディレクトリを除外します。

(ファイル名の代わりに)除外するディレクトリを指定します:

rsync -av --exclude 'dir1' sourcedir/ destinationdir/

このコマンドは、 sourcedirの内容をコピーしました destinationdirに 除外されたdir1 、出力に見られるように。

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

アスタリスクを使用する* (ワイルドカード)パターンに一致するすべてのものを除外するためにファイルまたはディレクトリ名を定義する場合。

で始まるファイルを除外する テスト 、次のコマンドを実行します:

rsync -av --exclude 'test*' sourcedir/ destinationdir/

このパターンに一致するすべてのファイルとディレクトリは転送から除外されます。

同様の問題でワイルドカードを使用して、特定のパターンで終わるすべてのディレクトリを除外することもできます。 。

このコマンドを実行して、番号3で終わるすべてのディレクトリを除外します。

rsync -av --exclude '*3' sourcedir/ destinationdir/

パターンの前後にアスタリスクを使用して、 -excludeをさらに絞り込むことができます。 基準。

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

rsyncツールを使用すると、特定のファイルタイプを除外できます データを同期するとき。アスタリスクを使用する* 除外するファイルタイプの拡張子が続きます。

たとえば、多くの .isoを含むディレクトリをバックアップしたい場合があります。 バックアップする必要のないファイル。

特定のファイルタイプを除外するには、この場合は。 iso 、次のコマンドを実行します:

rsync -av --exclude '*.iso' sourcedir/ destinationdir/

出力は、rsyncが転送されなかったことを示しています .iso ファイル。比較のために、画像にソースディレクトリの内容を追加しました。

サイズでファイルを除外

ファイル転送中に、除外するファイルの最小サイズまたは最大サイズを指定できます。ソースディレクトリにバックアップしたくない大きなファイルが多数含まれている場合は、 -max-size =size_in_mb_or_gbを使用します。 オプション。 size_in_mb_or_gbを置き換えます 希望のサイズで。

たとえば、より大きいすべてのファイルを除外するには 500MB、次のコマンドを実行します:

rsync -av --max-size=500m sourcedir/ destinationdir/

一方、特定のサイズよりも小さいファイルを除外するには -min-size =size_in_mb_or_gbを使用します オプション。

たとえば、画像を含むディレクトリを転送したいが、サムネイルファイルがたくさんあるとします。すべての画像が1MBより大きい場合は、そのサイズより小さいすべてのファイルを除外できます。

これを行うには、次のコマンドを実行します:

rsync -av --min-size=1m sourcedir/ destinationdir/

使用しないでください -除外 最小または最大ファイルサイズを定義するときに使用するrsyncオプション。

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

複数の-excludeを追加します 複数のファイルまたはディレクトリを除外するオプション。任意のrsync --excludeを組み合わせることができます フォルダ およびrsync --exclude ファイル 必要なデータのみを転送するコマンド。以前に説明したコマンドはすべて、1行で使用できます。

次のコマンドは、 .txtを持つすべてのファイルを除外します 拡張機能、および dir3 およびdir4 ディレクトリ:

rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/

-除外をいくつでも追加できます 必要に応じてエントリ。コマンドを整理するために、 -excludeでファイルとディレクトリを指定できます。 中括弧を使用するオプション。カンマを使用してパターンを区切ります。

たとえば、上記のコマンドを次のように短縮できます。

rsync -av --exclude={'*.txt','dir3','dir4'} sourcedir/ destinationdir/

出力には、リストされたファイルとディレクトリが転送から除外されていることが示されています。

リストからファイルとディレクトリを除外する

多数の異なるファイルやディレクトリを除外する必要がある場合は、rsync -exclude-fromを使用できます。 国旗。これを行うには、除外するファイルとディレクトリの名前を使用してテキストファイルを作成します。次に、ファイルの名前を -exlude-fromに渡します オプション。

コマンドは次のようになります:

rsync -av --exclude-from={'list.txt'} sourcedir/ destinationdir/

rsyncツールは、ファイルにリストされているすべてのファイルとディレクトリをスキップします。このガイドで使用した任意のパターンを追加できます。

上記のコマンドで使用したサンプルファイルには、次のパターンが含まれています。


Linux
  1. LinuxでNetcatを使用してファイルを転送する方法

  2. SCP と Rsync を使用して Linux でファイルを転送する方法

  3. exclude-from を使用して複数のファイルとディレクトリを除外する 6 つの rsync の例

  1. ncおよびpvコマンドを使用して2台のコンピューター間でファイルを転送する方法

  2. Linux で FTP を使用してファイルを転送する方法

  3. rsync を使用してデフォルトでファイルを除外するにはどうすればよいですか?

  1. Linuxでファイルとディレクトリをコピーする方法

  2. rsyncを使用してデータをバックアップする方法

  3. SFTPコマンドを使用してファイルを転送する方法