ホームページ > バックエンド開発 > PHPチュートリアル > リモート サーバー ファイルを増分同期するには、必ず rsync を使用してください

リモート サーバー ファイルを増分同期するには、必ず rsync を使用してください

WBOY
リリース: 2016-06-13 12:19:31
オリジナル
878 人が閲覧しました

rsync はリモート サーバー ファイルを増分的に同期します。

rsync リモート シェルはデータを増分的に同期します。

rsync がファイルを同期するには 2 つの方法があります。1 つはデーモン メソッド (rsync デーモン) です。もう 1 つは、デーモン メソッド (rsync デーモン) です。リモート シェル (rsync リモート シェル) を使用します。

2 つのメソッドの違い

デーモン メソッド このメソッドは、設定ファイルを使用してデーモン プロセスを有効にする必要があります。

<code>rsync [OPTION] [email protected]::src destrsync [OPTION] src [email protected]::dest</code>
ログイン後にコピー

リモート シェル メソッド。このメソッドでは、設定ファイルやデーモン プロセスを使用する必要はありません。

<code>rsync [OPTION] [email protected]:src destrsync [OPTION] src [email protected]:dest</code>
ログイン後にコピー

デーモン方式は設定ファイルやデーモンプロセスの設定が面倒なので、以下のようにリモートシェル方式で同期することにしました。

<code>  rsync -avr --delete [email protected]:/export/test/htdocs/files/ /export/test/htdocs/files/</code>
ログイン後にコピー

ここでパラメータは avr --delete はそれぞれ

<code>-a 归档(archive)模式,以递归方式传输文件,并保持文件属性-v 输出同步的详细信息(verbose)-r 对子目录进行递归模式处理(recursive)--delete 删除源(SRC)中没有目标(DST)中有的文件</code>
ログイン後にコピー

を表します。すべてが正常であれば、上記の同期コマンドを実行すると、リモート マシンで yanruitao ユーザーのパスワードを入力するように求められます (初回は、関係を確立するかどうかを尋ねられます( だったような気がします。詳細は忘れました)。Enter キーを押すだけです)、実行後、ルールに従って同期されます。

しかし、crontab タスクを追加して毎日 2 時に増分同期を実行したいのですが、この時点では信頼を確立する必要があります。 2 台のマシン上の関係

2 台のマシン間の信頼関係を確立します

信頼関係を確立する前に、まず公開鍵と秘密鍵に基づく暗号化と認証を確認します

秘密鍵署名プロセス

下の写真は盗用です、笑 この写真を使用して認証プロセスを理解するのは完璧です:

<code>消息-->[私钥]-->签名-->[公钥]-->认证私钥数字签名,公钥验证</code>
ログイン後にコピー
  1. アリスは公開鍵と秘密鍵を生成します。 、公開キーを Send to Bob に転送します。
  2. アリスは秘密鍵を使用して署名 (暗号化) を生成します。
  3. アリスは署名された情報をボブに送信します。
  4. ボブはアリスの公開鍵を使用して署名を復号化し、署名の信頼性を検証します。
    リモート サーバー ファイルを増分同期するには、必ず rsync を使用してください
公開鍵暗号化処理

下の写真も盗用です(写真があるとわかりやすいです) 以下はアリスが送信するものです。対称鍵テクノロジー ボブへの情報:

<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息公钥加密,私钥解密</code>
ログイン後にコピー
  1. ボブは自分の公開鍵と秘密鍵を生成し、その公開鍵をアリスに送信します。
  2. アリスはボブの公開鍵を使用してメッセージを暗号化します。
  3. アリスは暗号化された情報をボブに送信します。
  4. ボブは秘密鍵を使用して、アリスから送信された情報を復号し、取得します。
    リモート サーバー ファイルを増分同期するには、必ず rsync を使用してください

ホスト間の信頼関係の確立

公開鍵と秘密鍵に関する上記の知識を理解した上で、2 つのホスト間の信頼関係を確立しましょう。

に yanruitao、192 ドット 168 ドット 1 ドット 101yanruitao という 2 つのマシンがあり、100 と 101 の信頼関係を確立するとします (つまり、100 も同様です) 101 にログインするときにパスワードを入力する必要はありません)。このとき、秘密鍵署名プロセスが使用されます:
yanruitao192.168.1.100 のホーム ディレクトリに公開鍵と秘密鍵を生成します。すでに持っている可能性があります) 無視します)
<code>ssh-keygen -t rsa#执行完之后会在家目录下的.ssh文件夹下生成id_rsa、id_rsa.pub两个文件,后者是公钥。scp .ssh/id_rsa.pub [email protected]:/home/yanruitao/#scp同样是通过remote shell的方式传送文件,回车之后会提示输入密码,此时#还未建立信任关系,因此需要输入密码。确认100的公钥发送给101</code>
ログイン後にコピー
yanruitao192.168.1.101 のホーム ディレクトリで yanruitao192.168.1.100 との信頼関係を確立します
<code>#将刚才传送的100机器的公钥写入101yanruitao及目录下的.ssh/authorized_keys文件cat id_rsa.pub >> .ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys[email protected]??任关系</code>
ログイン後にコピー
crontab を設定します
<code>0 */2 * * * rsync [email protected]:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/#设置完成,每天02:00分会执行一次增量同步</code>
ログイン後にコピー
発生した問題

もちろん、実際に操作すると問題が発生する可能性があります。私が実行したとき、2 台のマシンのユーザー名は異なっており、1 台は yanruitao で、もう 1 台は でした。 mywife (笑、笑わないでください) yanruitao と mywife の履歴書の信頼関係では、この時点で、上記の手順を実行して mywife ホーム ディレクトリの信頼関係を再度確立する必要があります。もう 1 つの問題は、mywife マシン上の /export/wwwroot/htdocs/files/ フォルダーの所有者が mywife である必要があることです。

<code>#修改文件夹所有者为mywifesudo chown mywife:users /export/wwwroot/htdocs/files/</code>
ログイン後にコピー

そうでない場合、エラーが報告される可能性があります (具体的なエラーは忘れましたが、会社が遭遇しました)、同期には影響しないようですが、$? が 23 を返し、以降の動作に影響が出ますので、注意してください。

参考記事

http://www.williamlong.info/archives/837.html
http://www.cnblogs.com/ymy124/archive/2012/04/ 04/2432432.html
http://www.zhihu.com/question/25912483

この記事の著作権は著者 ifforever (

1Fスノーデン
Windows で同様の便利なツールはありますか?
Re: ランニングマン
@スノーデン、窓の下はよく見えません~~
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート