背景,配置好了ssh 使用rsa pulbic key的方式登陆远程服务器。//ssh-keygen -t rsa -b 2048 -f andy-rsync-key -P ''
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
然后就有了本篇的主体,通过rsync来同步远程和本地的数据。
本篇的拓展,开发一个手机app, 通过http协议调用 php(或其他语言写的http接口), 实现自动化便捷控制。@todo
--------------------------------------------------------------------------------------------------------------------------------
rsync 用来同步两台主机上的目录(或文件)
/home/fly/ljl
rsync -chavzP --stats . 120.79.14.84:/fly/ljl/
-------------------------------------------------------------
反过来,也是一样,把远程的同步到本地机器:
rsync -chavzP --stats 120.79.14.84:/fly/ljl/* .
远程---》本地, 本地----》远程, 其实都是数据从左端-------》右端。(数据从左端流向右端, 从左端同步到右端)。
注意:同步的时候,如果左端有新增或修改的文件(目录),右端也有新增的文件,左端的文件(新增或修改) 会同步到右端去, 右端上面新增的文件不会同步到左端, 右端上面修改的文件会被左端的覆盖。
也就是说,同步之后,右端的文件以左端的文件为最新版本,会把左边的文件全部拷贝到右边。右边自己已有的新文件不动。
实际传输
不加压缩参数 -z 的话,
---------------------------------------------------------------------------------------
写成php的自动同步脚本:
shell_exec()函数
rsync.php
<?php echo shell_exec("rsync -chavzP --stats . 120.79.14.84:/fly/ljl/");
//或者改用绝对路径
//echo shell_exec("rsync -chavzP --stats /home/fly/ljl/ 120.79.14.84/fly/ljl");
运行一下这个 rsync.php文件就可以同步了。
php rsync.php
用反引号的方式:
<?php $m = `ls -al`; echo $m;
PHP supports one execution operator: backticks (``),Use of the backtick operator is identical to shell_exec().
-----------------------------------------------------------------------------------------------------------2018年12月11日-----------------
补充: rsync 可以使用不同的端口,并不要求两台服务器的 ssh端口都一致
下面本机的ssh 端口是 3000, 而远端的端口是 22