好好爱自己!

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

1
2
<?php
echo shell_exec("rsync -chavzP --stats .  120.79.14.84:/fly/ljl/");<br>//或者改用绝对路径<br>//echo shell_exec("rsync -chavzP --stats /home/fly/ljl/ 120.79.14.84/fly/ljl");

运行一下这个 rsync.php文件就可以同步了。

php rsync.php

 

用反引号的方式: 

1
2
3
<?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

 

posted @   立志做一个好的程序员  阅读(1197)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2015-12-04 什么是线程安全和线程不安全
2015-12-04 JavaScript:有符号整数与无符号整数相互转化

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示