zoukankan      html  css  js  c++  java
  • Rsync实现文件的同步

    故事背景:我们公司是做新零售的,需要对发布的每台机器进行文件的同步更新,所以我这里做了一个小小的调研

    技术调研:linux之间同步文件有两种方式rsync与scp。

    sync和scp在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。原因是scp是复制:若mas2文件不存在则新建,若存在则覆盖,若mas2上有而Dashboard主机没有,则不改变。可以理解为scp为“复制”。而rsync则在文件在存在于两主机时,比较两文件是够相同,相同的话,就什么都不做,若存在差异就直接更新。

    简单的说rsync只对差异文件做更新。


    #### Rsync介绍
    rsync是一款开源的备份工具,可以再不同主机之间进行同步,实现全量和增量备份,适用于集中备份或异地备份等应用场景。
    rsync监听端口:873
    rsync运行模式:C/S
    #### Rsync传输模式
    - 本地模式
    本地传输,主机内部进行数据传输(类似于cp命令)
    - 远程模式
    远程通道传输,通过ssh通道传输数据(类似scp命令)
    - 守护进程模式
    守护进程传输,不使用系统用户进行传输(安全性高)

    #### Rsync命令参数
    -a 复制各种类型的文件(相当于-tropgDl)
    -v 显示传输过程
    -z 传输时进行压缩
    -r 递归传输目录和子目录
    -t 保持文件时间不变
    -o 保持文件属主信息
    -g 保持文件属组信息
    -p 保持文件权限
    -l 保持软连接
    -P 显示同步进度及过程
    -D 保持设备文件信息
    --bwlimit=100 限速传输
    --delete 源和目标数据保持一致
    --partial 断点续传

    #### 安装rsync
    `sudo apt-get install`一般机器好像都有
    #### 服务端
    1. 创建rsyncd.conf配置文件,sudo vim /etc/rsyncd.conf
    `uid = ai #运行进程用户
    gid = ai #运行用户组
    port = 873 #监听端口
    fake super = yes #无需rsync以root身份运行,允许接受数据
    use chroot = no #禁锢推送数据至某个目录
    max connections = 0 #最大连接数
    timeout = 600 #超时时间
    log file = /var/log/rsyncd.log #定义日志文件路径
    #####################################
    [backup] #模块名称
    path = /backup #定义接收备份数据目录
    ignore errors #忽略错误信息
    read only = false #对备份数据可读写
    list = false #不允许查看模块信息
    auth users = test #定义虚拟用户,认证使用
    secrets file = /etc/rsync.passwd #认证密码路径`

    2. 创建rsync.passwd
    `echo "test:123456" > /etc/rsync.passwd
    chmod 600 /etc/rsync.passwd 不然传输会报错`
    3. 启动rsync
    `rsync --daemon`

    #### 客户端
    1. 创建rsync.passwd
    `echo "123456" > /etc/rsync.password
    chmod 600 /etc/rsync.password 不然传输会报错`

    #### 实例(拉取)
    `rsync -avz test@192.168.174.128::backup --password-file=/etc/rsyncd.password /tmp/backup/`

    #### 定时拉取
    把拉取指令配置在客户端crontab即可

  • 相关阅读:
    十个经典排序算法
    筛选法求2000以内的10个以上连续非素数组
    算法学习路线
    git 文件重命名
    一个github账户多台电脑代码提交
    SQL起别名
    多个Python环境的构建:基于virtualenv 包
    git学习:忽略部分文件
    git学习:多人协作,标签管理
    git学习4:分支管理
  • 原文地址:https://www.cnblogs.com/xupeidong/p/11840621.html
Copyright © 2011-2022 走看看