OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2014/02/12

OSSでLinuxサーバ構築

rsyncでリモートサーバにファイル転送

トップページOSSでLinuxサーバ構築 > rsyncでリモートサーバにファイル転送
このエントリーをはてなブックマークに追加

概要

 rsyncを使用してリモートサーバにファイルやディレクトリのバックアップを行います。 今回は例としてMySQLのデータベースファイルをリモートサーバにバックアップします。 ファイル単体で転送する場合と、ディレクトリ丸ごと転送する方法がありますので、 それぞれ掲載しています。

構成

サーバ構成

OSバージョン

CentOS 6.4 x86_64

ソフトウェア・パッケージ一覧

rsync-3.0.6-9.el6.x86_64

手順

rsyncのオプション

 以下の実行例ではrsyncのオプションとして『-av』と指定していますが、 それぞれどのような意味なのかまとめておきます。

オプション説明
-a-rlptgoDオプションを全て指定したのと同じ意味になります。
各オプションの意味は以下を参照。
-v転送情報を詳しく表示します。
-rディレクトリを再帰的にコピーします。
-l同期先でシンボリックリンクを作成します。
-pパーミッションを維持します。
-tタイムスタンプを維持します。
-gグループを維持します。(rootで実行した場合のみ)
-oオーナーを維持します。(rootで実行した場合のみ)
-Dデバイスを維持します。(rootで実行した場合のみ)

ファイルの転送

 MySQLのデータベースファイルを1つ転送します。 転送先はサーバ(IPアドレス:192.168.0.93)上のパス /data/backup/ 配下です。

# cd /opt/redmine-2.4.2-0/mysql/data/
# ls -l
合計 36900
drwx------ 2 mysql mysql     4096  1月 25 01:18 2014 bitnami_redmine
-rw-rw---- 1 mysql mysql  5242880  2月 11 14:58 2014 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880  1月 25 01:17 2014 ib_logfile1
-rw-rw---- 1 mysql mysql 27262976  2月  5 00:43 2014 ibdata1
drwx------ 2 mysql root      4096  1月 25 01:17 2014 mysql
-rw-r----- 1 mysql root     13916  2月 11 14:58 2014 mysqld.log
-rw-rw---- 1 mysql mysql        5  2月 11 14:58 2014 mysqld.pid
drwx------ 2 mysql root      4096  1月 25 01:17 2014 performance_schema
drwxr-xr-x 2 mysql root      4096  1月 25 01:15 2014 test
# rsync -av ./ibdata1 192.168.0.93:/data/backup/
The authenticity of host '192.168.0.93 (192.168.0.93)' can't be established.
RSA key fingerprint is d7:67:66:91:dd:f3:a1:97:f3:5d:0e:c4:06:7f:a8:7b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.93' (RSA) to the list of known hosts.
root@192.168.0.93's password: ←パスワードを入力(表示されません)
sending incremental file list
ibdata1

sent 27266391 bytes  received 31 bytes  2596802.10 bytes/sec
total size is 27262976  speedup is 1.00

 転送先サーバで転送されたファイルを確認します。 ファイルのuidとgidが数字で表示されています。 これは転送元サーバで使われていたmysqlユーザとmysqlグループが 転送先サーバに存在しないためです。特に問題ありません。

# ls -l /data/backup/
合計 26624
-rw-rw---- 1 500 500 27262976  2月  5 00:43 2014 ibdata1

ディレクトリの転送(指定したディレクトリ自体を含め丸ごと転送)

 次はディレクトリを転送します。 微妙なコマンド引数の指定方法の違いで、指定したディレクトリが 転送される場合と、ディレクトリの中身だけが転送される場合があります。 具体的に言うと、『data』と指定した場合と『data/』と指定した場合で 転送内容が変わります。

 data ⇒dataディレクトリとその中身を転送
 data/ ⇒dataディレクトリは転送されず、その中身だけを転送

 ここでは引数で指定したディレクトリとディレクトリの中身を転送します。 転送元のディレクトリを相対パスで『./data』と指定します。

