3つのubuntuサーバーがあります。work_svr1とwork_svr2はパブリックネットワークで実行されている作業サーバー、1つは作業用のwebappを実行しており、2つはバックアップサーバーです。また、個人がブログサーバーとして貸し出しているリモートサーバーもあります。仕事用サーバー1のデータと個人ブログサーバーのデータを毎日定期的に2サーバーにバックアップできることを願っています。
rsyncコマンドは、LAN / WANを介して複数のホスト間でファイルをすばやく同期できるリモートデータ同期ツールです。 rsyncは、いわゆる「rsyncアルゴリズム」を使用して、ローカルホストとリモートホスト間でファイルを同期します。このアルゴリズムは、ファイル全体を毎回送信するのではなく、2つのファイルの異なる部分のみを転送するため、速度は非常に高速です。 Rsyncは非常に強力なツールであり、そのコマンドにも多くの機能とオプションがあります。そのうちの3つを使用しました。オプションの使用に関する詳細な手順は、manコマンドを使用して表示できます。
# ローカルファイルをコピーします。 SRCパス情報とDESパス情報のどちらにも単一のコロンが含まれていない場合":"この作業モードは、セパレーターを使用するとアクティブになります。
rsync [OPTION]... SRC DEST
# リモートシェルプログラムを使用する(rsh、sshなど)ローカルマシンの内容のリモートマシンへのコピーを実現するため。 DSTパスアドレスに単一のコロンが含まれている場合":"このモードは、区切り文字のときにアクティブになります。
rsync [OPTION]... SRC [USER@]host:DEST
# リモートシェルプログラムを使用する(rsh、sshなど)リモートマシンの内容をローカルマシンにコピーするため。 SRCアドレスパスに単一のコロンが含まれている場合":"このモードは、区切り文字のときにアクティブになります。
rsync [OPTION]...[USER@]HOST:SRC DEST
- a,--アーカイブアーカイブモード。ファイルを再帰的に転送し、すべてのファイル属性を保持することを意味します。
- z,--compressは、送信中にバックアップされたファイルを圧縮します。
- Pはと同等です--部分的。その後の再転送を高速化するために、何らかの理由で完全に転送されていないファイルを保持します。
SSHパスワードなしの自動ログイン。これにより、スケジュールされた自動リモートバックアップ中にsshログインパスワードを入力する必要がなくなります。
まず、クライアントサーバー A
でユーザー a
の公開キーを生成します(パスフレーズを入力する必要はありません)。
a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase(empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/home/a/.ssh/id_rsa.
Your public key has been saved in/home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3 e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
次に、SSHを使用してユーザー b
として B
にログインし、 〜/ .ssh
ディレクトリを作成します(このディレクトリがすでに存在している可能性があります)。
a@A:~> ssh b@B mkdir -p .ssh
b@B's password:
最後に、クライアント A
の公開キーを B
側の authorized_keys
ファイルに追加します。
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password:
これで、パスワードを入力せずに B
にログインできます。
a@A:~> ssh b@B
# サーバーで作業する_svr2で実行されているブログのリモートバックアップ用のスクリプトプログラム(ブログはhexoに基づいており、強くお勧めします^_^)
rsync -azP [email protected]:/home/user/myblog /home/user/myblogbak > rsync.log
# webappコンテンツ
rsync -azP user@work_svr1:/var/www/webapp /home/user/> rsync.log
# 個人用gitプロジェクトのバックアップ
rsync -azP user@work_svr1:/home/user/prj_git /home/user/> rsync.log
最後に、 crontab-e
タイミングタスクを設定します。
この記事では、この[rsync
](https://link.jianshu.com/?t=http%3A%2F%2Fman.linuxde.net%2Frsync)とこの[ ssh
](https://link.jianshu.com/?t=http%3A%2F%2Fwww.linuxproblem.org%2Fart_9.html)の内容を部分的に参照しています。
Recommended Posts