当前位置: 首页 > news >正文

ubuntu 使用 rsync 的 SSH 方式同步备份远程WEB服务器

ubuntu 20.04 自带 rsync ,对于 WEB 服务器这种更新频率不高的情况,直接使用定时同步复制远程服务器的方法,比较直接和简单!

$ rsync --version
rsync version 3.1.3 protocol version 31

参考:
Ubuntu20.04中的rsync命令

本次主要使用 SSH 方式来完成,抄录一下参考文章

5.1 SSH 协议
rsync 除了支持本地两个目录之间的同步,也支持远程同步。它可以将本地内容,同步到远程服务器。rsync -av source/ username@remote_host:destination
也可以将远程内容同步到本地。rsync -av username@remote_host:source/ destination
rsync 默认使用 SSH 进行远程登录和数据传输。由于早期 rsync 不使用 SSH 协议,需要用-e参数指定协议,后来才改的。所以,下面-e ssh可以省略。rsync -av -e ssh source/ user@remote_host:/destination
但是,如果 ssh 命令有附加的参数,则必须使用-e参数指定所要执行的 SSH 命令。rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination
上面命令中,-e参数指定 SSH 使用2234端口。

环境

  1. 远程
    ubuntu 2004 server
    192.168.0.196
    nginx/1.18.0 (Ubuntu)

  2. 本地
    ubuntu 2004 server
    192.168.0.194
    nginx/1.18.0 (Ubuntu)

既然作为同步备份,建议本地和远程设置同样环境,使用同样user!

操作和测试

  1. 将远程(192.168.0.196)服务器上 /var/www 同步复制到本机~/bak-www-196 目录

    注意 /var/www 和 /var/www/ 不一样

    /var/www :会创建 www 目录,并复制 www目录下的文件和下级子目录

    /var/www/:只复制 www 目录下的文件和目录,不会创建 www 目录

    为了简化,远程和本地使用相同的用户,如果用户名不一样,需要加上远程用户名( 假设远程用户名是 user)

    例如:$ rsync -av user@192.168.0.196:/var/www ~/bak-www-196

     $ rsync -av 192.168.0.196:/var/www ~/bak-www-196
    
  2. 同理,同步备份网站配置目录

     $ rsync -av 192.168.0.196:/etc/nginx/sites-available ~/bak-www-196$ rsync -av 192.168.0.196:/etc/nginx/sites-enabled ~/bak-www-196
    

配置密钥方式 SSH

  1. 在本地(192.168.1.194)
    ssh-keygen
    简单起见,一路回车!passphrase 也是空着!

  2. 上传本地(192.168.1.194) 自己的公钥到 远程(192.168.1.196)
    ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.196

  3. 在远程(192.168.1.196)修改 sshd_config ,开启 PubkeyAuthentication

设置定时任务

假设每天晚上 23 点 10 分,执行 rsync -av 192.168.0.196:/var/www ~/bak-www-196 …

如果愿意,自行编写 shell 脚本
假设ssh 端口已经改变为 22222
写法要加上 -e ‘ssh -p 22222’

$ rsync -av -e ‘ssh -p 22222’ 192.168.0.196:/var/www ~/bak-www-196

$ crontab -e

...
# m h  dom mon dow   command
10 23 * * * rsync -av -e 'ssh -p 22222' 192.168.0.196:/var/www ~/bak-www-196 >/dev/null 2>&1
...

查看确认

$ crontab -l

设置 log

	$ cd /etc/rsyslog.d/$ sudo vim 50-default.conf 解除注释 cron.*                          /var/log/cron.log$ sudo systemctl restart cron$ sudo systemctl status cron

查看 log

$ less  /var/log/cron.log 

rsync 和 scp 区别

rsync 可以完成增量备份 , scp 每次都完全复制

实际操作一次,会发现 scp 每次都全部 cp

$ scp -r 192.168.0.196:/var/www ~/bak-www-196

196-7                                         100%    7    10.4KB/s   00:00    
194-3                                         100%    4     0.0KB/s   00:00    
......
196-2                                         100%    7    11.7KB/s   00:00    
1.txt                                         100%    4     6.7KB/s   00:00    
index.nginx-debian.html                       100%  612     2.9KB/s   00:00  

第一次,rsync 也会全部复制

$ rsync -av 192.168.0.196:/var/www ~/bak-www-196

receiving incremental file list
......
www/html/test/test1/test1.txt
www/html/test/test1/test2/test2sent 358 bytes  received 1,032 bytes  556.00 bytes/sec
total size is 683  speedup is 0.49

重复一次,不会再次复制
$ rsync -av 192.168.0.196:/var/www ~/bak-www-196

receiving incremental file listsent 29 bytes  received 473 bytes  334.67 bytes/sec
total size is 683  speedup is 1.36
http://www.lryc.cn/news/100678.html

相关文章:

  • 机器学习 | Python实现NARX模型预测控制
  • M5ATOMS3基础03给ROS1发一个问候(rosserial)
  • 基于Vue3实现鼠标按下某个元素进行移动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
  • 使用MyBatis(2)
  • 【FPGA/D6】
  • 【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)
  • 【Spring】IOC的原理
  • AI加速游戏开发 亚马逊云科技适配3大场景,打造下一代游戏体验
  • C++ | 继承(基类,父类,超类),(派生类,子类)
  • Commands Of Hadoop
  • SQL-每日一题【620.有趣的电影】
  • linux 精华总结
  • Eureka 学习笔记2:客户端 DiscoveryClient
  • okhttp原理分析
  • freeswitch的mod_xml_curl模块
  • 高速数据采集专家-FMC140【产品手册】
  • 【SSM】知识集锦
  • Flowable-中间事件-信号中间抛出事件
  • 【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)
  • 封装(Encapsulation)
  • php 原型模式
  • LiveGBS流媒体平台GB/T28181功能-支持轮巡播放分屏轮巡值守播放监控视频轮播大屏轮询播放
  • 6、Nginx实现反向代理
  • Leetcode——404 左叶子之和
  • R并行计算-parallel例子1
  • JavaSE复盘2
  • 如何在3ds max中创建可用于真人场景的巨型机器人:第 3 部分
  • Android性能优化之游戏引擎初始化ANR
  • Jmap-JVM(十六)
  • 【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)