rsync 遇到中文乱码文件名无法同步,并报错:rsync: rename "/test1/abc/abc/opt/abc/abc/abcx-V2/img_abc/.δ\#261\#352\#314\#342-3.jpg.wdPu5C" -> "abc/xx-V2/img_abc/δ\#261\#352\#314\#342-3.jpg": Input/outputerror (5)

发布时间 2023-07-04 10:46:15作者: 左扬

rsync 遇到中文文件名乱码报错

报错如下:

rsync: rename "/test1/abc/def/efg/abc-V2/img_abc/.δ\#261\#352\#314\#342-3.jpg.wdPu5C" -> "event/abc-V2/img_abc/δ\#261\#352\#314\#342-3.jpg": Input/outputerror (5)
rsync: rename "/test1/abc/def/efg/edm/abc/.3\#324´\#363\#323\#3323100δ\#274\#244\#273\#356.html.p6USTG" -> "event/edm/abc/3\#324´\#363\#323\#3323100δ\#274\#244\#273\#356.html": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/.3\#324´\#363\#323\#3323100\#322Ѽ\#244\#273\#356.html.hWmEMa" -> "event/edm/abc/3\#324´\#363\#323\#3323100\#322Ѽ\#244\#273\#356.html": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/.3\#324\#302С\#323\#3323100δ\#274\#244\#273\#356.html.hC7LFU" -> "event/edm/abc/3\#324\#302С\#323\#3323100δ\#274\#244\#273\#356.html": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/.3\#324\#302С\#323\#3323100\#322Ѽ\#244\#273\#356.html.4VfVE5" -> "event/edm/abc/3\#324\#302С\#323\#3323100\#322Ѽ\#244\#273\#356.html": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/14/img/.\#320Ǽ\#266\#276Ƶ\#352_EDMbanner1.png.B4oHYt" -> "event/edm/abc/14/img/\#320Ǽ\#266\#276Ƶ\#352_EDMbanner1.png": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/15/img/.\#320Ǽ\#266\#276Ƶ\#352_EDMbanner1.png.kD6ICr" -> "event/edm/abc/15/img/\#320Ǽ\#266\#276Ƶ\#352_EDMbanner1.png": Input/output error (5)
rsync: rename "/test1/abc/def/efg/edm/abc/img_S5/.\#273\#260\#267\#321.jpg.U7MncG" -> "event/edm/abc/img_S5/\#273\#260\#267\#321.jpg": Input/output error (5)
rsync: rename "/test1/abc/def/efg/img_abc/.δ\#261\#352\#314\#342-3.jpg.xHCvhY" -> "event/img_abc/δ\#261\#352\#314\#342-3.jpg": Input/output error (5)
rsync: rename "/test1/abc/def/efg/img_cde/.\#312׶\#3731.jpg.m6QP9T" ->"event/img_cde/\#312׶\#3731.jpg": Input/output error (5)
rsync: rename "/test1/abc/def/efg/img_efg/.\#271\#303\#313ս?\#363\#276Ƶ\#352.jpg.Ym3F1u" -> "event/img_efg/\#271\#303\#313ս?\#363\#276Ƶ\#352.jpg": Input/output error (5)
rsync: rename "/test1/abc/def/efg/cdedab/.\#326н\#261\#303\#373\#265\#2452.png.J29Omf" -> "event/cdedab/\#326н\#261\#303\#373\#265\#2452.png": Input/output error (5)
rsync: rename "/test1/abc/def/efg/΢\#320Ű\#363\#266\#250html/.΢\#320Ű\#363\#266\#250.html.6x9PY7" -> "event/΢\#320Ű\#363\#266\#250html/΢\#320Ű\#363\#266\#250.html": Input/output error (5)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

解决办法:

#!/bin/bash

directories=(
  "abc"
  "def"
  "gjo"
  "jkl"
  "rst"
  "qwer"
  "cws"
  "zxcv"
)

log_directory="/tmp/rsync_logs"

# 创建日志目录(如果不存在)
if [ ! -d "$log_directory" ]; then
  mkdir -p "$log_directory"
  chmod 700 "$log_directory"
fi

for dir in "${directories[@]}"; do

  log_prefix="$(basename "$dir")-$(date "+%Y.%m.%d-%H.%M.%S")"
  error_log="$log_directory/$log_prefix-error.log"
  info_log="$log_directory/$log_prefix-info.log"

  if [ ! -d "/opt/static/opt/static/$dir" ]; then
    echo "目录不存在:/opt/static/opt/static/$dir"
    echo "跳过 rsync 命令 $dir 的执行"
    echo
    continue
  fi

  (
    /usr/bin/rsync -avplP --bwlimit=80M --iconv=gbk,utf-8 /opt/static/opt/static/$dir/*  /test1/opt/static/$dir/ 2> "$error_log" > "$info_log"

    if [ $? -eq 0 ]; then
      echo "rsync 命令 $dir 已执行完成"
    else
      echo "注意:rsync 命令 $dir 有错误,请查看日志文件 $error_log 获取详细信息。"
    fi
  ) &

  echo
done

# 等待所有并发进程执行完毕
wait