Jadual Kandungan
两种方式的区别
两台机器之间建立信任关系
私钥签名过程
公钥加密过程
建立主机之间的信任关系
在yanruitao192.168.1.100的家目录下生成公钥和私钥(已经有的可以忽略)
在yanruitao192.168.1.101的家目录下对yanruitao192.168.1.100建立信任关系
设置crontab
遇到的问题
参考文章
Rumah pembangunan bahagian belakang tutorial php 记一次rsync增量同步远程服务器文件

记一次rsync增量同步远程服务器文件

Aug 08, 2016 am 09:24 AM
rsync

rsync remote shell 增量方式同步数据

rsync同步文件有两种方式,一种是daemon的方式(rsync daemon)另一种方式是通过远程shell方式(rsync remote shell)。

两种方式的区别

daemon方式,这种方式通过TCP方式连接远程rsync daemon,需要使用配置文件,并启用daemon进程。

<code>rsync [OPTION] user@host::src dest
rsync [OPTION] src user@host::dest</code>
Salin selepas log masuk

remote shell方式,这种方式不需要使用配置文件,也不需要daemon进程。

<code>rsync [OPTION] user@host:src dest
rsync [OPTION] src user@host:dest</code>
Salin selepas log masuk

daemon方式太麻烦了,好要去设置配置文件和daemon进程,因此我选用了remote shell方式,就像下面这样去同步:

<code>  rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/</code>
Salin selepas log masuk

其中参数avr --delete分别表示

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

如果一切正常的话,当运行上面的同步命令,会提示输入远程机器yanruitao用户的密码(第一次的话会提示是否建立关系(好像是,具体忘了),直接回车就行),执行完之后会按照规则去同步。

但是有个问题,我要添加一个crontab任务,在每天2点钟去增量同步一次,这个时候我不能去输密码,这个时候就得在两台机器上建立信任关系

两台机器之间建立信任关系

在建立信任关系之前先看看基于公钥、私钥的加密和认证

私钥签名过程

下面这张图是盗来的,哈哈,用这张图理解认证过程再合适不过了:

<code>消息-->[私钥]-->签名-->[公钥]-->认证
私钥数字签名,公钥验证</code>
Salin selepas log masuk
  1. Alice生成公钥和私钥,并将公钥发送给Bob。
  2. Alice用自己的私钥生成签名,也就是加密。
  3. Alice将签名的信息发送给Bob。
  4. Bob用Alice的公钥进行解密,验证签名真伪。
    记一次rsync增量同步远程服务器文件
公钥加密过程

下面这张图也是盗来的(有图就是好理解),下面是Alice通过对称密钥技术发送信息给Bob:

<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息
公钥加密,私钥解密</code>
Salin selepas log masuk
  1. Bob生成自己的公钥和私钥,并将公钥发送给Alice。
  2. Alice用Bob的公钥对信息进行加密。
  3. Alice将加密后的信息发送给Bob。
  4. Bob用他的私钥进行解密,得到Alice发送的信息。
    记一次rsync增量同步远程服务器文件

建立主机之间的信任关系

了解了上面公钥和私钥的知识,现在我们来在两个主机之间建立信任关系,,要在101上对100建立信任关系(也就是100登录101的时候不需要输入密码),这个时候就用到了私钥签名的过程:

在yanruitao192.168.1.100的家目录下生成公钥和私钥(已经有的可以忽略)
<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>
Salin selepas log masuk
在yanruitao192.168.1.101的家目录下对yanruitao192.168.1.100建立信任关系
<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>
Salin selepas log masuk
设置crontab
<code>0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/
#设置完成,每天02:00分会执行一次增量同步</code>
Salin selepas log masuk
遇到的问题

当然了,自己实际操作的时候可能遇到问题,我在弄的时候,两台机器的用户名是不同的,一个yanruitao一个mywife(哈哈,勿笑),在yanruitao对mywife简历信任关系,这个时候就需要重新在mywife家目录下操作上面的建立信任关系步骤。还有一个问题就是,在mywife机器上的/export/wwwroot/htdocs/files/文件夹的所有者一定要是mywife:

<code>#修改文件夹所有者为mywife
sudo chown mywife:users /export/wwwroot/htdocs/files/</code>
Salin selepas log masuk

不然可能会报错(具体错误我忘了,在公司碰到的),虽然好像不影响同步,但是$?会返回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

本文版权归作者iforever()所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

以上就介绍了记一次rsync增量同步远程服务器文件,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Mar 28, 2025 pm 05:11 PM

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Mar 28, 2025 pm 05:12 PM

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Apr 01, 2025 pm 03:12 PM

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Apa sebenarnya ciri yang tidak menyekat ReactPhp? Bagaimana untuk mengendalikan operasi I/O yang menyekatnya? Apa sebenarnya ciri yang tidak menyekat ReactPhp? Bagaimana untuk mengendalikan operasi I/O yang menyekatnya? Apr 01, 2025 pm 03:09 PM

Pengenalan rasmi kepada ciri yang tidak menyekat ReactPhp yang mendalam tafsiran mengenai ciri-ciri yang tidak menyekat ReactPhp telah menimbulkan banyak soalan pemaju: "ReactPhpisnon-blockingbydefault ...

See all articles