rsync同步数据---把左边的文件全部拷贝到右边

背景,配置好了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

原文地址:https://www.cnblogs.com/oxspirt/p/10062930.html