rsyncを用いたデータ転送時のあれこれ
はじめに
こんにちは。kkです。
6月末にCentOS7のサポートも切れ、新サーバへの移行作業に明け暮れた方も
多いのではないでしょうか。
そんな移行時に使用されることが多い、「rsync」に関してTipsや注意点などを
お話していこうと思います。
SSHポートを利用したrsync
rsyncでは基本的にTCPポート873を利用します。
しかし、ポート873が解放されていない場合であってもポート22(SSH)を
利用してデータ転送が可能となります。
コマンドとしては下記となります。
rsync -e ‘ssh -i server.key’ -av /var/www/html/ user@***.***.***.***:/var/www/html/
ちなみにroot権限にてデータ転送をする場合には下記にて実施可能となります。
rsync -e ‘ssh -i server.key’ –rsync-path=”sudo rsync” -av /var/www/html/ /user@***.***.***.***:/var/www/html/
移行元ディレクトリ指定時の注意点
移行元ディレクトリを指定する際に、末尾に「/」があるかどうかで移行時の
挙動が下記の通り変更します。
①末尾に「/」がある場合 : 指定ディレクトリ配下のファイルやディレクトリを移行する
②末尾に「/」がない場合 : 指定ディレクトリそのものを移行する
実際の挙動は下記となります。
①末尾に「/」がある場合
# rsync -av /var/www/ /home/user/
# ls -l /home/user/
total 0
drwxr-xr-x. 2 root root 6 Jul 20 2023 cgi-bin
drwxr-xr-x. 2 root root 25 Mar 8 01:56 html
②末尾に「/」がない場合
# rsync -av /var/www /home/user/
# ls -l /home/user/
total 0
drwxr-xr-x. 4 root root 33 Mar 8 01:56 www
移行元と移行先のサーバのユーザやグループについて
パターン1 : 移行先サーバにはユーザ/グループが存在しない場合
結論 : UID/GIDがそのまま表示される
同期元/同期先ともに同ユーザ/グループが存在する場合は問題なく移行が可能
[root@old-server ~]# id testuser
uid=1002(testuser) gid=1002(testuser) groups=1002(testuser)
[root@old-server ~]# ls -l rsync_test.txt
-rw-r–r–. 1 testuser testuser 11 Mar 8 04:15 rsync_test.txt
[root@old-server ~]# rsync -e ‘ssh -i new-server.key’ –rsync-path=”sudo rsync” -av ./rsync_test.txt user@***.***.***.***:/var/www/html/
[root@old-server ~]#
[root@new-server ~]# id testuser
id: ‘testuser’: no such user
[root@new-server ~]# ll /var/www/html/rsync_test.txt
-rw-r–r–. 1 1002 1002 11 Mar 8 04:15 rsync_test.txt
パターン2 : 移行先サーバにユーザ/グループが存在しないが、
uidとgidに紐づくユーザとグループが存在する場合
結論 : 移行先のUID/GIDに合わせて設定されてしまう
[root@old-server ~]# id testuser
uid=1002(testuser) gid=1002(testuser) groups=1002(testuser)
[root@old-server ~]# ls -l rsync_test.txt
-rw-r–r–. 1 testuser testuser 11 Mar 8 04:15 rsync_test.txt
[root@old-server ~]# rsync -e ‘ssh -i new-server.key’ –rsync-path=”sudo rsync” -av ./rsync_test.txt user@***.***.***.***:/var/www/html/
[root@old-server ~]#
[root@new-server ~]# id test2user
uid=1002(test2user) gid=1002(test2user) groups=1002(test2user)
[root@new-server ~]# ll /var/www/html/rsync_test.txt
rsync_test.txt -rw-r–r–. 1 test2user test2user 11 Mar 8 04:15 rsync_test.txt
おわりに
いかがだったでしょうか。
今回はrsync利用時のTipsや注意点に関して触れてみました。
rsyncにてデータを移行する際には今回紹介した内容についても、
参考にしていただけると幸いです。
以上となります。ありがとうございました。