You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为指定rsync命令添加输出重定向以分页查看--dry-run结果,并解决rsync错误码23问题?

如何为指定rsync命令添加输出重定向以分页查看--dry-run结果,并解决rsync错误码23问题?

嗨,我来帮你搞定这两个问题~

一、把rsync --dry-run的输出保存到文件以便分页查看

首先得把rsync的正常输出错误信息都存到文件里,不然错误内容会单独留在终端,看不到完整的排查线索。给你两种实用的写法:

写法一(兼容多数Shell环境)

sudo /usr/bin/rsync -avx --delete --append-verify --dry-run [source] [destination] >> foo 2>&1
  • >> foo:把同步过程的正常输出追加到foo文件(文件不存在会自动创建)
  • 2>&1:把错误输出(文件描述符2)重定向到标准输出(文件描述符1),这样所有错误信息也会进到foo

写法二(Bash简化版)

如果你的终端用的是Bash,还可以用更简洁的语法:

sudo /usr/bin/rsync -avx --delete --append-verify --dry-run [source] [destination] &>> foo

&>>直接把标准输出和错误输出都追加到文件,一步到位更省心。

等命令执行完,你就可以用more foo来分页查看所有输出内容了~

二、解决rsync错误码23的问题

错误码23提示“some files/attrs were not transferred (see previous errors)”,意思是有部分文件或文件属性没传输成功。你可以先查看刚才生成的foo文件,找到具体的错误行,再针对性处理,常见原因和解决思路如下:

  • 权限问题:最常见的情况,比如源文件有特殊权限(如setuid/setgid),或者目标服务器的目录权限不足,导致rsync无法写入。你可以用ls -l [source-file]检查源文件权限,同时确认目标目录的权限是否允许写入。
  • 文件被占用:如果源文件正在被其他程序打开写入,rsync可能无法读取完整内容。可以等程序释放文件后再重试,或者加上--ignore-existing参数跳过已存在的文件(注意:这个参数会跳过所有已存在的文件,谨慎使用,避免遗漏需要更新的内容)。
  • 磁盘空间不足:目标服务器磁盘满了也会导致传输失败,登录目标服务器用df -h就能查看挂载点的剩余空间。
  • 符号链接问题:如果源目录里有符号链接,而目标服务器不允许创建符号链接,或者链接指向的路径不存在,也会报错。如果不需要同步符号链接,可以加上--no-links参数;如果需要同步,确保目标服务器支持符号链接,且链接指向的路径在目标端有效。

备注:内容来源于stack exchange,提问作者makem

火山引擎 最新活动