(超级重要)阿里云盘通过 rsync 传输失败

问题一:无法复制到云盘目录

在前面装好 alist 且通过 davfs 连接 WebDAV 完成后,以为一切顺风顺水来着。
因为自己测试了几个小文件复制都能正常上传。
直到备份 docker 大文件有2.7G左右的时候,一直复制不成功

最开始是发现使用 rsync 将压缩文件发送到相应位置时,总提示IO异常,是因为内存问题,排查发现是系统硬盘不够,他在传送时会先放到 /var/cache/davfs2 目录下,几次不成功以后,就一直缓存下来,直至把硬盘内存占满!这是之后使用文件查询工具一步步才排查出来!

系统硬盘占用率过高,通过 以下 命令针对每个文件见查询发现的

1
du -sh /var/cache/davfs2/* |sort -nr

锁定问题就好办,其实可以直接清除,不过后边做了软链接,将这个地址指向外接硬盘上来了

1
2
命令:ln -s /path/to/original_file /path/to/symlink
结果:在/path/to/目录下创建一个名为symlink的软连接,该连接指向/path/to/original_file文件。

注:这两个linux方法后边再开新的一篇

问题二:无法上传到云盘内

上边问题解决了以后,以为可以顺利备份了,谁知道文件复制到云盘文件夹以后却不上传到云端,开始以为是 WebDAV 的问题,查了好多地方也没找到解决办法,然后又怀疑起了 alist 的问题,认为是没有开启大文件导致,但压根就没找到地方。

搜索一圈都没找到解决方案,也在快要放弃时看到了几篇文章,才找到问题根源。

1.付费求alist百度网盘rclone挂载webdav可上传大文件方案

这个还特地下载了 rclone 来尝试,其实只是解决了问题一,就是能正常复制到云盘文件夹

1
rclone sync '/mnt/aaaa' 'baidu:/bbbbb' --buffer-size=256M --use-mmap -v --transfers 1 --timeout 60m

这个办法虽然没有解决这个问题,但从评论看知道了超时没多大作用,也就是说问题不在这儿。

2.(根据这个解决了问题)阿里云盘通过 rsync 传输失败

从这个问题描述来看,基本跟目前遇到的问题一模一样
以下就是给出的解决方案,经过验证,完全可行:

从中可以看出来真正的问题出在了 davfs2 上,折腾一圈这才是问题关键!

  • 这依然为客户端超时取消了上传。请使用支持设置超时时间的客户端并设置超时时间。rsync并不是客户端 davfs2才是

解决方法:调整 davfs2 配置参数 read_timeout 从默认的30 (seconds) 为7200之后,确实可以上传成功。

该文件位置为:

1
/etc/davfs2/davfs2.conf

相关链接(侵删)

  1. docker版本挂载夸克上传文件会在5分钟超时
  2. 阿里云盘 dav上传反复失败

=================我是分割线=================

欢迎到公众号来唠嗑: