パスワードを入力せずに2つのホスト間でrsyncを設定するにはどうすればよいですか?
以下は The Geek Stuff の記事です。
1。 ssh経由のrsyncをテストします(パスワード付き):
Rsyncを実行して、リモートサーバー上のアカウントのパスワードを要求し、ファイルをリモートサーバーに正常にコピーすることを確認します。
次の例では、ローカルフォルダー
/home/test
をリモートフォルダに/backup/test
(オン192.168.200.10
サーバー)。これにより、リモートサーバー上のアカウントのパスワードが要求されます。
rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
2。 ssh-keygenはキーを生成します。
Sshを実行するときにパスワードを要求しないように
ssh
を設定します。使用するssh-keygen
ローカルサーバーで公開キーと秘密キーを生成します。$ ssh-keygen
パスフレーズを入力(パスフレーズがない場合は空):
同じパスフレーズをもう一度入力します。注:パスフレーズの入力を求められたら、Enterキーを押すだけで、ここではパスワードを入力しないでください。
3。 ssh-copy-idは公開鍵をリモートホストにコピーします
使用する
ssh-copy-id
、公開鍵をリモートホストにコピーします。ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
注:上記では、リモートホストのユーザーアカウントのパスワードを要求し、公開鍵を適切な場所に自動的にコピーします。 ssh-copy-idが機能しない場合は、前述の方法を使用して、sshパスワードなしのログインを設定します。
4。パスワードなしでssh経由でrsyncを実行します
これで、パスワードを入力せずにリモートホストにsshできるようになります。
ssh [email protected]
もう一度rsyncを実行します。今回はパスワードの入力を求められることはありません。
rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
ServerAで公開鍵を生成する
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
公開鍵が生成され、次の場所に保存されます
~/.ssh/id_rsa.pub
公開鍵をリモートホストにコピーする
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
または
~/.ssh/authorized_keys
に追加します。ファイルが存在しない場合は作成します。ファイルモードが700であることを確認します。これらすべてのrsync提案は、Ubuntu 16.04 LTSで2017年8月に最新バージョンを使用すると失敗します。それらのどれも動作しません。
また、ファイルサーバーで実行するrsyncデーモンを必要とする欠点も共有しています。
この回答は一般的なLinux NASで機能します
手順は次のとおりです:
1)以下に示すようにrsyncを使用します。 (作成した/ mntまたは/ mediaの下のディレクトリ、またはマウントしたデバイス上。どちらでもかまいません。)2)以下に示すように、scpでファイルを転送します。 FileZillaも機能します。
これすべて(FileZillaを除く)はパスワードなしでcronで機能します。
この設定は非常にうまく機能します。パスワードが必要になるのは、最初のssh-copy-idをセットアップしてRSAパスワードなしログインをセットアップするときだけです。次に、FileZillaに1回プログラムします。その後、毎日、パスワードプロンプトは表示されません。これは簡単。そして最良の部分は、rsyncプログラムのすべての利点を使用できることです。
この回答は、パスワードなしでrsync自体を使用する方法を説明しています。
また、いずれかのシステムにさらに別のデーモン(rsync)をインストールする必要はありません。
まだの場合は、次のようにします。
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
これでテストしてみてください:
ssh NASserver
そしておそらくこのようなもの:
scp myfile myusername@NASserver:Documents
2台目のハードドライブがあるので、rsyncを使用してブートドライブをsdb1のサブディレクトリにコピーします(/ mntの下にマウントされ、rsyncから除外されます)。
物理ハードドライブがなく、十分な空き容量がある場合は、/ mnt(または/ media)の下にサブディレクトリを作成して使用します。
ディレクトリが除外されている限り、別のドライブにあるかどうかは関係ありません。
バックアップスクリプトは次のとおりです。
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time Sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
Rsyncがスクリプトを使用した後:
ターゲットNASserver:/ mnt/fullsys/mysystemに常に新しいディレクトリを作成するので、関連するファイルのみが転送されます。
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
出来上がり!しばらくかかりますが、それで完了です。
どちらのスクリプトもcronで正常に機能します。
代わりに、FileZillaを使用してNASサーバーを手動で送信します。
削除がある可能性があるので、私は常に
make a new directory and enter it
ターゲット1TB HDDのFileZillaを介して、関連ファイルのみが転送されます。
転送が完了したときにのみ、古いバージョンを削除します。
Voila。Success。