我有一台 NAS,它有 4 个卷,其中包含共享文件夹。我有一台 Raspberry Pi 4(运行 RPI OS Bullseye),它使用 docker 和各种容器来实现各种目的。我已将 NAS 中的重要网络共享安装到这些容器中,作为卷,以供各种进程访问。
我有存储在“NAS 卷 1 - 共享文件夹 1”上的文件,一段时间后需要将它们移动到“NAS 卷 2 - 共享文件夹 2”。此传输由 Raspberry Pi 上的一个 docker 容器自动启动。与我简单地在 Windows PC 上手动将文件从共享文件夹 1 复制到共享文件夹 2 相比,这种方式的文件传输耗时非常长,后者最多只需几分钟。
共享文件夹上的文件系统相同,因为它们存储在同一 NAS 上,只是在不同的驱动器上。
我搜索了这方面的信息并发现最可能的原因是,由于启动从一个远程文件夹到另一个远程文件夹的复制的远程客户端(RPI4)不知道所安装驱动器的文件系统,因此可能首先将数据一点一点地复制到自身,然后再将其重新传输到目标文件夹,这就是为什么它需要这么多时间。
我曾尝试将这些共享文件夹放入 NAS 上的单个聚合“门户”文件夹中,这样我就可以只挂载该文件夹,并且该文件夹包含链接到不同卷上的共享的子文件夹。然而,这也没有提高复制过程的速度。
所以我的问题是:有没有办法我可以以某种方式设置这些远程网络文件夹,以便我的远程客户端(RPI4)可以启动文件复制,其性能与我从 Windows PC 客户端启动相同操作时相同,并且运行顺畅?
答案1
实现此目的的一种可能方法是,不要让 Raspberry PI 将 NAS 上的文件从一个文件夹复制到另一个文件夹,而是让 NAS 自行完成此工作。您的 NAS 上可能已经安装了某种软件来执行此类操作,但还有另一种方法:
- 如果你的 PI 上还没有默认的 ssh 客户端,请安装一个
- 在 NAS 上启用 ssh 服务器
- 在你的 PI 上编写一个脚本,用于复制/移动所需的文件和文件夹:它看起来应该是这样的
cp -r /path/to/foo /path/to/bar
- 让你的 PI 在需要时运行该脚本,例如使用
cron