rsync の –exclude-from で特定のファイルを除外するなど複雑なファイルの転送を行う方法

rsync でサーバーへファイルを反映させる際に、tmp ディレクトリは転送しない、画像はサーバーサイドでアップロードさせるので、rsync で手を入れないというような複雑な転送をする場合は条件を別ファイルにまとめて –exclude-from で読み込むと便利です。

–exclude-from とは

rsync で使えるオプションです。通常 –exclude で除外するディレクトリやファイルなどを指定しますが、たくさんある場合は –exclude-from を使って別ファイルにまとめておいた条件を下記のように読み込むことができます。

1
rsync -vhHpltzru --delete --exclude-from=ignore -e ssh /path/to server:/path/to

rsync のファイル指定

設定ファイルは相対パスで書きます。例えば、複数のファイルをただ除外する場合は以下のように書きます。これで rsync で転送すると下記のファイルは転送されない感じです。

1
2
app/Config/bootstrap.php
app/Config/database.php

特定のディレクトリのみを転送する場合は以下のように書きます。全てのディレクトリを一旦除外しておいて、転送したいディレクトリを明示的に指定することで、特定のディレクトリだけを転送することができます。

1
2
+ app/webroot/images/common/
- *

上記の内容を応用すれば下記のように複雑なファイルの転送を行うことができます。ちなみに設定ファイル内ではコメントアウトなども使えます。

1
2
3
4
5
6
7
8
9
10
11
12
#image
+ app/webroot/images/common/
- app/webroot/images/*
 
#config
- app/Config/bootstrap.php
- app/Config/database.php
 
#basic
- .DS_Store
- .git
- .gitignore

下記のページを参考にさせて頂きました。

コメント

コメントは受け付けていません。