Rsync 无法同步大量文件

Rsync 无法同步大量文件

我有一个脚本,使用 rsync 将我的文件从我的服务器备份到我的本地机器。

问题是,当我需要同步大量文件时,rsync 无法同步。它开始计数文件,当文件计数器完成时,它又开始计数。之后,它引发以下错误:

2016/10/24 17:27:15 [97451] rsync: connection unexpectedly closed (52776589 bytes received so far) [receiver]
2016/10/24 17:27:15 [97451] rsync error: error in rsync protocol data stream (code 12) at /SourceCache/rsync/rsync-35.2/rsync/io.c(452) [receiver=2.6.9]
2016/10/24 17:27:15 [97422] rsync: connection unexpectedly closed (52776589 bytes received so far) [generator]
2016/10/24 17:27:15 [97422] rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-35.2/rsync/io.c(452) [generator=2.6.9]

文件列表的大小约为 2mi 个文件。服务器上的 rsync 版本是 3.0.6,而我本地计算机上的 rsync 版本是 3.1。

我使用的命令行是:

synchronize() {
  echo $USER | $RSYNC -azvP --delete  --timeout=6000 --rsync-path="sudo ionice -c3 nice -n19 ${RSYNC} --bwlimit=10000" \
     --log-file=$LOGFILE [email protected]:"${1}"  "${DESTINATION}${2}"
}

Rsync 配置为不要求在服务器端输入密码。

有人知道为什么会发生这个错误吗?

谢谢

答案1

在@dawud 的帮助下发现问题在于打开的文件数量超出了 SO 限制,因此为了避免更改 SO 配置,我决定更改我的脚本以同步单个目录(结果将是相同的)。

所以我的新脚本是:

synchronize() {
  echo [email protected]:"${1}"  "${DESTINATION}${2}"
  echo $USER | $RSYNC -azvP --delete --rsync-path="sudo ionice -c3 nice -n19 rsync --bwlimit=10000" \
     --log-file=$LOGFILE [email protected]:"${1}"  "${DESTINATION}${2}" 2>&1 1> /dev/null
}

synchronize_list() {
  directories_list=($(ssh [email protected] ls "${1}"))
  for i in "${directories_list[@]}"; do
    echo "SYNC DIRECTORY:  ${i}"
    synchronize "${1}/${i}" "${i}"
  done
}

synchronize_list "/home" "home/"

我希望这段代码能帮助到你们。

谢谢。

相关内容