跳到主要内容

修复 macOS Too Many Open Files 错误 —— 使用 RcloneView 解决

· 阅读需 5 分钟
Tayson
Senior Engineer

通过提高系统文件描述符限制,解决 RcloneView 在 macOS 上出现的“too many open files”错误 —— 这是针对挂载和大规模同步操作的官方推荐修复方案。

macOS 对一个进程可以使用的文件描述符(打开文件)数量设有默认限制 —— 根据 macOS 版本不同,通常在 256 到 1024 之间。当 RcloneView 挂载云端驱动器或运行涉及大量并发文件操作的大规模同步时,这一限制可能会被耗尽,从而导致 too many open files 之类的错误或意外的挂载失败。这是一个已被记录在案的 macOS 限制,需要进行系统级配置更改才能解决。

RcloneView 应用预览

在一个地方管理和同步所有云端

RcloneView 是 rclone 的跨平台 GUI。通过清爽的可视化界面比较文件夹、传输或同步文件,并自动化多云工作流。

  • 一键作业:复制 · 同步 · 比较
  • 调度器与历史记录,实现可靠的自动化
  • 支持 Google Drive、OneDrive、Dropbox、S3、WebDAV、SFTP 等
WindowsmacOSLinux
免费开始使用 →

核心功能免费。Plus 提供自动化功能。

为什么会发生这种情况

当你使用 RcloneView 将云存储挂载为虚拟驱动器时,rclone 进程会为缓存的文件和活动的目录列表维护打开的文件句柄。对于文件数量庞大的远程 —— 例如拥有 5 万份文档的 Google Drive,或者拥有数万个对象的 S3 存储桶 —— 在高强度操作期间,并发句柄数量可能会超过 macOS 保守的默认值。

为保证挂载操作顺畅运行,建议的文件句柄限制为 524,288(软限制和硬限制均设置为该值)。这是 RcloneView 在 macOS 上文档中记录的数值。

Mounting cloud storage in RcloneView on macOS

创建 LaunchDaemon 配置

要在 macOS 上永久提高文件描述符限制,需要创建一个 LaunchDaemon plist 文件,在系统启动时设置该限制。打开终端并执行以下步骤:

1. 创建 plist 文件:

sudo nano /Library/LaunchDaemons/limit.maxfiles.plist

2. 粘贴以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>524288</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>

3. 设置正确的权限并加载:

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chmod 644 /Library/LaunchDaemons/limit.maxfiles.plist

创建文件后,重启你的 Mac 以使新的限制生效。必须重启 —— 仅加载守护进程而不重启,可能无法在系统范围内应用该限制。

Cloud drive mount working correctly after fixing file descriptor limit on macOS

验证限制是否已生效

重启后,打开终端确认新的限制已生效:

launchctl limit maxfiles

输出应显示软限制和硬限制均为 524288。如果显示的数值较低,说明 plist 文件可能存在格式错误 —— 请重新检查是否有拼写错误或不可见字符。

macOS 上的其他问题:空文件夹

如果你的桌面、文稿或下载文件夹在 macOS Catalina 及更高版本的 RcloneView 中显示为空,原因有所不同:这是因为 macOS 的隐私权限尚未授予 RcloneView。前往 系统设置 > 隐私与安全性 > 文件与文件夹,在列表中找到 RcloneView,并启用访问权限。你也可以将 RcloneView 添加到完全磁盘访问权限中以获得更广泛的权限。更改权限后,请重新启动 RcloneView。

RcloneView macOS privacy permissions configuration

快速上手

  1. rcloneview.com 下载 RcloneView
  2. 创建 /Library/LaunchDaemons/limit.maxfiles.plist,将软限制和硬限制均设置为 524288。
  3. 设置正确的文件所有者和权限,然后重启你的 Mac。
  4. 重启后使用 launchctl limit maxfiles 验证限制是否生效。

提高文件描述符限制是一次性的系统更改,可以为今后 RcloneView 中所有的挂载和同步操作解决打开文件错误的问题。


相关指南:

支持的云服务商

Local Files
WebDAV
FTP
SFTP
HTTP
SMB / CIFS
Google Drive
Google Photos
Google Cloud Storage
OneDrive
Dropbox
Box
MS Azure Blob
MS File Storage
S3 Compatible
Amazon S3
pCloud
Wasabi
Mega
Backblaze B2
Cloudflare R2
Alibaba OSS
Ceph
Swift (OpenStack)
IBM Cloud Object Storage
Oracle Cloud Object Storage
IDrive e2
MinIO
Storj
DigitalOcean Spaces