fnos-new-dir
飞牛 fnOS 创建下载目录
补充说明
fnos-new-dir 是专为飞牛 fnOS(NAS 系统)设计的下载目录批量创建脚本。通过一条命令同时创建多个网盘和下载工具的存储目录,并自动设置正确的权限和属主,避免下载工具因目录权限不足而无法写入的问题。
适用于飞牛 fnOS、OpenWrt、iStoreOS 等基于 Linux 的 NAS/路由器系统。
为什么要统一创建下载目录
在 NAS 或路由器上运行多款下载工具时,如果每个工具各自创建目录,容易出现:
- 权限不一致,导致容器无法写入
- 目录分散,难以统一管理
- 属主错误,SSH 用户与 Docker 容器用户 UID/GID 不匹配
使用本脚本一次性创建所有目录,可确保权限和属主统一。
目录结构说明
/vol2/1000/downloads/ # 下载根目录(fnOS 第二块盘)
├── 115/ # 115 网盘挂载目录
├── 123/ # 123 网盘挂载目录
├── aliyun/ # 阿里云盘挂载目录
├── baidu/ # 百度网盘挂载目录
├── downloads/ # 通用下载目录
├── gopeed/ # Gopeed 下载工具目录
├── metube/ # Metube YouTube 下载目录
├── qbittorrent/ # qBittorrent 种子下载目录
├── quark/ # 夸克网盘挂载目录
├── transmission/ # Transmission 种子下载目录
└── xunlei/ # 迅雷远程下载目录
路径说明:
/vol2/1000/是飞牛 fnOS 第二块存储盘的用户目录,1000对应用户mobufan的 UID。
语法
fnos-new-dir [选项]
本命令实际上是一条组合 Shell 命令,核心由 mkdir、chmod、chown 三个命令组成。
选项
本脚本为固定命令,无额外选项。如需自定义,直接修改命令中的目录名即可。
一键命令
创建目录 + 设置权限 + 设置属主(完整版)
# 创建所有下载目录
mkdir -p /vol2/1000/downloads/{115,123,aliyun,baidu,downloads,gopeed,metube,qbittorrent,quark,transmission,xunlei} \
&& chmod -R 755 /vol2/1000/downloads/ \
&& chown -R mobufan:mobufan /vol2/1000/downloads/
# 验证结果
ls -la /vol2/1000/downloads/
分步执行(便于排查问题)
# 第一步:创建目录
mkdir -p /vol2/1000/downloads/{115,123,aliyun,baidu,downloads,gopeed,metube,qbittorrent,quark,transmission,xunlei}
# 第二步:设置权限为 755(rwxr-xr-x)
chmod -R 755 /vol2/1000/downloads/
# 第三步:设置属主和属组为 mobufan
chown -R mobufan:mobufan /vol2/1000/downloads/
# 验证
ls -la /vol2/1000/downloads/
权限说明
| 权限 | 数字 | 含义 |
|---|---|---|
rwxr-xr-x |
755 |
所有者可读写执行,组用户和其他用户可读可执行(推荐用于目录) |
rw-r--r-- |
644 |
所有者可读写,其他用户只读(推荐用于文件) |
rwx------ |
700 |
仅所有者有完整权限(私密目录) |
rwxrwxrwx |
777 |
所有用户均有完整权限(不安全,不推荐) |
Docker 容器权限注意事项
在 fnOS 上使用 Docker Compose 部署下载工具时,需要注意:
# docker-compose.yml 示例(qBittorrent)
services:
qbittorrent:
image: linuxserver/qbittorrent
volumes:
- /vol2/1000/downloads/qbittorrent:/downloads
environment:
- PUID=1000 # 与目录属主 UID 一致
- PGID=1000 # 与目录属组 GID 一致
关键点:
PUID和PGID必须与目录的属主 UID/GID 一致,否则容器内部用户无权写入挂载目录。
自定义目录
如果只需要部分目录,或修改目录名称,直接编辑花括号内容即可:
# 只创建常用网盘目录
mkdir -p /vol2/1000/downloads/{115,aliyun,baidu} \
&& chmod -R 755 /vol2/1000/downloads/ \
&& chown -R mobufan:mobufan /vol2/1000/downloads/
# 添加自定义目录
mkdir -p /vol2/1000/downloads/{115,123,aliyun,baidu,downloads,gopeed,metube,qbittorrent,quark,transmission,xunlei,onedrive,google-drive} \
&& chmod -R 755 /vol2/1000/downloads/ \
&& chown -R mobufan:mobufan /vol2/1000/downloads/
不同存储路径
如果你的 fnOS 存储盘路径不同,修改 /vol2/1000/ 部分:
# 第一块盘
mkdir -p /vol1/1000/downloads/{115,123,aliyun,baidu,downloads,gopeed,metube,qbittorrent,quark,transmission,xunlei} \
&& chmod -R 755 /vol1/1000/downloads/ \
&& chown -R mobufan:mobufan /vol1/1000/downloads/
# 自定义路径
mkdir -p /mnt/data/downloads/{115,123,aliyun,baidu,downloads,gopeed,metube,qbittorrent,quark,transmission,xunlei} \
&& chmod -R 755 /mnt/data/downloads/ \
&& chown -R mobufan:mobufan /mnt/data/downloads/
相关命令
| 命令 | 说明 |
|---|---|
| mkdir | 创建目录的基础命令 |
| chmod | 修改文件或目录权限 |
| chown | 修改文件或目录的属主和属组 |
| ls | 查看目录和权限信息(ls -la) |
| id | 查看当前用户的 UID 和 GID |
常见问题
Q: 执行后提示 mkdir: cannot create directory?
A: 检查路径是否存在,以及当前用户是否有写入权限。在 fnOS 上可能需要 sudo 或切换到 root 用户执行。
Q: Docker 容器仍然无法写入目录?
A: 检查 docker-compose.yml 中的 PUID 和 PGID 是否与目录属主 UID/GID 一致。可运行 id mobufan 查看正确的 UID/GID。
Q: 修改了目录权限后,下载工具仍报错?
A: 某些下载工具(如 qBittorrent)需要在 Web UI 中重新设置下载路径,或重启容器使权限生效。
Q: 如何查看目录的当前权限和属主?
A: 使用 ls -la /vol2/1000/downloads/ 查看,输出中第一列是权限,第三列是属主,第四列是属组。