Heim > Backend-Entwicklung > PHP-Tutorial > Denken Sie daran, Remote-Serverdateien schrittweise mit rsync zu synchronisieren

Denken Sie daran, Remote-Serverdateien schrittweise mit rsync zu synchronisieren

WBOY
Freigeben: 2016-08-08 09:24:37
Original
911 Leute haben es durchsucht

rsync Remote Shell synchronisiert inkrementell Daten

Es gibt zwei Möglichkeiten, Dateien mit rsync zu synchronisieren: eine ist die Daemon-Methode (rsync-Daemon) und die andere ist die Remote-Shell-Methode (rsync-Remote-Shell).

Der Unterschied zwischen den beiden Methoden

Daemon-Modus, diese Methode stellt über TCP eine Verbindung zum Remote-rsync-Daemon her. Sie müssen eine Konfigurationsdatei verwenden und den Daemon-Prozess aktivieren.

<code>rsync [OPTION] user@host::src dest
rsync [OPTION] src user@host::dest</code>
Nach dem Login kopieren

Remote-Shell-Methode, diese Methode erfordert keine Verwendung von Konfigurationsdateien oder Daemon-Prozessen.

<code>rsync [OPTION] user@host:src dest
rsync [OPTION] src user@host:dest</code>
Nach dem Login kopieren

Die Daemon-Methode ist zu mühsam, um die Konfigurationsdatei und den Daemon-Prozess einzurichten. Daher habe ich die Remote-Shell-Methode zur Synchronisierung wie folgt ausgewählt:

<code>  rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/</code>
Nach dem Login kopieren

Die Parameter avr --delete repräsentieren jeweils

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

