AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 718113
Accepted
SebMa
SebMa
Asked: 2022-09-22 07:31:58 +0800 CST2022-09-22 07:31:58 +0800 CST 2022-09-22 07:31:58 +0800 CST

rsync 不排除以哈希字符 (#) 开头的指定目录

  • 772

我正在尝试#recycle使用 rsync 排除目录:

$ rsync -Hauv -h -P --exclude '#recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini  user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/subDir1/subDir2/
Extension_1/#recycle/subDir1/subDir2/BigVideo.mov
         39.23G  82%   36.40MB/s    0:03:44  ^C
$

(我也尝试引用.DS_Store*和删除该--log-file选项,但它们没有任何区别。)

我在 CentOS 7.9 上使用rsyncversion和version 。3.1.2 protocol version 31bash4.2.46(2)-release

更具体地说,我编写了一个非常小的脚本,其中包含一个包含排除列表的变量

$ rsyncExclusionOptions=$(printf -- "--exclude %s " "'#recycle/'" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude '*/#recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/SERIES/ONE_PIECE/SOURCES_HD59iDF/EPISODES_666-709/
Extension_1/#recycle/SERIES/ONE_PIECE/SOURCES_HD59iDF/EPISODES_666-709/TOEI_ONE-PIECE_EP681-FN_TXT-JAP-V2-2018_169-177_1080i29-422_20-JAP-INT_XX_RXX_1811TVS1652.mov
          3.22G   5%  104.35MB/s    0:08:23  ^CKilled by signal 2.

rsync error: unexplained error (code 255) at rsync.c(638) [generator=3.1.2]
rsync: [generator] write error: Broken pipe (32)
rsync error: received SIGUSR1 (code 19) at main.c(1430) [receiver=3.1.2]

EDIT0:@roaima 我也尝试将括号括起来(如您在此处#提供的链接中所建议的那样),但它也不起作用:

$ rsyncExclusionOptions=$(printf -- "--exclude %s " "'[#]recycle/'" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude '[#]recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/SERIES/ONE_PIECE/SOURCES_HD59iDF/EPISODES_666-709/
Extension_1/#recycle/SERIES/ONE_PIECE/SOURCES_HD59iDF/EPISODES_666-709/TOEI_ONE-PIECE_EP681-FN_TXT-JAP-V2-2018_169-177_1080i29-422_20-JAP-INT_XX_RXX_1811TVS1652.mov
          4.04G   7%   21.67MB/s    0:39:45  ^CKilled by signal 2.

rsync error: unexplained error (code 255) at rsync.c(638) [generator=3.1.2]
rsync: [generator] write error: Broken pipe (32)
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at io.c(504) [receiver=3.1.2]
rsync: [receiver] write error: Broken pipe (32)

一个可行的解决方案:

  • 哈希值放在括号之间,如下所示:[#]AND
  • 额外的'不能用于变量[#]recycle内的排除:rsyncExclusionOptions
$ rsyncExclusionOptions=$(printf -- "--exclude %s " "[#]recycle/" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude [#]recycle/ --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/SERIES/ONE_PIECE/SOURCES_VF/EPISODES_700-765/
centos rsync
  • 1 1 个回答
  • 58 Views

1 个回答

  • Voted
  1. Best Answer
    roaima
    2022-09-22T07:57:16+08:002022-09-22T07:57:16+08:00

    我要回答这个问题,说使用rsync版本 3.1.3 协议 31 我无法重现最初描述的问题。(Raspbian GNU/Linux 10 “破坏者”。)

    修改后的问题显示排除列表不正确,将与目录名称不匹配。您已将单引号放入模式名称中,这些与目录/文件名不匹配。因此,他们不会被排除在外。

    原始答案在下面继续。


    但是,我看到 StackOverflow 上报告了另一个未解决的实例,该实例包含#导致问题的文件名 - 请参阅rsync failed to exclude '#filename#' file names,因此您并不孤单。也许它已被我正在运行的更高版本修复?

    设想

    mkdir -p /tmp/718113/Extension_1/#recycle/subDir1/subDir2
    cd /tmp/718113
    mkdir dst
    touch Extension_1/#recycle/subDir1/subDir2/BigVideo.mov
    

    现在命令

    rsync -Hauv -h -P --exclude '#recycle/' --exclude '@eaDir/' --exclude '.DS_Store*' --exclude 'desktop.ini' localhost:/tmp/718113/Extension_1 /tmp/718113/dst
    

    输出

    receiving incremental file list
    Extension_1/
    
    sent 85 bytes  received 78 bytes  326.00 bytes/sec
    total size is 0  speedup is 0.00
    

    唯一重要的变化是我引用了排除模式,因此 shell 没有机会扩展它们(特别是但不完全是'.DS_Store*')。但是,如果在这种情况下这是一个问题,您将收到来自和rsync之类的错误消息。Unexpected remote arg: localhost:/tmp/718113/Extension_1rsync error: syntax or usage error (code 1) at main.c(1372) [sender=3.1.3]

    我还建议不要使用--progress(暗示-P)然后将stdout/stderr重定向到日志文件。替换-P为--partial或使用--log选项将结果写入日志文件。

    • 2

相关问题

  • 为什么我的交换机没有从指定的池中获取地址

  • 在 CentOS7 GNOME 的 Applications-menu 选项卡中创建自定义菜单

  • rsync 排除问题

  • rsync 端口 22 和 873 使用

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve