LoginSignup
1
6

More than 1 year has passed since last update.

rsyncを利用してバックアップを行う(CentOS7.6)

Posted at

rsyncを利用してバックアップをやってみます。
image.png

■環境
CentOS 7.6
rsync.x86_64 3.1.2-10.el7

1.rsyncのインストール

yumにてインストールを実施します。
転送元サーバ、転送先サーバの両方にてインストールを実施します。

1.1 パッケージ確認

yum_list
[root@cent76-01 ~]# yum list rsync

≪中略≫

Available Packages
rsync.x86_64              3.1.2-10.el7            base
[root@cent76-01 ~]# 

1.2 パッケージインストール

yum_install
[root@cent76-01 ~]# yum install -y rsync

≪中略≫

===========================================================================
 Package                 Arch       Version           Repository      Size
===========================================================================
Installing:
 rsync                   x86_64     3.1.2-10.el7      base           404 k

Transaction Summary
===========================================================================
Install  1 Package

≪中略≫

Installed:
  rsync.x86_64 0:3.1.2-10.el7                                                                                                                                          

Complete!
[root@cent76-01 ~]# 

2.手動でのコマンド実行

rsyncはオプションが複数あるので、必要に応じて設定をします。

2.1 コマンドサンプル

rsync_command_sample
#事前確認
rsync -avzn /var/rsync/source 192.168.142.42:/var/rsync/target


#転送用(バックアップ)
rsync -avz --stats --progress --bwlimit=10240 /var/rsync/source 192.168.142.42:/var/rsync/target
⇒アーカイブモードで


#転送用(レプリケーション)
rsync -avzc --delete  --stats --progress --bwlimit=10240 /var/rsync/source 192.168.142.42:/var/rsync/target

2.2 コマンド詳細

以下の[source]と[target]については2.2.1章で、[option]について2.2.2~2.2.3章で記載します。

rsync_command_description
rsync [option] [source] [target]


2.2.1 送信元/送信先ディレクトリ指定

同期元ディレクトリについては、PATH名の後ろに"/"をつけるかどうかで動作が変わります。
"/"をつける場合 (/dir/)
→ディレクトリ直下のファイルのみ同期します。

"/"をつけない場合 (/dir)
→ディレクトリとディレクトリ配下のファイル/ディレクトリを同期します。

リモートホスト指定については、ディレクトリ名の前にホスト名やIPアドレスを記載することで指定可能。
server1:/dir/dir
192.168.142.1:/dir/dir

image.png

2.2.2 コマンドオプション

option 内容
-a アーカイブモード ※詳細下記(2.2.3)
-v 動作内容を表示
-n 試験モード。実際には動作せず、動作内容だけ表示する
--progress 転送の進行状況を表示する
--stats ファイル数や転送サイズを表示する
-c 更新日とサイズではなく、チェックサムで変更の有無をチェックする
-u 同期先のファイルの方が新しい場合はスキップする
--inplace ファイルを上書きする
-remove-source-files 同期後にファイルを削除する
--delete 同期元にないファイルを同期先から削除する
--delete-before 同期先にないファイルを同期前に削除する
--delete-after 同期先にないファイルを同期終了後に削除する
-z 転送中のデータを圧縮する
--compress-level=[level] データの圧縮レベルを指定する(0-9)
--port=[port_num] ポート番号を指定する
-h 字を読みやすい単位で表示する
--bwlimit=[speed] 転送速度を指定(単位はkbps)

2.2.3 アーカイブモードの動作

有効/無効 option 内容
有効 -r ディレクトリを再帰的に処理する
有効 -l シンボリックリンクをシンボリックリンクのままコピーする
有効 -p パーミッションを保持する
有効 -t タイムスタンプを保持する
有効 -g 所有グループをそのまま保持する
有効 -o 所有者をそのまま保持する(自分以外の所有者を保持するにはroot権限が必要)
有効 -D デバイスファイルや特殊ファイルを保持する(「--devices --specials」相当)
有効 --specials 特殊ファイルを保持する
無効 -H ハードリンクを保持する
無効 -A CL(アクセス制御リスト)を保持する
無効 -X 拡張属性を保持する

3.daemonモードでの実行

通常コマンド実行の場合はパスワード等の入力が必要となりますが、daemonモードを利用することでパスワード入力の省略や定期実行で利用しやすい状態を準備することが出来ます。

◇daemonモードでできること
・ユーザ認証(無しも可)
・パスワードの省略(パスワード無しも可)
・同期元/先のIPアドレス制限

◇daemonモードでできないこと(やりにくいこと)
・rsyncサーバ側のディレクトリ変更
・リアルタイム同期(rsync+lsyncで実現)

image.png

3.1 rsync実行ユーザについて

rsyncを実行するにあたり、rsyncクライアント側のOSユーザを意識する必要があります。
事前にrsyncサーバ側に、rsyncクライアント側のrsyncを実行するOSユーザのユーザ名とrsync用のパスワードを登録しておき、rsync実行時に認証して動作させることが出来ます。
※なお、configを省略することでユーザ/パスワード認証を利用しないことも可能です。
image.png

◇ユーザについて
rsyncクライアント側のrsync実行ユーザはOSユーザとして存在している必要がありますが、rsyncサーバ側には同様のOSユーザを作成しておく必要はありません。rsyncサーバ側は/etc/rsyncd.confおよびetc/rsyncd.secretsに記載するのみとなります。

◇パスワードについて
パスワードはrsync用のパスワードとなりますので、OS用のパスワードとは別に設定します。

