Linux
rsync

root権限でrsyncによるファイル転送を行う

More than 3 years have passed since last update.

SSH越しのrsyncで、sudoを使ってroot権限によるファイル転送を行う例。

foo@src.example.com から foo@dest.example.net に転送を行う。両ホストともに公開鍵認証でのみアクセス可能で、SSH agent forwardingを利用して一方から他方へアクセスするという前提。


転送元(コマンドを実行する)ホストでの設定

visudoでsudoの設定を変更。

sudoで一般ユーザのforward agentを使用できるようにする。

# visudo

# env_keepが並んでいる行の下に追記する

Defaults env_keep += "SSH_AUTH_SOCK"


転送先ホストでの設定

visudoでsudoの設定を変更。

rsyncをパスワードなしで実行できるように、またTTYなしで実行できるようにする。"foo"の部分にはユーザ名を指定すること。

# visudo

# ファイル最下部に追記

Defaults!/usr/bin/rsync !requiretty
foo ALL=(ALL) NOPASSWD: /usr/bin/rsync


転送実行

rsync-path オプションでsudoを指定して実行。転送先ホストのユーザ名指定を忘れないこと(省略するとrootで接続しようとしてしまう)。


sudo rsync -auvz -e ssh --rsync-path='sudo rsync' path/to/dir foo@dest.example.net:/path/to/