rsync 文件备份
# rsync
# 实现文件的备份。
# 备份位置可以是当前主机,也可以是远程主机。
# rsync实现了完全备份和增量备份
# 可以做到:1.将本地主机的文件复制到另一个位置(本地、远程)。
# 2.将本地主机的文件推送到远程主机,页可以从远程主机拉取文件到本地。
# 使用模式:
# 1.shell模式:本地赋值功能
# 2.远程shell模式:可以利用ssj来实现数据的加密传输到远程主机
# 3.服务器模式:rsync工作在守护进程模式下
# 4.列表模式:ls
#
# 注意实现:
# 1.保证各个主机的时间一致(ntp)
# 2.实现文件的实时同步(rsync+inotify、rsync+sersync)
# inotify/sersync:将发生了改变的文件找出来
# 命令使用格式
# 一、本地模式:Local: rsync [OPTION...] SRC... [DEST]
# -p:赋值文件过程中,保持文件的属性不变
# -v:显示复制过程中的信息
# -a:使用归档模式(不然就会跳过目录)
# -z:在传输过程中,以压缩方式进行传输
# -e:"shh [-p22]"指定我们所使用的传输通道
# -r:递归复制
# --delete:让客户端和服务器端的文件完全一致
# --exclude:在进行文件上传的时候,排除指定的文件 # 二、远程shell模式:
# Pull(拉取): rsync [OPTION...] [USER@]HOST:SRC... [DEST]
# Push(推送): rsync [OPTION...] SRC... [USER@]HOST:DEST
# -e指定传输协议和端口,"/home/dir1"为本地目录,“root”远程的用户“10.0.0.5”为远程机子ip,“/tmp/”推送到哪里去
rsync -avz -e "ssh -p22" /home/dir1 root@10.0.0.5:/tmp/
rsync -avz -e "ssh -p22" root@10.0.0.5:/tmp/ /home/dir1 # 注意事项:
# 1.在传递文件的时候,会首先对比源和目的下的文件md5码,有更变才会进行传递
# 2.工作中通常都是rsync+ssh秘钥认证方式,目的是为了免密登录 # 三、服务器模式(后台运行)
# 准备:关闭selinux,关闭防火墙,配置时间同步
# rsync服务器模式是以模块的形式供其他机子同步和上传的,每个模块对应的是本地的一个目录,
# 所以我们需要通过rsyncd.conf文件来配置各个模块的参数,默认rsyncd.conf文件是不存在的,需要自己创建
touch /etc/rsyncd.conf
# 配置参数帮助文档
man rsyncd.conf
# rsyncd.conf 的构成
全局参数
...
[模块1]
模块参数
...
[模块2]
模块参数
... # 参数分为全局参数和模块参数。模块参数可以写在全局参数(对所有模块生效)。
# 全局参数
pid file:指定pid文件路劲
lock file:指定rsync进程锁在文件的路劲和名称
log file:rsync日志路劲和名称
port:指定端口
# 模块参数
path:指定备份目录的路劲
use chroot:是否将用户锁定在home目录
max connections:同时连接用户的最大数量
read only: 只读。也就是只能拉取不能上传
write only:
list: 设置是否可以显示全部模块列表
uid: 指定rsync进程以什么用户身份在后台运行(必须是系统,也就是必须保存在/etc/passwd)
gid:
auth user:指定访问模块需要使用的用户名,这里是虚拟用户的(保存在secrets file参数路劲)
secrets file:虚拟用户名和密码的配置文件
hosts allow: 白名单(客户端的ip地址),如果没有设置白名单和黑名单就代表所用客户端都可以访问
hosts deny: 黑名单
timeout: 指定空闲超时时间。
exclude:指定排除哪些文件不进行上传,多个文件空格隔开,支持通配符(q* 12.txt) 例子:
uid=rsync
gid=rsync
use chroot=no
port=873
max connections=2
timeout=100
pid file=/rsync/pid/rsync.pid
lock file=/rsync/lock/rsync.lock
log file=/rsync/log/rsync.log [web1]
path=/rsync/web1
read only=false
hosts allow=10.0.0.0/8
auth users=vuser1
secrets file=/rsync/rsync.passwd
list=false [web2]
path=/rsync/web2
read only=false
hosts allow=10.0.0.0/8
auth users=vuser2
secrets file=/rsync/rsync.passwd
list=false # 创建目录
mkdir -pv /rsync/web{1,2}
# 创建rsync运行的系统用户
groupadd -r rsync
useradd -r -s /sbin/nologin -g rsync rsync
# 启动服务。默认配置文件加载的是/etc/rsyncd.conf,如果需要加载其他:--config=/path/rsyncd.conf
rsync --deamon
# 重启(修改配置文件后需要重启)
killall rsync
ss -tnl | grep 873
rsync --deamon
ss -tnl | grep 873
# 检查rsync的端口(默认873)
ss -ntl | grep 873
# 创建虚拟用户的密码,该文件的权限一定要是600
vim /rsync/rsync.passwd
# 内容如下(一个用户一行):
vuser1:123
vuser2:123
# 修改文件权限
sudo chmod 600 /rsync/rsync.passwd
# 修改模块目录所属
sudo chown rsync.rsync /rsync/web1
sudo chown rsync.rsync /rsync/web2 # 客户端访问命令
# Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
# rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
# Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
# rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
# 上传
rsync -avz /home/ vuser1@10.0.0.41:873:web1
# 拉取
rsync -avz vuser1@10.0.0.41:873:web1 /home/
# 密码:/etc/abc.passwd内容处了密码不能有其他内容,权限必须是600
rsync -avz /home/ vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd # 补充
# --delete 让客户端和服务器端的文件完全一致(注意:如果你是部分推送的是部分文件的话,那么服务端会将其他文件删除)
rsync -avz /home/ --delete vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd
# --exclude 在进行文件上传的时候,排除指定的文件
rsync -avz /home/ --exclude=22.txt vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd
rsync -avz /home/ --exclude=*.txt vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd
rsync -avz /home/ --exclude={22.txt,23.txt} vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd
rsync 文件备份的更多相关文章
- rsync文件备份同步
1.rsync有两种认证协议: ssh认证协议 rsync server端不需要启动daemon进程,所以不用配置/etc/rsyncd.conf,只需要获取远程host的用户名密码 例: rsync ...
- Python核心编程:《8个实践性建议》
前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...
- Python核心编程:8个实践性建议
前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...
- rsync命令来实现将服务器端的文件备份到客户端
rsync命令来实现将服务器端的文件备份到客户端
- rsync配置两台服务器之间的文件备份(同步)
rsync配置两台服务器之间的文件备份(同步) 前情提要 环境: 192.168.1.2 主服务器 centos 7.7 192.168.1.3 备份服务器 centos 7.7 rsync 安装(两 ...
- RSync实现文件备份同步
[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...
- RSync实现文件备份同步详解
1.rsync简介 rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个 ...
- rsync实现文件备份同步(比如服务器镜像)
[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...
- RSync实现文件备份同步,rsync服务器
转自:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是wi ...
随机推荐
- redis 2 主从和哨兵
主从: 概念:将一台redis服务器数据复制到其他redis服务器,前者是master,后者是slave.数据复制是单向,从主节点复制到从节点.master以写为主,slave以读为主一个zhu主节点 ...
- 基于 Jenkins + Kubernetes + Argo CD 的完整 DevOps 流程记录(1) - 环境部署
一.环境准备 1.1 镜像仓库 整套 DevOps 流程使用 Harbor 作为内部镜像仓库,所有构建产物(镜像)都会推送到 Harbor,以备后续进行项目部署.Harbor 从 2.x 版本开始支持 ...
- MySQL(8) - MySQL的事务机制
MySQL数据库的事务机制 1.1.事务的概念和特性 1.2.事务的隔离级别 repeatable read是mysql默认的事务隔离级别 #事务A #事务A,临时修改工资,未commit, STAR ...
- Redis 全局通用命令整理
转载请注明出处: 1.查看所有键 keys * 该命令会存在线程阻塞问题,keys 命令也可以通过正则匹配获取存在的缓存数据 2.查看键总数 dbsize dbsize命令会返回当前数据库中键的总数. ...
- DirectX11 With Windows SDK--40 抗锯齿:FXAA
前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足.但是,尝试提升采样的SSAA会增大渲染的负担:而硬件MSAA与延迟渲染又不能协同工作.为此我们可以考虑使用后处理的方式 ...
- SPFA 最短路算法
SPFA算法 1.什么是spfa算法? SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环.SPFA一般情况复杂度是O(m)O(m) ...
- 「Java分享客栈」Nacos配置中心称王称霸,我Apollo一生也不弱于人!
前言 Apollo又称阿波罗配置中心,在前两年还是挺火的,但阿里SpringCloud套件席卷国内之后,nacos就成为了最被亲睐的分布式配置中心,nacos是配置中心和注册中心二合一的产品,单纯功能 ...
- POJ1821 Fence 题解报告
传送门 1 题目描述 A team of $k (1 <= K <= 100) $workers should paint a fence which contains \(N (1 &l ...
- CabloyJS 基于 EggJS 实现的模块编译与发布
背景 现在,EggJS被许多开发团队所采用.有的团队基于商业知识产权的考量,往往会提一个问题:是否可以把EggJS当中的代码编译打包,然后再把代码丑化? 模块编译的机制 EggJS为何不能便利的实现编 ...
- javaweb获取客户端真实ip
在安全性要求较高的web项目中,我们经常有这样的需求: 黑名单:禁止指定ip访问. 白名单:允许指定ip访问. 根据ip追踪恶意入侵系统者. 在java中我们通常可以这样获取客户端ip地址: requ ...