# 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 文件备份的更多相关文章

  1. rsync文件备份同步

    1.rsync有两种认证协议: ssh认证协议 rsync server端不需要启动daemon进程,所以不用配置/etc/rsyncd.conf,只需要获取远程host的用户名密码 例: rsync ...

  2. Python核心编程:《8个实践性建议》

    前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...

  3. Python核心编程:8个实践性建议

    前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...

  4. rsync命令来实现将服务器端的文件备份到客户端

    rsync命令来实现将服务器端的文件备份到客户端

  5. rsync配置两台服务器之间的文件备份(同步)

    rsync配置两台服务器之间的文件备份(同步) 前情提要 环境: 192.168.1.2 主服务器 centos 7.7 192.168.1.3 备份服务器 centos 7.7 rsync 安装(两 ...

  6. RSync实现文件备份同步

    [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...

  7. RSync实现文件备份同步详解

    1.rsync简介 rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个 ...

  8. rsync实现文件备份同步(比如服务器镜像)

    [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...

  9. RSync实现文件备份同步,rsync服务器

    转自:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是wi ...

随机推荐

  1. 385. Mini Parser - LeetCode

    Question 385. Mini Parser Solution 分析:用NI(count,list)来表示NestedInteger,则解析字符串[123,[456,[789]]]过程如下: # ...

  2. 好客租房55-props深入(2props校验)

    对于组件来说 props是外来的 无法保证使用者传入什么格式的数据 传入的数据格式不对 可能会导致组件内部报错 关键问题:不知道报错的具体原因 1安装包props-types 2导入props-typ ...

  3. 关于我学git这档子事

    创建本地分支并切换到该分支 git checkout -b *** 相当于如下2个命令: git branch *** git checkout *** 推送本地开发分支到远程开发分支 git pus ...

  4. vs 快速定位文件

    在进行web开发时,我们经常需要在文件之间进行切换,每次在VS的解决方案中找文件然后打开 非常浪费时间,有没有比较快捷点的方法呢? 1.使用  ReSharper 插件 ReSharper 插件可以在 ...

  5. Tarjan入门

    Tarjan系列!我愿称Tarjan为爆搜之王! 1.Tarjan求LCA 利用并查集在一遍DFS中可以完成所所有询问.是一种离线算法. 遍历到一个点时,我们先将并查集初始化,再遍历完一个子树之后,将 ...

  6. js 定时器 Timer

    1 /* Timer 定时器 2 3 parameter: 4 func: Function; //定时器运行时的回调; 默认 null 5 speed: Number; //延迟多少毫秒执行一次 f ...

  7. frp 用于内网穿透的基本配置和使用

    frp 用于内网穿透的基本配置和使用 今天是端午节,先祝端午安康! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便 ...

  8. Wireshark学习笔记(二)取证分析案例详解

    @ 目录 练习一:分析用户FTP操作 练习二:邮件读取 练习三:有人在摸鱼? 练习一:分析用户FTP操作 已知抓包文件中包含了用户登录FTP服务器并进行交互的一个过程,你能否通过wireshark分析 ...

  9. Maven POM文件介绍

    1. POM文件是什么 1.1 Super POM 1.2 Minimal POM 1.3 Effective POM 3. 项目继承 和 项目聚合 2.1 Project Inheritance 项 ...

  10. TypeScript 泛型(generic) 入门介绍

    TypeScript 泛型函数 下面来创建第一个使用泛型的例子:identity函数.这个函数会返回任何传入它的值.你可以把这个函数当成是echo命令.不用泛型的话,这个函数可能是下面这样: func ...