SSH経由でRSnapshotを設定する正しい方法

SSH経由でRSnapshotを設定する正しい方法

2台のDebian 8サーバーがあります。

  1. サーバーA:自宅で、ストレージスペースが豊富
  2. サーバーB:商用ホストでvps、ネットワーク、およびメールサービスを実行する

どちらも商用プロジェクトではなくペットプロジェクトです。

サーバーBはrsnapshotを実行し、正常に動作します。サーバーAとBは証明書を使用して、パスワードなしで互いにSSHで接続できます。これは正常に機能します。 SSHを介してルートを直接接続することはできませんが、sudo suを介してルートになることができる一般的なユーザーアカウントがあります。自動化されていないSSHセッションの場合は、パスワードで保護された証明書を使用してください。

過去数日間、サーバーBからサーバーAにバックアップを作成したり、サーバーAからサーバーBからサーバーAにバックアップをインポートしたりするために、サーバーBにrsnapshotを設定しようとしました。これはrsnapshotドキュメントによると正しいようです。アクションフォーム。

私の問題は、多くの文書が比較的サーバーを参照していることです。たとえば、「サーバーで x を実行」または「y を ~/somepath にコピーする」とします。どのサーバーにどの機能があり、どのユーザーのホームディレクトリをコピーする必要があるかを明確にリストした文書を見つけることはほとんどありません。

だから:

  • バックアップする必要がある本番データはサーバーBにあります。
  • バックアップはサーバーAに保存する必要があります。
  • サーバーAはrsnapshotを実行します。

質問:

RSnapshot設定でサーバーBのSSHを介してログインするユーザーアカウントを指定する必要がありますか? root(複雑または安全ではありません)や「backupmaker」というユーザーなどの専用の一般ユーザーアカウント(Debianには資格のある「backup」というシステムユーザーがありますが、それを混乱させたくありません)。

私は両方を読んで、Linuxの真言である「多くの方が良い」ことを理解しています。しかし、本番環境でこれを設定した人(好ましくは/etc/rsnapshot.confおよび/の関連行)から実用的なアドバイスを探しています。 home//.ssh/authorized_keys (本当に from="abcd",command="/home/remoteuser/cron/validate-rsync" を使用していますか? "validate-rsync" スクリプトが必要です。)できますか? ホーム/サーバーAuser/myrsnapscript.sh?

サーバーBでバックアップを作成するために、rootアカウント、一般ユーザーアカウント、カスタム専用アカウント、または組み込みの「バックアップ」アカウントを使用しましたか?

私はsshfsや他の選択肢を探していません。これを正しく実行し、後でハブバックアップシステムに拡張したいと思います。

どんな洞察力や提案でも歓迎します!

答え1

rsnapshotを実行しているサーバーAでrootとして実行し、SSHを介してbackupmakerBの専用ユーザーに接続します。通常、Aに戻す必要があるすべてのファイルを読み取れるように、そのユーザーがsudo rsyncを実行できるようにしたいと思います。

たとえば、Aにsudoを使用できるユーザーが1人、Bにsudoを使用できる他のユーザーがいるとします。 Bにユーザーを作成し、backupmakerパスワードを割り当てます。パスワードなしでrsyncを実行するには、Bにsudoersエントリを作成します。たとえば、次のようになります。

sudo tee /etc/sudoers.d/backupmaker <<<'backupmaker ALL = (root) NOPASSWD: /usr/bin/rsync'

(sudoersファイルを編集するときは注意してください。回復のために常にrootログインがあることを確認してください。)Aで、ユーザーアカウントのroot SSHキーをこの新しいユーザーにコピーします。

sudo ssh-copy-id backupmaker@B

(まだルートキーを設定していない場合は、sudo ssh-keygen -q -N ''Aを使用して作成してください。)Aでは、テストルートはパスワードなしでBでsshを実行し、sudoを介してrsyncを実行できます。

sudo ssh backupmaker@B sudo rsync --version

たとえば、Aconfigure から/etc/rsnapshot.conf既存backupの行を削除して最後に追加します。

verbose     3
cmd_ssh     /usr/bin/ssh
rsync_long_args     --rsync-path="sudo rsync" --delete --numeric-ids --relative --delete-excluded
backup  backupmaker@B:/home/    mybackupofB/

2つの列は空白ではなくタブで区切られます。最後の行は、Aにsshを接続してAに backupmaker@Bコピーする例です。オプションがあります。これは、Bで実行されるコマンドがrsyncではなくrsyncであることを意味します。まず、バックアップに完全な/homeの代わりに小さなディレクトリを使用します。 Aでバックアップのデフォルトの場所を変更することもできます。/home/.snapshots/hourly.0/mybackupofB/rsync_long_args--rsync-path="sudo rsync"sudo rsync/.snapshots

これで、Aで最初のスナップショットを試すことができます。

sudo rsnapshot -vvv hourly

これにより、Aでコマンドが実行されます。

/usr/bin/ssh -l backupmaker B sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home
/usr/bin/rsync -a --rsync-path='sudo rsync' --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh backupmaker@B:/home /.snapshots/hourly.0/backupmaker/

Bの場合:

sh -c sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home

/var/log/rsnapshotログを見つけます。

関連情報