Rsyncで特定の拡張子のみを対象にする方法

2016年12月4日

Tips サーバー テクノロジー

サーバー管理者はもちろんですが、最近のWEBエンジニアは、サーバーサイドの運用管理もできなければ「使えないヤツ」というレッテルを貼られてしまいます。 サーバー間のデータ同期や、差分確認、新規サーバーへのデータ移設など、一般運用すると、「rsync」コマンドを使うシチュエーションはたくさんあります。

最近のサーバ構成と役立つrsync

サバクラ型のWEBサービス構成で、最近では、フロント、バックのサーバー構成で、公開サーバーと、データ管理するバックエンド管理するサーバー構成に分けて、運用リスクを分散させるのはセオリーのようです。 バック側では、CGIをはじめ、サーバー管理用のbashやら、バックアップファイルなどあらゆるデータを管理する事になりますが、 フロントサーバーには、html、JS、CSSなど、web公開用のファイルだけを配置する場合に、フロントサーバとバックサーバで全く同じ構成ではなく、特定の種類のファイルだけを同期させたい時に今回のやり方をお役立てください。

特定の拡張子のみをrsyncで同期する方法

環境サンプル

server-A : フロントサーバー server-B : バックサーバー

条件

server-Bのhtml,js,cssファイルのみをserver-Aに配置する。 ※階層構造などは、元のままにする。

Rsyncコマンド

$ rsync -av ./ %user%@%domain%:%path% --include="*/" --include="*.html" --include="*.js" --include="*.css" --exclude="*" --dry-run

解説

--includeと--excludeは順番が重要なので以下の手順で行なってください。
1. --include="*/" ※子階層を全て対象にする 2. --include="*.html" ※必要な拡張子を書き出す(複数可) 3. --exclude="*" ※対象の拡張子以外を除外する
拡張子以外でも、任意ファイル名などを対象にもできます。 今回はコピーされるリストを表示するだけで実際にコピーされないように「--dry-run」オプションを付けています。 実際にコピーしたい場合は、このオプションを省いて行なってください。

Rsyncシリーズ記事

参考サイト

http://tech.nitoyon.com/ja/blog/2013/03/26/rsync-include-exclude/ こちらにincludeとexcludeの解説が分かりやすく書かれています。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。