常见问题解答
所有云存储系统都支持所有 rclone 命令吗?
是的。 所有 rclone 命令(如 sync
、copy
等)都能在所有远程存储系统上运行。
可以在所有远程存储系统上运行。
我能将配置从一台机器复制到另一台机器吗?
当然可以! Rclone 会将所有配置保存在一个文件中。 如果你想
运行 rclone config file
就能找到。
文件。
更多信息请参阅 remote setup docs。
如何在没有浏览器的远程/无头电脑上配置 rclone?
现在这个问题已经有了自己的远程设置页面。
rclone 能否直接从硬盘同步到 s3
Rclone 可以在两个远程云存储系统之间正常同步。
请注意,它实际上是先下载文件,然后再上传,因此 运行 rclone 的节点需要有很大的带宽。
同步将是增量式的(以文件为单位)。
例如
rclone sync --interactive drive:Folder s3:bucket
同时从多个位置使用 rclone
您可以同时从多个地方使用 rclone,如果您为输出选择了不同的子目录,例如 不同的子目录,例如
服务器 A> rclone sync --interactive /tmp/whatever remote:ServerA
服务器 B> rclone sync --interactive /tmp/whatever remote:ServerB
如果同步到同一目录,则应使用 rclone copy 否则两个 rclone 实例可能会删除对方的文件,例如
服务器 A> rclone copy /tmp/whatever remote:Backup
服务器 B> rclone copy /tmp/whatever remote:Backup
在这种情况下,从服务器 A 和服务器 B 上传的文件名应该不同。 不同,否则某些文件系统(如 Drive)可能会产生重复文件。 造成重复。
为什么 rclone 不像 rsync 那样支持部分传输/二进制差异?
Rclone 会将你传输的每个文件作为本地对象存储在远程 云存储系统上。 这意味着 上传的文件。 Google Drive 网页界面)。 您硬盘上的文件和云存储系统中创建的对象之间有 1:1 的映射关系。 1 的映射关系。
云存储系统(至少我还没有遇到过这样的系统)不 支持部分上传对象。 您不能将现有对象 对象,并在中间更改一些字节。
如果能像 rsync 那样制作一个同步系统来存储二进制差异,而不是像 的同步系统,而不是整个对象,但这样会破坏 硬盘上的文件与远程云存储系统中对象的 1:1 映射。 的映射。
所有云存储系统都支持部分下载内容,因此 可以实现部分下载。 不过,要使其 这就需要存储大量的 元数据,这就破坏了文件与对象之间理想的 1:1 映射关系。
###rclone 可以进行双向同步吗? ###
是的,自 rclone v1.58.0 起,双向云同步 已可用。 可用。
我能用 HTTP 代理使用 rclone 吗?
可以。rclone 会遵循代理的标准环境变量。 代理的标准环境变量,类似于 cURL 和其他程序。
一般来说,这些变量被称为 http_proxy
(用于通过 http
获取的服务)。
http)和
https_proxy(通过
https)。 大多数 公共服务将使用
https`,但您可能希望同时设置这两个变量。
变量的内容是 protocol://server:port
。 协议
值是用于与代理服务器本身通信的协议,通常是http
或server:port
。
http “或 “socks5”。
有点恼人的是,该名称没有_标准_;一些应用程序可能会使用
可能会使用 http_proxy
,而另一种则使用 HTTP_PROXY
。 Go`库
会尝试这两种变体,但您可能希望设置所有的
可能性。 因此,在 Linux 上,您可能会使用类似以下的代码
export http_proxy=http://proxyserver:12345
export https_proxy=$http_proxy
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$http_proxy
注意:如果代理服务器需要用户名和密码,则使用
export http_proxy=http://username:password@proxyserver:12345
export https_proxy=$http_proxy
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$http_proxy
NO_PROXY “允许您禁用特定主机的代理。 主机必须以逗号分隔,可以包含域名或部分域名。 例如,“foo.com “也匹配 “bar.foo.com”。
例如
export no_proxy=localhost,127.0.0.0/8,my.host.name
export NO_PROXY=$no_proxy
请注意,FTP 后端还不支持 ftp_proxy
。
Rclone 出现 x509: failed to load system roots and no roots provided 错误
这意味着 rclone
无法找到 SSL 根证书。 可能
rclone “是在带有精简版 Linux 操作系统的 NAS 上运行的,也可能是在 Solaris 上运行的。
可能是在 Solaris 上。
Rclone(通过 Go 运行时)会尝试从以下地址加载根证书 这些地方加载根证书。
"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL
"/etc/ssl/ca-bundle.pem", // OpenSUSE
"/etc/pki/tls/cacert.pem", // OpenELEC
因此,这样做应该能解决问题。 它还会设置 时间,这对 SSL 正常工作非常重要。
mkdir -p /etc/ssl/certs/
curl -o /etc/ssl/certs/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
ntpclient -s -h pool.ntp.org
x509 软件包](https://godoc.org/crypto/x509) 中提到的两个环境变量 SSL_CERT_FILE
和 SSL_CERT_DIR
、
提供了提供 SSL 根证书的另一种方法。
请注意,如果不使用该选项,可能需要在 curl
命令行中添加 --insecure
选项。
curl --insecure -o /etc/ssl/certs/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
Rclone 出现加载配置文件失败:函数未执行的错误
这可能意味着你在 Linux 版本上运行的 rclone 不支持的 Linux 版本上运行 rclone,即版本早于 2.6.23 的版本。
请参阅 go 安装中的系统要求部分 docs中的[系统要求]部分了解详情。
我上传的所有 docx/xlsx/pptx 文件都显示为存档/压缩文件
这是由于从 Windows 电脑上传这些文件时造成的。 没有安装 Microsoft Office 套件。 最简单的 最简单的方法是安装 Word 查看器和 Microsoft Office 兼容包。 版本的文件格式
tcp lookup some.domain.com no such host
当 rclone 无法解析域名时会出现这种情况。 请检查 您的 DNS 设置是否正常,例如
# both should print a long list of possible IP addresses
dig www.googleapis.com # resolve using your default DNS
dig www.googleapis.com @8.8.8.8 # resolve with Google's DNS server
如果使用 systemd-resolved
(Arch Linux 的默认设置),请确保它的
版本为 233 或更高。 以前的版本包含一个错误
导致并非所有域都能正确解析。
可以使用 GODEBUG=netdns=...
环境变量来影响 Go 解析器的决定。
环境变量来影响 Go 解析器的决定。 这也可以解决
DNS 解析的某些问题。 在 Windows 或 MacOS 系统上,可尝试通过设置GODEBUG=netdns=...
环境变量来强制使用
内部 Go 解析器。 在
其他系统(Linux、*BSD 等)上,尝试通过在运行时设置 GODEBUG=netdns=go
来强制使用系统名称解析器。
名称解析器(必要时启用 CGO,从源代码重新编译 rclone
的源代码重新编译)。 请参见
go docs 中的名称解析部分。
在 Windows 上启动 auth 网络服务器失败
Error: config failed to refresh token: failed to start auth webserver: listen tcp 127.0.0.1:53682: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
...
yyyy/mm/dd hh:mm:ss Fatal error: config failed to refresh token: failed to start auth webserver: listen tcp 127.0.0.1:53682: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
这有时是由于主机网络服务在主机上打开端口时出现了问题。
简单的解决办法是使用 Powershell 等重启主机网络服务
Restart-Service hns
同步统计中报告的总大小是错误的,并且一直在变化
您可能有超过 10,000 个文件需要同步。 同步。 默认情况下,rclone 只同步 10,000 个文件,以免占用过多内存。 以免占用过多内存。 你可以使用 –max-backlog标记更改默认值。
Rclone 占用过多内存或出现内存泄漏
Rclone 是用 Go 编写的,它使用了垃圾回收器。 垃圾回收器的默认 垃圾回收器的默认设置意味着,当堆的大小增加一倍时,它就会运行。 加倍时运行。
不过,可以通过[设置 GOGC] 来调整垃圾回收器,使其使用更少的内存。
GOGC](https://dave.cheney.net/tag/gogc) 设置为一个较低的值,例如
值,例如 export GOGC=20
。 这将使垃圾回收器
更努力地工作,以 CPU 使用率为代价减少内存大小。
导致 rclone 占用大量内存的最常见原因是一个目录中包含数百万个文件。 目录中包含数百万个文件。 Rclone 必须把这些文件 加载到内存中。 每个 rclone 对象占用 0.5k-1k 内存。 内存。 有 解决方法 需要编写一些脚本。
Rclone 更改文件名中的全宽 Unicode 标点符号
例如 在 Windows 系统中,有一个文件名为 Test:1.jpg
、
其中 :
是 Unicode 全角冒号。 使用 rclone
将其复制到 Google Drive 时,你会发现文件
重命名为 Test:1.jpg
,其中 :
是普通(半宽)冒号。
这种重命名的原因是 rclone 处理不同的 限制文件名的方式。 云存储系统上不同[限制文件名](/overview/#restricted-filenames)的处理方式。 它尽量避免使用模棱两可的文件名,并允许在多个云存储系统之间移动文件。 并允许在多个云存储系统之间透明地移动文件。 透明地在多个云存储系统之间移动文件。 Unicode 字符替换无效字符,在传输到一个存储系统时再替换回无效字符。 在传输到支持原始字符的不同存储系统时,再替换回原始字符。 在传输到支持原始字符的不同存储系统时,再替换回原始字符。 当相同的 Unicode 字符 时,这种替换策略会导致不必要的重命名。 不必要的重命名。 了解更多[此处](/overview/#restricted-filenames-caveats)。