• 使用rsync 的 --delete参数删除目标目录比源目录多余的文件


    最近在处理策划资源文件的时候需要将目录A的文件全部同步到目录B的文件,并且把目录B内多余的文件全部删除掉。所以,就想到了使用rsync的--delete参数来实现功能。

    创建示例如下:
    //创建两个测试目录
    $ mkdir {dirA,dirB}    

    //分别在两个目录创建相应的文件
    $ touch dirA/{fileA1.txt,fileA2.txt,fileA3.txt}
    $ touch dirB/{fileA1.txt,fileA2.txt,fileA3.txt,fileB1.txt,fileB2.txt,fileB3.txt}

    1)将dirA的所有文件同步到dirB内,并保留文件的属主,属组,文件权限等信息。

    $ rsync -avz dirA/ dirB/

    sending incremental file list
    ./
    fileA1.txt
    fileA2.txt
    fileA3.txt

    sent 199 bytes  received 72 bytes  542.00 bytes/sec
    total size is 0  speedup is 0.00

    2)将dirA的所有文件同步到dirB内,并删除dirB内多余的文件
    $ rsync -avz --delete  dirA/ dirB/

    sending incremental file list
    ./
    deleting fileB3.txt
    deleting fileB2.txt
    deleting fileB1.txt
    fileA1.txt
    fileA2.txt
    fileA3.txt
    sent 203 bytes  received 72 bytes  550.00 bytes/sec
    total size is 0  speedup is 0.00

    3)将dirA的所有文件同步到dirB,但是在dirB内除了fileB3.txt这个文件不删之外,其他的都删除。
    $rsync -avz --delete --exclude "fileB3.txt"  dirA/  dirB/

    sending incremental file list
    ./
    deleting fileB2.txt
    deleting fileB1.txt
    fileA1.txt
    fileA2.txt
    fileA3.txt

    sent 203 bytes  received 72 bytes  550.00 bytes/sec
    total size is 0  speedup is 0.00

    4)将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内。
    $rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt" dirA/ dirB/

    sending incremental file list
    fileA3.txt

    sent 106 bytes  received 31 bytes  274.00 bytes/sec
    total size is 0  speedup is 0.00

    5) 将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件。
    $rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt" --delete  dirA/ dirB/

    sending incremental file list
    deleting fileB3.txt
    deleting fileB2.txt
    deleting fileB1.txt
    fileA3.txt
    sent 106 bytes  received 31 bytes  274.00 bytes/sec
    total size is 0  speedup is 0.00

    6)将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件,同时,如果dirB内有fileA2.txt和fileA1.txt这两个被排除同步的文件,仍然将其删除。

    $rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt"  --delete-excluded  dirA/ dirB/

    sending incremental file list
    ./
    deleting fileB3.txt
    deleting fileB2.txt
    deleting fileB1.txt
    deleting fileA2.txt
    deleting fileA1.txt
    fileA3.txt

    sent 109 bytes  received 34 bytes  286.00 bytes/sec
    total size is 0  speedup is 0.00

    这里可以看到只有fileA3.txt被同步到dirB目录内,同时dirB目录内的fileA1.txt和fileA2.txt两个被过滤的文件也被删除掉了。

    这里分享一下学习经验,学一个东西不要总是很被动的去学习它有多少功能,要根据自己的实际应用场景来选择自己需要的功能。这样才能印象深刻。

    http://www.linuxidc.com/Linux/2014-03/98835.htm

  • 相关阅读:
    [转载]pda 和pc 之间的文件操作(利用Microsoft ActiveSync同步文件数据)
    获取XML文件中内容大小
    听猪的“旅行的意义”有感
    If a file is locked, you can wait until the lock times out to redeploy, or s
    七个顶级的心理寓言(转载)
    html table 上下左右边框
    判断浏览器动态加载CSS等内容
    课程表
    input文本框、文字、按钮、图片 垂直居中对齐
    JUnit3
  • 原文地址:https://www.cnblogs.com/eustoma/p/4060119.html
Copyright © 2020-2023  润新知