3.2 rsyncサーバの準備

サーバ側は以下2ファイルを事前に設定しておきます。
・/etc/rsyncd.conf
→rsyncの設定ファイル

・/etc/rsyncd.secrets
→rsyncの認証ユーザ/パスワードファイル
※認証を利用しない場合は不要です。

3.2.1 /etc/rsyncd.conf

config設定を記載します。
config内容はGlobal optionsModule optionsに分けられます。

Module optionsはrsyncサーバ側の同期ディレクトリやユーザ/パスワード認証の有無を記載します。

/etc/rsyncd.conf_sample
uid           = root
gid           = wheel

[backup001]
        path = /var/rsync/target
        read only = no
        auth users = user1,user2
        secrets file = /etc/rsyncd.secrets

auth userssecret fileを記載しない場合、ユーザ/パスワード認証無しで利用できます。

/etc/rsyncd.conf_description
#
# Global options
#
uid           = [rsync daemon実行ユーザ]
gid           = [rsync daemon実行ユーザグループ]
log file      = [ログファイルPATH,指定なしでsyslogに出力]
log facility  = [ログレベル,デフォルトはdaemon]
pid file      = [pidファイルPATH]
hosts allow   = [接続を許可するホスト、CIDR]
hosts deny    = [接続を許可しないホスト、CIDR]
dont compress = [圧縮しない拡張子]
#
# Module options
#
[モジュール名]
        comment      = [コメント]
        path         = [同期ディレクトリ]
        auth users   = [認証ユーザ名]
        secrets file = [認証ユーザパスワードファイル]
        read only    = [readonly指定、デフォルトはyes]

3.2.2 /etc/rsyncd.secrets

/etc/rsyncd.confsecret fileに記載したファイルにユーザとパスワードをコロン区切りで記載します。
なお、本ファイルはrsync daemonを起動するユーザを所有者とし、パーミッション600で設定しておく必要があります。

/etc/rsyncd.secrets_sample
user1:passwd1
user2:passwd2
permission_/etc/rsyncd.secrets
# ll /etc/rsyncd.secrets
-rw------- 1 root root 29  7月  4 11:21 /etc/rsyncd.secrets

3.3 rsyncクライアントの準備

サーバ側は以下1ファイルを事前に設定しておきます。
・/etc/rsync.passwd
→rsyncのパスワードファイル
※認証を利用しない場合は不要です。

3.3.1 /etc/rsync.passwd

クライント側のrsync実行ユーザのパスワードのみを記載します。
なお、サーバ側の/etc/rsyncd.confに記載されているユーザuser1を利用するものとします。
なお、本ファイルもrsyncコマンドを実行するユーザを所有者とし、パーミッション600で設定しておく必要があります。

/etc/rsync.passwd_sample
passwd1
permission_/rsync.passwd
# ll /etc/rsync.passwd
-rw------- 1 user1 user1 7  7月  4 10:55 /etc/rsync.passwd

3.4 rsync daemonの起動

rsyncサーバ側でdaemonの起動を行います。

service_start
systemctl start rsyncd.service

OS起動時に自動起動する場合は以下も実行します。

service_enable
systemctl enable rsyncd.service

なお、systemctlを利用しない場合、以下コマンドで起動可能です。

rsync_start
rsync --daemon --config=/etc/rsyncd.conf

--configを記載しない場合、デフォルトでは/etc/rsyncd.confファイルを読み込みます。

3.5 rsyncコマンドの実行

rsyncクライアント側でコマンドを実行します。
コマンドには、サーバ側の/etc/rsyncd.confModule optionsの設定を利用します。

rsync_command
rsync -avz --password-file=/etc/rsync.passwd /var/rsync/source rsync://192.168.142.42/backup001
option 内容
--password-file=[passwd_file] パスワードファイルを指定
rsync://[server]/[module_name] 接続するrsyncサーバとModule名を記載

※rsyncサーバの接続ではModule名以外を指定するとエラーとなりますので、別の接続ディレクトリを指定する場合はrsyncサーバの/etc/rsyncd.confに追加のModule optionsを指定し、pathにて定義してください。

3.6 エラーメッセージ

user_password_error
@ERROR: auth failed on module [モジュール名]
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]

こちらのメッセージの場合、以下のエラーパターンが考えられます。

①rsyncサーバ側の/etc/rsyncd.secretsのパーミッションが誤っている場合。
rsyncサーバの/etc/rsyncd.secretsの所有者(rsync daemon実行ユーザ)、パーミッション(600)を見直してください。

②rsyncサーバの/etc/rsyncd.secretsの記載が誤っている場合。
rsyncサーバの/etc/rsyncd.secretsの内容を見直してください。


client_passwd_permission_error
rsync: could not open password file /etc/rsync.passwd: Permission denied (13)
rsync error: syntax or usage error (code 1) at authenticate.c(187) [sender=3.1.2]

①rsyncクライアント側の/etc/rsync.passwdのパーミッションが誤っている場合。
/etc/rsync.passwdの所有者(rsync実行ユーザ)、パーミッション(600)を見直してください。

②rsyncクライアント実行ユーザがrsyncサーバの/etc/rsyncd.conf-モジュール-auth usersに記載されていない場合。
rsyncサーバの/etc/rsyncd.conf-モジュール-auth users、および/etc/rsyncd.secretsを見直してください。

③rsyncクライアントの/etc/rsync.passwdの記載が誤っている場合。
rsyncクライアントの/etc/rsync.passwdを見直してください。

参考

1
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
6