思考実験とD.I.Y.

D.I.Y and Gedankenexperiment

【FreeBSD13.5/13.4】ファイルサーバーのpoolの複製を作成(1):rsync over sshの設定

メインファイルサーバーのファイルシステム領域を、Replicate用ファイルサーバー上に複製を定期的(自動的に)に作成させるために、rsync over sshの設定を行おうと思います。

*1

  • 小生の健忘禄、兼作業記録になっていますことをお詫び申し上げます🙇‍♂️

この設定を行うのは10年ぶりぐらいです😅。

一応、昔のメモが残っていたので[*2]、たかをくくっていましたが、”本当にメモ”状態で肝心なことを記録していなかったので、少々手間取りました😅。

 

本投稿での設定は、メインファイルサーバーが起動していても、Replicate用ファイルサーバーが起動しているとは限らない環境にて行っています。

逆に、Replicate用ファイルサーバーを起動させるときは、必ず、メインファイルサーバーが起動しているので、

  • コピー元(リモート側)は、メインファイルサーバー
  • コピー先(ローカル側)は、Replicate用ファイルサーバー

として設定し、

  • rsyncはコピー先(ローカル側)で実行する場合の手順になります。

1. 事前準備

(1)rsync用ユーザーの追加
a)NISユーザーの追加(NISサーバー:nissvでの設定変更)

サーバー毎にrsync用ユーザー(_rsync)と、rsync用グループ(_rsync)を作ると、UID/GIDを混乱しやすいので、ローカル/リモートで共通のNISユーザー/グループとしてUID/GIDを設定します(*3)。

rsync用ユーザーのUID/GIDは予約されていませんので、UID/GID1000未満でUID/GIDが予約されていない番号を[*4]を設定する事にします。

今回は、rsync用ユーザーのUID/GIDは”799”/”799”にしました😀。

 

root@nissv:# vipw -d /var/yp ; -dを付けないとローカルのパスワードファイルを参照してしまう。

 

下記の黄色字部分を追加します。

_rsync:*:799:799::0:0:rsync user:/root/rsync:/bin/csh

[..]



 

 
root@nissv:# vi /var/yp/etc/group    

 

下記の黄色字部分を追加します。

_rsync:*:799:_rsync

[..]



 

 
root@nissv:# cd /var/yp    
root@nissv:# make    

 

ユーザー”_rsync”のパスワードを設定します。

root@nissv:# yppasswd _rsync    
b)NISを使わない場合

”リモート側”と”ローカル側”にそれぞれ、サーバー毎に同じUID/GIDrsync用ユーザー(_rsync)と、rsync用グループ(_rsync)を作ります。

(2)リモート側の設定変更(メインファイルサーバー:mainsvでの設定変更)
1.)FTP有効化(*5

ssh公開キーを転送するために、ftpを有効化しておきます。

 

root@mainsv:# vi /etc/rc.conf ;

 

下記の黄色字部分を追加します。

[..]

inetd_enable="YES"

[..]

[..]

 

 

 

root@mainsv:# vi /etc/inetd.conf ;

 

下記の黄色字部分を削除して、コメントアウトを解除します。

修正前

修正後

[..]

# To enable a service, remove the '#' at the beginning of the line.
#
#ftp    stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
#ftp    stream  tcp6    nowait  root    /usr/libexec/ftpd       ftpd -l

[..]

[..]

# To enable a service, remove the '#' at the beginning of the line.
#
ftp    stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
#ftp    stream  tcp6    nowait  root    /usr/libexec/ftpd       ftpd -l

[..]

 

inetd を起動します。

root@mainsv:#  service inetd start ;

 

2.)"wheel"グループの修正

ユーザー”_rsync”をローカルの”wheel”グループに追加します。

 

root@mainsv:#  pw group mod wheel -m _rsync    
 

 

3.)"sudo"のインストール(アップデート)

"sudo"をインストールします。

インストールされている場合でもアップデートしておいた方が無難です😀。

root@mainsv:#  pkg install sudo    
 
4.)"sudoers"の修正

 

freebsdでは、sudoersの実体は、”/usr/local/etc”にあり、viで修正する事も出来ますが、

”visudo”を使えば、構文チェックをしてくれるので、便利です😀。

 

root@mainsv:#  visudo    

 

下記の黄色字部分を追加します。

[..]

## User privilege specification
##
root ALL=(ALL) ALL
_rsync ALL=(ALL) NOPASSWD: /usr/local/bin/rsync

[..]

[..]

 

 

 

5.)"rsync"のインストール(アップデート)

"rsync"をインストールします。

インストールされている場合でもアップデートしておいた方が無難です😀。

root@mainsv:#  pkg install rsync    
 

2. リモート側(メインファイルサーバー:mainsv)の設定

(1)公開キーの保存場所を作る
root@mainsv: ~/# mkdir -m 700 .ssh ; 公開キーの保存場所を所有者限定フォルダとして作成する。
root@mainsv: ~/rsync # chown _rsync .ssh ; フォルダの所有者をユーザー”_rsync”に変更。
 

3. ローカル側(Replicateサーバー:replsv)で設定

(1)鍵ペア作成
root@replsv:# mkdir /root/rsync/ ;
root@replsv:# mkdir /root/rsync/.ssh ;
root@replsv:# cd /root/rsync/.ssh ;
root@replsv: ~/rsync/.ssh # ssh-keygen -t rsa -f rsync ;
(2)公開鍵のリモート元側への転送

 

root@replsv:#   ftp _rsync@mainsv ;

 

ftp> cd /root/rsync/.ssh
ftp> binary

ftp> put rsync.pub authorized_keys



 

(3)ssh接続の確認

ローカル側からリモート側にパスワードなしでssh接続が出来るか確認しておきます😀。

root@replsv:#   ssh -i /root/rsync/.ssh/rsync _rsync@mainsv ;

 

(4)rsyncの動作確認

ローカル側からリモート側にパスワードなしでssh接続が出来るのを確認したら、rsyncを”-z"(圧縮転送)オプションを追加して、実行します😀。

 

root@replsv:# rsync -avz --rsync-path='sudo /usr/local/bin/rsync' -e "ssh -i /root/rsync/.ssh/rsync" _rsync@mainsv:/Home/ /Replicate/mainsv/Home ;

 

rsyncの本来の使い方を行うことで、”-z"(圧縮転送)オプションが使えるため、転送時のスループットが向上しています😀。

【次回に続く】

ブログランキング・にほんブログ村へにほんブログ村 IT技術ブログへ

出典・引用・備考

*1:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。

*2:【FreeBSD】rsync/ssh設定(メインファイルサーバーー>ミラーサーバー転送) - 思考実験とD.I.Y.

*3:ネットワーク/サーバーの構成/設定状態やセキュリティポリシーによってはサーバー毎にrsyncユーザーrsyncグループを、作る方が望ましい場合もあります。

*4:"freebsd-ports / UIDs"、

https://github.com/freebsd/freebsd-ports/blob/main/UIDs、最終閲覧日:2025年11月5日

*5:scpを使う場合にはこの設定は不要です。