【问题标题】:How do I rsync folders starting with a dot?如何 rsync 以点开头的文件夹?
【发布时间】:2023-03-06 12:12:01
【问题描述】:

我正在尝试同步一个 maildir 目录,该 maildir 目录中的某些文件夹包含以“点”开头的目录

.Archive/
.Sent Items/

我尝试使用以下

$ rsync -pogutr --exclude="." --exclude=".." .*  /home/folder1/mail/domain/user1/ /home/folder2/mail/domain --progress
$ rsync -pogutr --exclude="../" /home/folder1/mail/domain/user1/.*  /home/folder2/mail/domain/ --progress
$ rsync -pogutr --include=".*" /home/folder1/mail/domain/user1  /home/folder2/mail/domain/ --progress

所有这些都会将/home/folder1/mail/domain/中的其他子目录同步到/home/folder2/mail/domain/user1/目录中。

例如,如果/home/folder1/mail/domain/ 包含 user1、user2 和 user3 的子目录。那么user1、user2、user3的所有内容都会在/home/folder2/mail/domain/user1/目录下

【问题讨论】:

    标签: directory rsync


    【解决方案1】:

    使用 2 个 rsync 命令:1 个普通命令和 1 个用于点文件夹。并指定点并将其转义。 我用它迁移到 docker-poste 并在我的 docker 主机上运行它:

    rsync -e ssh -v -r -u root@10.10.0.7:/home/benny/Maildir/* /mnt/user/docker/poste/data/domains/example.com/benny/Maildir/
    rsync -e ssh -v -r -u root@10.10.0.7:/home/benny/Maildir/\.* /mnt/user/docker/poste/data/domains/example.com/benny/Maildir/
    

    【讨论】:

      【解决方案2】:

      我伪造了一个邮件目录,其中包含一些包含文件的点文件夹,并且默认情况下它可以正确同步。

      $ rsync --recursive --verbose maildir/ maildir-backup
      sending incremental file list
      created directory maildir-backup
      ./
      .Archive/
      .Archive/1
      .Archive/2
      .Archive/3
      .Sent Items/
      .Sent Items/bar
      .Sent Items/baz
      .Sent Items/foo
      
      sent 481 bytes  received 182 bytes  1,326.00 bytes/sec
      total size is 0  speedup is 0.00
      

      我什至尝试了您使用的额外标志(保留所有者、组、时间、权限等)

      $ rsync -pogutr --verbose maildir/ maildir-backup
      sending incremental file list
      created directory maildir-backup
      ./
      .Archive/
      .Archive/1
      .Archive/2
      .Archive/3
      .Sent Items/
      .Sent Items/bar
      .Sent Items/baz
      .Sent Items/foo
      
      sent 497 bytes  received 182 bytes  452.67 bytes/sec
      total size is 0  speedup is 0.00
      

      您只是不想或不需要排除“此”文件夹或父文件夹。这些不包含在任何路径中。

      --exclude="." --exclude=".."
      

      【讨论】:

        【解决方案3】:

        尝试使用unison 而不是 rsync。此外,它会更快地同步。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-12
        • 1970-01-01
        • 2022-06-29
        • 1970-01-01
        • 2010-12-27
        • 2017-11-25
        相关资源
        最近更新 更多