@roaimaの洞察のおかげで、以下のリモートサーバーバックアップスクリプトが実際に私が望むようにSSH暗号化を使用しないことがわかりました。
私のrsyncコマンドはここにある例に基づいています。
https://www.man7.org/linux/man-pages/man1/rsync.1.html
rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest
ただし、現在のバックアップスクリプトの実行時に実際に発生する状況は次のとおりです。
1.) 指定されたユーザーとして ssh に接続し、
2.) マイログイン通知スクリプトが電子メールで ssh ユーザーのログインを確認します (接続解除/再接続時に繰り返し),
3.)質問:rsyncデーモンが接続されて作業を実行します。-外部-これは実際に私が望むSSHシェル暗号化を得ることができないことを意味します。
バックアップスクリプトを実行し、リモートサーバーでコマンドを実行してこれを確認しましたwho
。ssh-backup-user
-いいえ-rsyncデーモンの実行中にサーバーに接続します。
現在のバックアップスクリプト(root以外のユーザーとして実行する必要があります)
#!/bin/bash
while [ 1 ]
do
rsync -avxP --delete --append --checksum --timeout=180 --bwlimit=150 --rsync-path="sudo rsync" --log-file=/var/log/rsync.log --password-file=/etc/rsyncd.passwd -e "ssh -l backup-user" 111.22.333.444::data /media/user/WebMade/Server-Backups/Prod/today/
if [ "$?" = "0" ] ; then
echo "rsync completed normally"
exit
else
echo "Rsync failure. Backing off and retrying..."
sleep 10
fi
done
#EOF
たぶん誰かが何が起こっているのかを明確にすることができます。私がマニュアルページを誤って理解した(またはおそらく:-/)、提供された例は間違っています。
ありがとう
答え1
すべてが大丈夫です。ここでは問題ありません。
ここにある他の答えは部分的に間違っており、部分的に欠点がありません。あなたがしたことは、SSH接続を介してrsyncデーモンを作成して通信するための正しい文書化された方法です。このパターンに慣れていない人は、「」というrsyncマニュアルを確認することをお勧めします。リモートシェル接続によるRSYNC-Daemon機能の使用」。
--rsh
または、ダブルコロン構文と組み合わせ-e
て設定すると、このモードが有効になります。その後、RsyncはSSHを使用してリモートシステムに接続し、そこから(SSHセッションの下で)デーモンを作成し、SSHトンネルを介して通信します。 SSH認証と暗号化でデーモン専用機能を使用できるため、非常に便利なモードです。ssh
::
who
それが何をすると思うかは言いません。who
(w
他の選択肢と同様に)対話型セッションのみが一覧表示され、ssh
rsyncデーモンを起動するために使用されるセッションは対話型ではないため(またはシェルをまったく使用しないため)ここには表示されません。マニュアルで説明されているタスクを実行するためにrsyncを信頼しない場合は、ps -efH
View sshセッションとリモートシステムで実行されているrsyncデーモンを使用して、ss -t
ポート22のSSH以外のシステム間にTCP接続がないことを確認できます。strace
rsync プロセスで、rsync プロセスと ssh プロセス間の通信を確認します。
答え2
::
ターゲットパスソースにデュアルコロン()がある場合は、サービスの使用を示しますrsyncd
。単一コロン(:
)は(通常)ログインを意味しますssh
。
これが完了すると、リモートパスは/
アカウントがログインするホームディレクトリから始まるか、それと相対的でなければなりません。
例えば
[email protected]:docroot
削除--checksum
し、rsync
いつ使用するかを決定します。 (チェックサムを自動的にスキップする唯一のケースは、ファイルサイズと変更時間の両方が一致する場合です。)
バリアントの使用を中止してください--append
。〜する遅かれ早かれ、これはバックアップのデータ破損につながります。あなたはほぼ確実に--partial
これをしたいと思い、すでに含まれています-P
。
リモートシステムssh
にログインするために使用されます。backup-user
203.0.113.1
(たとえば)2つのディレクトリlogs
とを使用すると、website
次のコマンドラインを使用してバックアップできます。
rsync -aivP --delete [email protected]:website/ /my/local/copy
今理解できますコメントrsyncd
サービスからファイルをコピーする必要がありますが、安全なssh
(暗号化された)転送を提供する接続を介してファイルを転送しようとしています。便利なことに、マニュアルページにはrsync
実際に例があります。環境変数を設定してトンネルをRSYNC_CONNECT_PROG
定義しssh
、rsyncd
コマンド自体からサービスに接続します。
RSYNC_CONNECT_PROG='ssh [email protected] nc %H 873' rsync -aivP --delete localhost::data/ /my/local/copy
それでも注意してください。どちらのソリューションも、トロイの木馬などのWebページの破損から長期的な保護を提供しません。毎回バックアップを完全なLive Copyに置き換えるので、バックアップスクリプトを実行するとすぐに、ライブエラーがバックアップに伝播されます。考える政府財務大臣または、他のマルチレベルバックアップ計画(日曜日、火曜日、木曜日に1つずつ、3つの異なるバックアップ)。このツールはrsnapshot
上記のレイヤーとして効果的に達成できますrsync
。