# cd /opt/redmine-2.4.2-0/mysql/
# ls -l
合計 192
-rw-r--r--  1 root  root  17987  9月 10 03:01 2013 COPYING
-rw-r--r--  1 root  root 134703  9月 10 03:01 2013 INSTALL-BINARY
-rw-r--r--  1 root  root   2496  9月 10 03:01 2013 README
drwxr-xr-x  2 root  root   4096  1月 25 01:15 2014 bin
drwxr-xr-x  6 mysql root   4096  2月 11 14:58 2014 data
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 include
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 lib
-rw-r--r--  1 root  root    625  1月 25 01:17 2014 my.cnf
drwxr-xr-x  2 root  root   4096  1月 25 01:15 2014 scripts
drwxr-xr-x 27 root  root   4096  1月 25 01:15 2014 share
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 support-files
drwxrwxrwx  2 root  root   4096  2月 11 14:58 2014 tmp
# rsync -av ./data 192.168.0.93:/data/backup/
root@192.168.0.93's password: ←パスワードを入力(表示されません)
sending incremental file list
data/
data/ib_logfile0
data/ib_logfile1
data/ibdata1
data/mysqld.log
(中略)
data/performance_schema/setup_instruments.frm
data/performance_schema/setup_timers.frm
data/performance_schema/threads.frm
data/test/
data/test/db.opt

sent 39285403 bytes  received 2825 bytes  6044342.77 bytes/sec
total size is 39270838  speedup is 1.00

 転送先サーバで転送されたディレクトリを確認します。 dataディレクトリ毎転送されていることが分かります。

# ls -l /data/backup/
合計 4
drwxr-xr-x 6 500 root 4096  2月 11 14:58 2014 data

ディレクトリの転送(指定したディレクトリ内のファイルを転送)

 続いてコマンド引数で指定したディレクトリ自体は転送せず、 その中身だけを転送します。 転送先ディレクトリを相対パスで『./data/』と指定します。

# cd /opt/redmine-2.4.2-0/mysql/
# ls -l
合計 192
-rw-r--r--  1 root  root  17987  9月 10 03:01 2013 COPYING
-rw-r--r--  1 root  root 134703  9月 10 03:01 2013 INSTALL-BINARY
-rw-r--r--  1 root  root   2496  9月 10 03:01 2013 README
drwxr-xr-x  2 root  root   4096  1月 25 01:15 2014 bin
drwxr-xr-x  6 mysql root   4096  2月 11 14:58 2014 data
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 include
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 lib
-rw-r--r--  1 root  root    625  1月 25 01:17 2014 my.cnf
drwxr-xr-x  2 root  root   4096  1月 25 01:15 2014 scripts
drwxr-xr-x 27 root  root   4096  1月 25 01:15 2014 share
drwxr-xr-x  3 root  root   4096  1月 25 01:15 2014 support-files
drwxrwxrwx  2 root  root   4096  2月 11 14:58 2014 tmp
# rsync -av ./data/ 192.168.0.93:/data/backup/
root@192.168.0.93's password: ←パスワードを入力(表示されません)
sending incremental file list
./
ib_logfile0
ib_logfile1
ibdata1
mysqld.log
(中略)
performance_schema/setup_instruments.frm
performance_schema/setup_timers.frm
performance_schema/threads.frm
test/
test/db.opt

sent 39285382 bytes  received 2824 bytes  6044339.38 bytes/sec
total size is 39270838  speedup is 1.00

 転送先サーバで転送されたファイルを確認します。 dataディレクトリ自体は転送されておらず、dataディレクトリの中身だけが 転送されていることが分かります。

# ls -l /data/backup/
合計 36900
drwx------ 2 500  500     4096  1月 25 01:18 2014 bitnami_redmine
-rw-rw---- 1 500  500  5242880  2月 11 14:58 2014 ib_logfile0
-rw-rw---- 1 500  500  5242880  1月 25 01:17 2014 ib_logfile1
-rw-rw---- 1 500  500 27262976  2月  5 00:43 2014 ibdata1
drwx------ 2 500 root     4096  1月 25 01:17 2014 mysql
-rw-r----- 1 500 root    13916  2月 11 14:58 2014 mysqld.log
-rw-rw---- 1 500  500        5  2月 11 14:58 2014 mysqld.pid
drwx------ 2 500 root     4096  1月 25 01:17 2014 performance_schema
drwxr-xr-x 2 500 root     4096  1月 25 01:15 2014 test

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会


第000414号