Wenn alles normal ist, werden Sie beim Ausführen des obigen Synchronisierungsbefehls aufgefordert, das Kennwort des yanruitao-Benutzers auf dem Remote-Computer einzugeben (beim ersten Mal werden Sie gefragt, ob eine Beziehung hergestellt werden soll (anscheinend I Ich habe das Spezifische vergessen.) Drücken Sie einfach die Eingabetaste und führen Sie es aus. Nach Abschluss wird es gemäß den Regeln synchronisiert.

Aber es gibt ein Problem. Ich möchte jeden Tag um 14:00 Uhr eine inkrementelle Synchronisierung durchführen. Zu diesem Zeitpunkt muss ich eine Vertrauensbeziehung herstellen zwei Maschinen

Stellen Sie eine Vertrauensbeziehung zwischen zwei Maschinen her

Bevor wir eine Vertrauensbeziehung aufbauen, werfen wir einen Blick auf die Verschlüsselung und Authentifizierung basierend auf öffentlichen Schlüsseln und privaten Schlüsseln

Signaturprozess mit privatem Schlüssel

Das Bild unten ist gestohlen, haha, es ist perfekt, dieses Bild zu verwenden, um den Authentifizierungsprozess zu verstehen:

<code>消息-->[私钥]-->签名-->[公钥]-->认证
私钥数字签名,公钥验证</code>
Nach dem Login kopieren
  1. Alice generiert einen öffentlichen Schlüssel und einen privaten Schlüssel und sendet den öffentlichen Schlüssel an Bob.
  2. Alice verwendet ihren privaten Schlüssel, um eine Signatur zu generieren, bei der es sich um eine Verschlüsselung handelt.
  3. Alice sendet die unterschriebenen Informationen an Bob.
  4. Bob verwendet Alices öffentlichen Schlüssel, um die Signatur zu entschlüsseln und ihre Echtheit zu überprüfen.
    Denken Sie daran, Remote-Serverdateien schrittweise mit rsync zu synchronisieren
Verschlüsselungsprozess mit öffentlichem Schlüssel

Das Bild unten ist ebenfalls gestohlen (es ist einfacher zu verstehen, wenn Sie ein Bild haben). Hier sendet Alice Informationen über die symmetrische Schlüsseltechnologie an Bob:

<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息
公钥加密,私钥解密</code>
Nach dem Login kopieren
  1. Bob generiert seine eigenen öffentlichen und privaten Schlüssel und sendet den öffentlichen Schlüssel an Alice.
  2. Alice verwendet Bobs öffentlichen Schlüssel, um die Nachricht zu verschlüsseln.
  3. Alice sendet die verschlüsselten Informationen an Bob.
  4. Bob verwendet seinen privaten Schlüssel, um die von Alice gesendeten Informationen zu entschlüsseln und abzurufen.
    Denken Sie daran, Remote-Serverdateien schrittweise mit rsync zu synchronisieren

Stellen Sie eine Vertrauensbeziehung zwischen Hosts her

Nachdem wir das obige Wissen über öffentliche Schlüssel und private Schlüssel verstanden haben, bauen wir nun eine Vertrauensbeziehung zwischen zwei Hosts auf.

, , um eine Vertrauensbeziehung mit 100 auf 101 herzustellen (dh 100 muss beim Anmelden bei 101 kein Passwort eingeben), wird diesmal der Signaturprozess mit privatem Schlüssel verwendet:
Generieren Sie den öffentlichen Schlüssel und den privaten Schlüssel im Home-Verzeichnis von yanruitao192.168.1.100 (die vorhandenen können ignoriert werden)
<code>ssh-keygen -t rsa
#执行完之后会在家目录下的.ssh文件夹下生成id_rsa、id_rsa.pub两个文件,后者是公钥。
scp .ssh/id_rsa.pub yanruitao@192.168.1.101:/home/yanruitao/
#scp同样是通过remote shell的方式传送文件,回车之后会提示输入密码,此时
#还未建立信任关系,因此需要输入密码。确认100的公钥发送给101</code>
Nach dem Login kopieren
Stellen Sie eine Vertrauensbeziehung mit yanruitao192.168.1.100 im Home-Verzeichnis von yanruitao192.168.1.101 her
<code>#将刚才传送的100机器的公钥写入101yanruitao及目录下的.ssh/authorized_keys文件
cat id_rsa.pub >> .ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#至此就在yanruitao@192.168.1.101上对192.168.1.100建立了信任关系</code>
Nach dem Login kopieren
Crontab festlegen
<code>0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/
#设置完成,每天02:00分会执行一次增量同步</code>
Nach dem Login kopieren
Es sind Probleme aufgetreten

Natürlich kann es bei der tatsächlichen Bedienung zu Problemen kommen, die Benutzernamen der beiden Maschinen waren unterschiedlich, eine war yanruitao und die andere war mywife (haha, nicht lachen). Yanruitao, es besteht eine Vertrauensbeziehung zum Mywife-Lebenslauf. Zu diesem Zeitpunkt müssen Sie die oben genannten Schritte erneut ausführen, um die Vertrauensbeziehung im Mywife-Home-Verzeichnis herzustellen. Ein weiteres Problem besteht darin, dass der Besitzer des Ordners /export/wwwroot/htdocs/files/ auf dem Rechner von mywife mywife sein muss:

<code>#修改文件夹所有者为mywife
sudo chown mywife:users /export/wwwroot/htdocs/files/</code>
Nach dem Login kopieren

Andernfalls wird möglicherweise ein Fehler gemeldet (ich habe den spezifischen Fehler vergessen, obwohl er anscheinend keine Auswirkung auf die Synchronisierung hat, wird jedoch 23 zurückgegeben, was sich auf die folgenden Vorgänge auswirkt). auch hier.

Referenzartikel

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

Das Urheberrecht an diesem Artikel liegt für immer beim Autor (). Nachdruck des Artikels ist ohne Zustimmung des Autors untersagt und der Autor muss auf der Artikelseite eindeutig angegeben werden, andernfalls behalten wir uns eine rechtliche Haftung vor.

Das Obige hat die inkrementelle Synchronisierung von Remote-Server-Dateien mit rsync vorgestellt, einschließlich der folgenden Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage