# 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. postman 脚本和变量

    背景 后端接口有登录或鉴权验证,通过 swagger 调用比较费劲,并且 java 的 swagger 库(不够自动化,嵌套类支持需要各种配置才能正常显示 schema)个人感觉也没有 .net co ...

  2. Spring Boot下Spring Batch入门实例

    一.About Spring Batch是什么能干什么,网上一搜就有,但是就是没有入门实例,能找到的例子也都是2.0的,看文档都是英文无从下手~~~,使用当前最新的版本整合网络上找到的例子. 关于基础 ...

  3. Element UI DatePicker 时间跨度限制在同一个月内

    <el-date-picker :picker-options="pickerOptions" v-model="rangeTime" type=&quo ...

  4. 第06组 Alpha冲刺 (1/6)

    1.1 基本情况 队名:守护(发际)线程 组长博客:郝雷明 作业博客:郝雷明 组员人数:10 1.2 冲刺概况汇报 1. 郝雷明(组长) 过去两天完成了哪些任务 学习了微信开发平台的文档内容,熟悉微信 ...

  5. Java ES 实现or查询

    es mapping里有三个字段: A:Integer B:Integer C:TEXT 现在想实现一个查询,来检索  (  (A =1 and B=2)  or (c like "test ...

  6. 耗时半年,Eoapi 终于正式发布 API 工具的插件广场

      这是我们的第一篇月报,每个月和每个来之不易的开发者分享产品故事以及产品进展. 在 5.20 这个极具中国特色的"节日"里,Eoapi 发布了 1.0.0 版,三个程序员掉了半年 ...

  7. Jmeter之测试片段--include控制器进行接口测试以及管理测试用例

    1.线程组--右键添加--测试片段--测试片段 2.在测试片段中进行添加测试用例如下图: 3.通过include控制器进行调用测试片段 (通常使用全局) 选择线程组--右键添加--逻辑控制器--Inc ...

  8. Centos6添加防火墙端口 以及相关操作命令的使用

    用命令 vim /etc/sysconfig/iptables 增加防火墙端口号:(添加你需要的端口号) service iptables start  启动防火墙 service iptables ...

  9. 机器学习-学习笔记(二) --> 模型评估与选择

    目录 一.经验误差与过拟合 二.评估方法 模型评估方法 1. 留出法(hold-out) 2. 交叉验证法(cross validation) 3. 自助法(bootstrapping) 调参(par ...

  10. 聊聊 C# 方法重载的底层玩法

    最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎么玩的,很多朋友应该知道 C 是不支持重载的,比如下面的代码就会报错. #include <stdio.h> int say( ...