テックブログ

技術ネタ

Linux

rsyncでWEBサイトを複製してみよう

はじめに

こんにちは、技術部のtuouraです。

突然ですが、再帰的って言葉、知っていますでしょうか?
よく使われるコマンドとして、ファイルの所有者やパーミッションを変更する際、配下のディレクトリやファイルを含め適用したい時、この様なコマンドで作業されていると思います。

# chown -R netassist.ftpgroup /home/netassist/ftp_dir/

chown/chmodは-Rの代わりに–recursiveでも同じ作業が可能です。

# chown --recursive netassist.ftpgroup /home/netassist/ftp_dir/

このrecursiveは、日本語では再帰的となります。

recursiveとは
主な意味 再帰的、帰納的、回帰的、再帰、リカーシブ、再起的
出典:weblio辞書 recursiveの意味

私はネットアシストに入社するまで、再帰的という言葉は使ったことがありませんでした・・・が、今回は再帰的な複製、つまりディレクトリ・配下のファイルを含めたWEBサイトの複製について、ブログを書かせて頂こうと思います。
※CentOS7系環境での利用を想定しています

作業の前に

WEBサイトを丸ごと複製させたい時、FTPソフトを使ってローカルPCにダウンロードしてしまうと、ダウンロード・アップロードに時間がかかるのは勿論、パーミッションや所有者の情報は複製先に反映されない事が多々あります。
また環境によってはタイムスタンプも情報が反映されません。

[root@source ~]# ll /var/www/html/
合計 20
-rw-r--r--. 1 user01 grpwww   85  9月 16 14:50 2016 index.html
drwxr-xr-x  3 apache apache 4096 10月  7 16:19 2016 mt
drw-------. 2 root   root   4096  9月 16 06:40 2016 pass
drwxr-xr-x  3 user02 grpwww 4096  9月 28 17:54 2016 user
drwxr-xr-x. 5 user01 grpwww 4096 10月 12 13:39 2016 wordpress
[root@destination ~]# ll /var/www/html/
合計 20
-rw-r--r--. 1 user01 user01   85  7月 10 15:20 2016 index.html
drwxr-xr-x  3 user01 user01 4096  7月 10 15:20 2016 mt
drwxr-xr-x. 2 user01 user01 4096  7月 10 15:20 2016 pass
drwxr-xr-x  3 user01 user01 4096  7月 10 15:20 2016 user
drwxr-xr-x. 5 user01 user01 4096  7月 10 15:20 2016 wordpress

rsyncを使う事により、パーミッション・所有者・タイムスタンプ情報そのままにファイルを複製させる事が可能です。
今回は例にあった/var/www/html/を複製させようと思います。

rsyncの準備

rsyncが入っていない時は、先に導入しておきましょう。

# yum -y  install rsync

また、rsyncは所有者情報を含め複製してくれますが、複製先にユーザ名やグループ名が存在しないときは、名前では無くユーザID(UID)とグループ(GID)で複製されてしまいます。

[root@destination ~]# ll /var/www/html/
合計 20
-rw-r--r--. 1 user01 10011    85  9月 16 14:50 2016 index.html
drwxr-xr-x  3 apache apache 4096 10月  7 16:19 2016 mt
drw-------. 2 root   root   4096  9月 16 06:40 2016 pass
drwxr-xr-x  3 10010  10011  4096  9月 28 17:54 2016 user
drwxr-xr-x. 5 user01 10011  4096 10月 12 13:39 2016 wordpress

複製先でも、事前に複製元と同じユーザ・グループを作っておきましょう。
※必要であれば、所属グループも移行元と同じように調整しましょう。

[root@destination ~]# useradd user01
[root@destination ~]# useradd user02
[root@destination ~]# groupadd grpwww

rsyncをテスト・実行

それでは、複製先からrsyncを行う前に「ドライラン」を行いましょう。
いわゆる事前テストです。

[root@destination ~]# rsync -azvn foo@192.168.1.162:/var/www/html/ /var/www/html/
sent 13844685530 bytes  received 1326762 bytes  36528.85 bytes/sec
total size is 14212942038  speedup is 6127.37 (DRY RUN)

ドライランで複製内容に問題が無ければ、引数からnを外し、実際に複製してみましょう!

[root@destination ~]# rsync -azvn foo@192.168.1.162:/var/www/html/ /var/www/html/
sent 13844685530 bytes  received 1326762 bytes  11289043.86 bytes/sec
total size is 14212942038  speedup is 1.03

これで複製完了です!
ファイルのパーミッション・所有ユーザ・タイムスタンプ全てが同期・複製されました。

[root@source ~]# ll /var/www/html/
合計 20
-rw-r--r--. 1 user01 grpwww   85  9月 16 14:50 2016 index.html
drwxr-xr-x  3 apache apache 4096 10月  7 16:19 2016 mt
drw-------. 2 root   root   4096  9月 16 06:40 2016 pass
drwxr-xr-x  3 user02 grpwww 4096  9月 28 17:54 2016 user
drwxr-xr-x. 5 user01 grpwww 4096 10月 12 13:39 2016 wordpress

[root@destination ~]# ll /var/www/html/
合計 20
-rw-r--r--. 1 user01 grpwww   85  9月 16 14:50 2016 index.html
drwxr-xr-x  3 apache apache 4096 10月  7 16:19 2016 mt
drw-------. 2 root   root   4096  9月 16 06:40 2016 pass
drwxr-xr-x  3 user02 grpwww 4096  9月 28 17:54 2016 user
drwxr-xr-x. 5 user01 grpwww 4096 10月 12 13:39 2016 wordpress

注意として、制限をしない限りrsyncはお互いのサーバ同士を最高速度で複製させます。
ファイル数が膨大な際は、長時間相当なネットワーク負荷がかかりますので、bwlimitオプションで帯域制限をかけましょう。

[root@destination ~]# rsync --bwlimit=125 -azvn foo@192.168.1.162:/var/www/html/ /var/www/html/

またrsyncコマンドでディレクトリを指定する際、ディレクトリの指定方法を間違うと、同名ディレクトリに同名のディレクトリが作成されるという恥ずかしい失敗が起こるので、こちらも注意しましょう。

[root@destination ~]# rsync -azvn foo@192.168.1.162:/var/www/html /var/www/html/
sent 13844685530 bytes  received 1326762 bytes  11289043.86 bytes/sec
total size is 14212942038  speedup is 1.03
[root@destination ~]# ll /var/www/html/
合計 4
drwxr-xr-x. 2 root root 4096  7月 10 14:34 2017 html

最後に

いかがでしょうか?以外に簡単にWEBサイトの複製が行えたのではないでしょうか。
ただし、サーバーOSや環境が違う際に、今回の方法で全てのWEBサイトが複製出来るわけではありませんので、ご注意頂けますと幸いです。

もしサイトを移行したい・移行が出来るか相談をしたい、という方がいらっしゃれば、是非ネットアシストにお問い合わせください。
様々なお客様のサーバー移設を行った実績から、最適なご提案が出来るかと存じます。
最後までお読み頂き、ありがとうございました。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください