web-dev-qa-db-ja.com

両側にルートアクセスがあるSSH経由のRsync

古いubuntuサーバーと新しいdebianサーバーが1台ずつあり、古いサーバーから新しいサーバーにデータを移行しています。 rsyncを使用してデータを転送し、同等のtar/scp/untarプロセスよりも簡単かつ迅速に最終的な移行を実現したいと考えています。

例として、ホームフォルダーを一度に1つずつ新しいサーバーに同期させます。ソース側のすべてのファイルが誰でも読み取り可能であるわけではなく、宛先を/ homeへの正しい権限で書き込む必要があるため、これには両端でルートアクセスが必要です。 rsyncにルートアクセスを両側に与える方法がわかりません。

関連する質問をいくつか見ましたが、私がやろうとしていることに完全に一致するものはありません。

Sudoをセットアップして両方のサーバーで作業しています。

14
Tim Abell

実際にはrsyncを実行するためにSSH経由でルート認証を許可する必要はありません Antoineが示唆しています。トランスポートとシステム認証は、ファイルの読み取りと書き込みのために両端でSudoを使用してrsyncを実行できる限り、ユーザーアカウントに対して完全に実行できます。

移行先サーバーのユーザーとして、次のように移行元サーバーからデータを取り込むことができます。

Sudo rsync -aPe ssh --rsync-path='Sudo rsync' boron:/home/fred /home/

両方のサーバーで実行しているユーザーには、rsyncバイナリへのパスワードなし*のSudoアクセスが必要ですが、どこでもrootとしてsshログインを有効にする必要はありません。使用しているユーザーが反対側で一致しない場合は、user @ boron:を追加して、別のリモートユーザーを指定できます。

幸運を。

*またはタイムアウトウィンドウ内で手動でパスワードを入力する必要があります。

14
Caleb

さて、私はすべての手がかりをつなぎ合わせて、自分に役立つ何かを手に入れました。

サーバーを「src」と「dst」と呼びましょう。

移行先サーバーでルートのキーペアを設定し、公開キーを移行元サーバーにコピーします。

dest $ Sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

ソースサーバー上のルートの承認済みキーに公開キーを追加する

src $ Sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

宛先サーバーに戻り、rsyncを使用してデータをプルします。

dest $ Sudo -i
dest # rsync -aP src:/home/fred /home/
2
Tim Abell