zoukankan      html  css  js  c++  java
  • Linux rsync 增量同步与快速删除

    增量同步

    rsync [args] SRC [DEST]
    情形:同时维护着两份不同的data_center,但以old_data_center为标准。因为权限的缘故没有开启rsync自动同步,只是每隔一段时间手动同步一下。SRCDEST都是采用mount形式,如果每一次都完整地copy,耗时很长,这时候就想到采用增量同步的方法,因为两份data_center同时由不同人维护,所以内容略有不同,data_center同步的时候不光要完全同步old_data_center的所有内容,而且要删除自身多余的内容,保持完全一致。

    rsync -a --delete --progress /old_vip_data_center/test_envs/trainer/resource /vip_data_center/test_envs/trainer/resource/

    --delete: 删除DEST端存在但是SRC端不存在的文件,如果不使用此参数,则DEST端会同步SRC端的文件,但DEST端已有的文件不受影响。

    快速删除大量文件

    1. 先建一个空目录,随便位置
      mkdir /local/empty_dir
    2. 用rsync删除目标目录
      rsync --delete-before -avH --progress /local/empty_dir/ /local/trainer_test/

    trainer_test清空之后可以再用rm -rf trainer_test删除

    注意不要忘了文件夹最后的/

    rsync提供了一些跟删除相关的参数

    rsync --help | grep delete
    --del an alias for --delete-during
    --delete-before receiver deletes before transfer (default)
    

    选项说明:
    -a 递归方式传输文件,并保持文件属性
    --delete-before 接收者在传输之前进行删除操作
    --progress 在传输时显示传输过程
    -- 归档模式,表示以递归方式传输文件,并保持所有文件属性
    -H 保持硬连接的文件
    -v 详细输出模式
    -stats 给出某些文件的传输状态

    不过在使用上面的命令进行清理时,存在一个问题,清空后,目标目录的权限会和源目录的权限一样。如:/tmp/emptyroot:root,而maildrop之前是postfix:postdrop ,执行之后也会maildrop目录的权限也会变成root:root 。由于-a权限是-rlptogD几个参数的集合,所以可以将og(owner:group)两个参数去掉。清空时自动保持之前的目录权限,如下:
    rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/

    为什么rsync这么快呢?

    rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。

  • 相关阅读:
    元组转换列表
    python切片
    序列类型的方法 增删改查
    python基础 四则运算和数据类型
    linux 常用基础命令操作
    MySQL 命令操作
    linux中如何修改root密码、设置固定IP、安装vmware tools
    虚拟机中网络桥接模式设置
    PHP基础
    HTML基本标签介绍
  • 原文地址:https://www.cnblogs.com/sayiqiu/p/10816572.html
Copyright © 2011-2022 走看看