ウェブサイト検索

Rsync: ディレクトリを除外する


Linuxシステムのrsyncコマンドは、2つのディレクトリの内容を同期するために使用できます。デフォルトでは、rsyncは指定された宛先にすべてのファイルとディレクトリを転送します。転送から除外したいサブディレクトリがある場合、rsyncはそれを行うための2つのオプションを提供します。

このチュートリアルでは、rsync転送から1つまたは複数のディレクトリを除外するための2つの方法を示します。以下の例のコマンドを使って、自分のシステムで除外用のディレクトリを設定してみてください。

このチュートリアルでは、あなたは学びます:

  • rsync コマンドでディレクトリを除外する方法

rsync転送からディレクトリを除外する

rsyncでディレクトリを除外する

最初に取り上げるオプションは、rsyncコマンドで--excludeオプションを使用することです。以下の例のコマンドでlinuxconfigディレクトリを除外するための使い方は次のようになります。


rsync -av --exclude linuxconfig /path/to/src/ /path/to/dest/

上記のコマンドでは、/path/to/srcの内容を/path/to/destと同期し、linuxconfigディレクトリを省略しています。ただし、linuxconfigのパスは私たちのソースパス、つまりこの場合は/path/to/srcに対して相対的です。したがって、rsyncはlinuxconfigディレクトリが/path/to/src内にあると想定します。

しかし、もしlinuxconfigディレクトリが実際にはソースディレクトリのもう少し深い場所にあるとしたらどうでしょうか?除外したいディレクトリの絶対パスが実際には/path/to/src/some/subdir/linuxconfigだとしましょう。その場合、私たちのrsyncコマンドは次のようになります:


rsync -av --exclude some/subdir/linuxconfig /path/to/src/ /path/to/dest/

では、複数のディレクトリはどうでしょうか?私たちは必要に応じて、いくつでも--excludeオプションを使用できます。次のコマンドで、rsync転送から3つのディレクトリを除外してみましょう:


rsync -av --exclude some/subdir/linuxconfig --exclude some/other/dir --exclude exampledir /path/to/src/ /path/to/dest/

上記のコマンドは期待通りに機能しますが、ご覧の通り、除外するディレクトリを追加するにつれてコマンドは次第に扱いづらくなります。15のディレクトリを除外したい場合はどうなるでしょうか?そのコマンドは恐ろしいものになってしまいます。でも、そこにrsyncの別のオプション--exclude-fromが登場します。

--exclude-from rsyncオプションを使用すると、除外するディレクトリのリストが含まれるファイルを指定できます。このファイルはプレーンテキストである必要があるため、シンプルな.txtファイルで構いません。除外したいディレクトリのリストを作成する際には、1行につき1つのディレクトリをリストしてください。


cat exclude-list.txt
some/subdir/linuxconfig
some/other/dir
exampledir

除外リストが作成されたので、これをrsycコマンドで参照できます:


rsync -av --exclude-from='exclude-list.txt' /path/to/src/ /path/to/dest/

今、私たちは以前と同じ3つのディレクトリを除外していますが、コマンドははるかに簡潔で、必要に応じて除外ファイルにさらに多くのディレクトリを追加することができます。

結論

この記事では、Linuxのrsyncコマンドから1つまたは複数のディレクトリを除外するための2つの方法を学びました。一つのオプションは少数の除外に適しており、もう一つは除外したいディレクトリの長いリストがある場合により適している。しかし、基本的な機能は同じであり、バックアップシナリオに合った方を使用すべきです。

関連記事: