rsync 备份报错:(code 23) at main.c(1207)

rynsc报错:

命令语法错误:

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207)

解决方法:将参数与路径确认https://www.ruanyifeng.com/blog/2020/08/rsync.html
http://c.biancheng.net/view/6121.html
https://www.cnblogs.com/f-ck-need-u/p/7220009.html

无权限报错:

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [generator=3.0.9]

解决方法:
原因是有文件没有写的权限,导致备份数据库权限不够,两种解决办法:

1、将服务端rsyncd.conf配置文件的uid和gid分别修改成root,重载下,/etc/rc.d/init.d/xinetd reload,再次执行同步,同步成功
2、将需要同步的文件夹及下属文件赋予777权限(chmod -R 777 xxx),再次执行同步,同步成功
参考:https://blog.youkuaiyun.com/slovyz/article/details/38924967

同步文件用户组不一致报错:

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518)

解决方法:


ls -lh查看文件权限
sudo chown -R
sudo chgrp -R
<think>我们正在处理一个rsync错误:`rsync error: syntax or usage error (code 1) at main.c(1512) [sender=3.2.7] Unexpected remote arg`。这个错误通常是由于命令格式不正确导致的。 根据引用[1]中的例子,错误信息是`Unexpected remote arg: root@10.10.10.10:/home/wwwroot/blog.whsir.com`,这表示rsync命令遇到了一个意外的参数。在rsync命令中,参数的位置和格式非常重要。 常见的rsync命令格式有两种: 1. 本地复制:`rsync [OPTION]... SRC [SRC]... DEST` 2. 通过远程shell复制(使用SSH): - 拉取(从远程到本地):`rsync [OPTION]... [USER@]HOST:SRC... [DEST]` - 推送(从本地到远程):`rsync [OPTION]... SRC... [USER@]HOST:DEST` 错误信息中的`Unexpected remote arg`通常表示在命令中,rsync无法识别某个参数作为源(SRC)或目标(DEST)路径。可能的原因包括: - 路径格式错误(例如,在应该使用冒号分隔远程主机和路径的地方没有使用冒号,或者使用了多余的冒号)。 - 在指定远程路径时,没有正确使用`[USER@]HOST:PATH`的格式。 - 使用了不支持的选项或选项位置不正确。 另外,用户之前的问题中,命令是: ``` rsync -av "/media/txh/Elements SE(txh)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 注意:在目标路径中,冒号是中文的(`:`)而不是英文的(`:`)。这可能是导致语法错误的原因。因为rsync要求使用英文冒号来分隔主机和路径。 因此,我们需要检查命令中的冒号是否为英文冒号。此外,路径中的空格和特殊字符(如括号)需要用引号括起来,或者使用转义字符。但用户已经使用了双引号,所以应该没有问题。 解决方案: 1. 将目标路径中的冒号改为英文冒号。 2. 确保整个命令中不包含其他非ASCII字符(如中文括号、中文空格等)。在用户命令中,源路径包含中文括号`(`和`)`,这可能导致问题。建议将路径中的特殊字符改为英文括号或避免使用特殊字符。 但是,如果无法更改路径中的特殊字符,我们可以尝试使用单引号或双引号将路径括起来,并确保在终端中直接使用英文标点。 因此,修正后的命令应该是: ``` rsync -av "/media/txh/Elements SE (txh)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 注意:这里将中文括号改为了英文括号,并且将冒号改为了英文冒号。 如果路径中确实包含中文括号,那么我们需要确保终端能够正确解析。在Linux中,路径中的中文括号是允许的,但需要正确转义或引号括起来。用户已经使用了双引号,所以应该没问题,但要注意括号必须是文件系统中实际存在的字符。 另外,如果目标路径在远程主机上不存在,我们之前已经讨论过,可以使用`--mkpath`选项(rsync版本>=3.2.3)或者提前创建目录。但是当前错误是语法错误,所以先解决语法问题。 步骤: 1. 检查命令中的标点符号(特别是冒号)是否为英文。 2. 检查路径中的特殊字符,确保它们被正确引用。 3. 如果问题仍然存在,尝试简化路径(例如,将源目录移动到一个没有空格和特殊字符的路径下,然后使用简单路径进行同步)。 如果用户无法修改源路径中的特殊字符,可以尝试使用反斜杠转义,例如: ``` rsync -av "/media/txh/Elements SE\(txh\)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 但是,在双引号内,反斜杠的处理可能不同,所以建议先修改为英文括号。 另外,注意错误信息中提到了`Unexpected remote arg`,也可能是因为在命令中多了一个参数。检查命令中是否有多余的空格或其他字符。 总结:最可能的原因是中文冒号导致rsync无法识别远程主机路径。将其改为英文冒号即可。 因此,请用户尝试以下命令: ``` rsync -av "/media/txh/Elements SE (txh)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 如果问题仍然存在,可以尝试使用`-e ssh`显式指定使用SSH,例如: ``` rsync -av -e ssh "/media/txh/Elements SE (txh)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 另外,确保远程主机的目标目录存在,或者使用`--mkpath`选项(如果rsync版本支持): ``` rsync -av --mkpath -e ssh "/media/txh/Elements SE (txh)/coaddmastercat" tangxh@113.55.126.97:/home/file_share/ ``` 注意:`--mkpath`选项需要rsync版本>=3.2.3。 如果用户遇到其他错误(如引用[3]中的磁盘空间不足),则需要清理远程主机的磁盘空间。 现在,我们针对用户的问题进行回答。</think>### 解决 rsync 语法错误:Unexpected remote arg (code 1) 当出现 `rsync error: syntax or usage error (code 1)` 并提示 `Unexpected remote arg` 时,通常表示 **命令格式错误** 或 **路径格式不正确**。根据引用[1]的案例[^1],结合您的错误信息,以下是详细分析和解决方案: --- ### 错误原因分析 #### 1. **路径格式错误**(最常见) - 在远程路径中使用了无效字符(如中文冒号、空格未转义) - 源路径或目标路径格式不符合 rsync 规范 - 示例错误:`root@10.10.10.10:/home/wwwroot` 中的符号或空格处理不当[^1] #### 2. **命令结构错误** - 选项位置不正确(如 `-av` 放在路径后) - 混淆了本地路径和远程路径的声明方式 - 使用了无效的协议前缀(如 `rsync://` 缺失) #### 3. **特殊字符未转义** - 路径中的括号 `()`、空格、`@` 等特殊字符未正确处理 - 示例:`/media/txh/Elements SE(txh)/` 中的空格和中文括号 --- ### 解决方案步骤 #### 步骤 1:修正路径格式 **问题路径**: ```bash tangxh@113.55.126.97:/home/file_share/ # ^ 这里使用了中文冒号: 应该是英文冒号: ``` **正确写法**: ```bash # 使用英文冒号分隔主机和路径 rsync -av "/源路径" tangxh@113.55.126.97:/home/file_share/ ``` #### 步骤 2:处理特殊字符 **问题路径**: ```bash "/media/txh/Elements SE(txh)/coaddmastercat" # 包含空格和中文括号 ``` **解决方案**: ```bash # 方案1:用反斜杠转义特殊字符 rsync -av /media/txh/Elements\ SE\(txh\)/coaddmastercat ... # 方案2:使用单引号包裹路径(更推荐) rsync -av '/media/txh/Elements SE(txh)/coaddmastercat' ... ``` #### 步骤 3:验证命令结构 **正确命令格式**: ```bash # 标准推送格式(本地 → 远程) rsync [选项] 本地路径 用户@主机:远程路径 # 示例(包含转义): rsync -av \ --mkpath \ # 自动创建目录(需rsync≥3.2.3) '/media/txh/Elements SE(txh)/coaddmastercat/' \ tangxh@113.55.126.97:/home/file_share/ ``` #### 步骤 4:检查磁盘空间(预防性措施) 根据引用[3]的案例[^3],同步前检查远程磁盘空间: ```bash # 登录远程主机检查磁盘 ssh tangxh@113.55.126.97 "df -h /home/file_share" ``` --- ### 完整修复示例 ```bash # 最终修正命令(包含路径转义和协议修正) rsync -av --mkpath \ '/media/txh/Elements SE(txh)/coaddmastercat/' \ tangxh@113.55.126.97:/home/file_share/ ``` > **关键修改点**: > 1. 中文冒号 `:` → 英文冒号 `:` > 2. 路径用单引号包裹,避免空格和括号解析错误 > 3. 添加 `--mkpath` 自动创建目录(需rsync≥3.2.3) > 4. 路径结尾添加 `/` 确保同步目录内容(而非目录本身) --- ### 其他可能错误排查 1. **认证问题**: ```bash # 先测试SSH连接 ssh tangxh@113.55.126.97 ``` 2. **rsync版本兼容**: ```bash # 检查版本(需≥3.2.3支持--mkpath) rsync --version ``` 3. **防火墙限制**: ```bash # 检查873端口是否开放 telnet 113.55.126.97 873 ``` 通过以上步骤,可解决 99% 的语法错误问题。若仍有异常,使用 `rsync -avv` 输出详细日志诊断[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值