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.mzph.cn/news/16074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux6.2 ansible 自动化运维工具(机器管理工具)

文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具(机器管理工具)一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …

11-3_Qt 5.9 C++开发指南_QSqlQuery的使用(QSqlQuery 是能执行任意 SQL 语句的类)

文章目录 1. QSqlQuery基本用法2. QSqlQueryModel和QSqlQuery联合使用2.1 可视化UI设计框架2.1.1主窗口的可视化UI设计框架2.1.2 对话框的可视化UI设计框架 2.2 数据表显示2.3 编辑记录对话框2.4 编辑记录2.5 插入记录2.6 删除记录2.7 记录遍历2.8 程序框架及源码2.8.1 程序整体…

VB社区人口资源管理系统设计与实现

居民小区户籍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,容易使用等特点。 本系统主要完成对小区居民户籍的…

《TCP IP网络编程》第十三章

第 13 章 多种 I/O 函数 13.1 send & recv 函数 Linux 中的 send & recv&#xff1a; send 函数定义&#xff1a; #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); /* 成功时返回发送的字节数&#xff0c;失败…

【MongoDB】--MongoDB聚合Aggregation

目录 一、前言二、聚合管道操作2.1、实际案例1(1)、案例--根据学生no&#xff0c;找到对应班级名称(2)、案例--这个班级有哪些学生和哪些老师在任课 2.2、实际案例2(1)、案例--主表和关联表都有条件限制&#xff0c;且分页返回 一、前言 聚合操作组值来自多个文档&#xff0c;…

【高级数据结构】线段树

目录 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 线段树1&#xff08;区间修改&#xff0c;区间查询&#xff09; 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 洛谷&#xff1a;最大数https://www.luogu.com.cn/problem/P1198 题目描述 …

springboot和springcloud的联系与区别

什么是springboot&#xff1f; Spring Boot是一个用于简化Spring应用程序开发的框架。它提供了一种约定优于配置的方式&#xff0c;通过自动配置和快速开发能力&#xff0c;可以快速搭建独立运行、生产级别的Spring应用程序。 在传统的Spring应用程序开发中&#xff0c;需要手…

网络防御之VPN

配置IKE 第一阶段 [r1]ike proposal 1 [r1-ike-proposal-1]encryption-algorithm aes-cbc-128 [r1-ike-proposal-1]authentication-algorithm sha1 [r1-ike-proposal-1]dh group2 [r1-ike-proposal-1]authentication-method pre-share[r1]ike peer aaa v1 [r1-ike-peer-aaa…

c# winform 子窗体关闭时主窗体执行指令

按下一个按钮打开子窗体&#xff0c;点 x 关闭子窗体后主窗体自动执行某些指令。例如刷新窗体&#xff0c;加载数据等。 点 x 关闭子窗体后将会执行"刷新父窗体2"下面的内容&#xff0c;其他的没试。 Config readConfigTest new Config();//new一个子窗体并打开 re…

面向对象中的多态性

一、权限修饰符 public, 缺省&#xff0c; protected&#xff0c;private 二、this和super关键字 this:表示当前对象 super:表示父类声明的成员 原则&#xff1a;遵循就近原则和追根溯源原则。 三、Object类 java.lang.Object类是所有java类的超类&#xff0c;即所有的J…

【算法心得】二维dp的状态转移狂练

LCS&#xff1a; LCS变式&#xff1a;使两个字符串变成一样的&#xff0c;删除的和最小 https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/ 建表 m ∗ n m*n m∗n or ( m 1 ) ∗ ( n 1 ) (m1)*(n1) (m1)∗(n1)&#xff1f; 感觉 ( m 1 ) ∗ ( n …

git从主仓库同步到fork仓库

git从主仓库同步到fork仓库 1. fork远程仓库到本地仓库2. 将远程仓库添加到本地3. 更新本地项目主库地址4. 将远程仓库更新到本地仓库5. 将本地仓库合到远程分支 1. fork远程仓库到本地仓库 方式一&#xff1a;通过git命令 git clone fork库地址方式二&#xff1a;通过git页面…

VBA技术资料MF36:VBA_在Excel中排序

【分享成果&#xff0c;随喜正能量】一个人的气质&#xff0c;并不在容颜和身材&#xff0c;而是所经历过的往事&#xff0c;是内在留下的印迹&#xff0c;令人深沉而安谧。所以&#xff0c;优雅是一种阅历的凝聚&#xff1b;淡然是一段人生的沉淀。时间会让一颗灵魂&#xff0…

Dart语言学习笔记(一)

1、命名规则 /*** 1&#xff09;.变量名称必须包含数字&#xff0c;字母&#xff0c;下划线&#xff08;_&#xff09;&#xff0c;和美元符号&#xff08;$&#xff09;组成 2&#xff09;.标识符的开头不能是数字开头3&#xff09;.标识符不能使用关键字和保留字4&#xff…

jMeter使用随记

参数化BodyData 先制作参数文件 再设置一个csv data set config 最后在body data里面写上参数${xxxxx}

实用调试技巧(1)

什么是bug&#xff1f;调试是什么&#xff1f;有多重要&#xff1f;debug和release的介绍。windows环境调试介绍。一些调试的实例。如何写出好&#xff08;易于调试&#xff09;的代码。编程常见的错误。 什么是Bug 我们在写代码的时候遇到的一些问题而导致程序出问题的就是Bu…

vue使用Clodop插件打印

一、前往lodop官网&#xff0c;下载插件&#xff0c;http://www.lodop.net/index.html 这里下载的window64位的&#xff0c;将插件安装好&#xff0c;运行&#xff0c;会看到 点击‘去了解C-Lodop>>’,会跳转至使用说明页面&#xff0c;在这个页面里&#xff0c;可以打印…

华为OD机考真题--数大雁--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 题目描述: 一群大雁往南飞&#xff0c;给定一个字符串记录地面上的游客听到的大雁叫声&#xff0c;请…

在登录界面中设置登录框、多选项和按钮(HTML和CSS)

登录框&#xff08;Input框&#xff09;的样式&#xff1a; /* 设置输入框的宽度和高度 */ input[type"text"], input[type"password"] {width: 200px;height: 30px; }/* 设置输入框的边框样式、颜色和圆角 */ input[type"text"], input[type&q…

使用maven容器打包java项目

docker run --rm -v /path/to/your/microservice:/app -w /app maven:latest mvn clean package 解释一下上面的命令&#xff1a; docker run&#xff1a;运行Docker容器。--rm&#xff1a;在容器运行结束后自动删除容器&#xff0c;避免堆积未使用的容器。-v /path/to/you…