Download Server
最近终于有空,把之前想了很久的下载机配置了一下
这次配置的是下载机,可以实现远程挂机下载,下载完成后再用固定的 本地 - Server
的线路把下载好的文件取回
实现效果
以下是目前实现的效果,之后遇到问题还会不断更新:
- 通过
https://<files.domain>
访问存储在/var/www/files
文件夹内的下载好的文件,供本地用 aria2、wget 等方式下载 - 普通下载任务:
- Server:通过
https://<ariang.domain>
访问 AriaNg 网页,登录账号,添加任务,文件下载到/disk/aria2Downloads
,下载完成后自动创建链接到/var/www/files
- 本地使用 aria2 开启 16 线程从 Nginx 文件服务器下载文件,一般可以跑满网络带宽,下载完成后自动运行脚本删除 Server 中存储的文件
- Server:通过
- BT 下载任务:
- Server:通过
https://<qbit.domain>
打开 qBittorrent 网页,登录账号,添加任务,文件下载到/disk/qBitDownloads
,下载完成后自动创建链接到/var/www/files
- 因为 BT 下载多为文件夹,无法使用 aria2 下载,因此根据情况判断:
- 若下载内容为文件集合,即没有目录结构,使用脚本获取所有文件链接,使用 aria2 和普通任务一样下载
- 若下载内容有复杂的目录结构,使用 wget 下载
- 下载完成后前往
https://<qbit.domain>
手动删除任务及文件,删除前保持做种
- Server:通过
- 脚本每分钟自动检查源文件,如源文件被删除则删除对应
/var/www/files
文件夹中的链接
存在不足
- 本地下载 BT 文件不够优雅:
- 不含目录结构的 BT 文件需要手动执行脚本获取所有文件列表后使用 aria2 下载
- 包含目录结构的 BT 文件需要手动使用 wget 下载、手动多开 wget 实现多线程,以及下载完成后需要手动删除 Server 上的文件
以下内容都会按照上面提到的 URL 和路径来配置,当然你也可以修改为其他 URL 和路径
前期准备
- (如果需要用域名访问或开启 HTTPS)一个域名,并且会配置 DNS
- 一台 Server,有容量足够大的硬盘
Server 选择
用 VPS 下载文件很容易遇到版权问题,如果用一些普通机器,尤其是美国地区的,稍不小心就会导致 VPS 被停机
因此,如果是需要下载,最好选择 抗 DMCA 投诉
的机器,多分布于欧洲,如卢森堡、摩尔多瓦等
比较推荐的是 BuyVM 家的卢森堡机器,抗 DMCA 投诉
- 最低配 1C512M,10GB 硬盘,1 Gbps 无限流量,$2/mo.
可以额外加购存储块,最低 256GB 存储块为 $1.25/mo.
其他还有低价的抗 DMCA VPS 如 Alexhost 和 AvenaCloud 等,最低配年付都在 $10 左右,但是硬盘比较小,只适合作为中转使用,或是挂载远程硬盘,操作比较麻烦
配置 VPS
Nginx 搭建文件服务器
首先用 Nginx 搭建一个文件服务器,供本地下载已经下载到 VPS 上的文件
前期准备
- 添加 DNS,将
<files.domain>
指向 VPS IP
- 添加 DNS,将
安装 Nginx
1
apt install nginx
配置 Nginx
创建存放文件的目录
1
mkdir -p /var/www/files
允许 80 端口经过防火墙
1
ufw allow 80
编辑
<files.domain>
配置1
vim /etc/nginx/sites-available/<files.domain>
将以下内容写入到
<files.domain>
1
2
3
4
5
6
7
8
9
10
11server {
listen 80;
server_name <files.domain>;
location / {
root /var/www/files;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}为
<files.domain>
创建链接1
ln -s /etc/nginx/sites-available/<files.domain> /etc/nginx/sites-enabled/
检查 Nginx 配置
1
nginx -t
如果得到以下结果,即包含关键字
successful
即可1
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
: configuration file /etc/nginx/nginx.conf test is successful重新启动 Nginx 以应用配置文件
1
systemctl restart nginx
此时可以通过
http://<file.domain>
访问文件服务器
(可选,建议)启用 HTTPS
安装 certbot
1
apt install certbot python3-certbot-nginx
允许 443 端口通过防火墙
1
ufw allow 443
获取证书
1
certbot --nginx -d <files.domain>
编辑配置文件
1
vim /etc/nginx/sites-available/<files.domain>
Certbot 应该会自动将配置文件改成以下内容,否则手动编辑:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
server_name <files.domain>;
location / {
root /var/www/files;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/<files.domain>/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/<files.domain>/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
重新启动 Nginx
1
systemctl restart nginx
此时可以通过
https://<files.domain>
访问文件服务器
编辑自动检查链接脚本
1
vim /root/.sh/check_links.sh
写入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 要检查的目录路径
DIRECTORY="/var/www/files"
LOG_FILE="/root/.sh/check_links.log"
# 查找目录中的所有符号链接
find "$DIRECTORY" -type l | while read -r symlink; do
# 获取符号链接指向的目标文件
target=$(readlink "$symlink")
echo "$(date): Checking link: $symlink > $target" >> "$LOG_FILE"
# 如果目标文件不存在,则删除该符号链接
if [ ! -e "$target" ]; then
echo "$(date): Deleting broken link: $symlink > $target" >> "$LOG_FILE"
rm "$symlink"
fi
done
echo "$(date): Checking finished" >> "$LOG_FILE"1
2chmod +x /root/.sh/check_links.sh
crontab -e在文件末尾加入:
1
* * * * * /bin/bash /root/.sh/check_links.sh
配置 aria2
安装 aria2
1
apt install aria2
配置 aria2
创建 aria2 相关文件目录
1
mkdir -p /root/.aria2
创建 aria2 配置文件目录
1
mkdir -p /etc/aria2
创建 aria2 下载目录
1
mkdir -p /<disk>/aria2Downloads
编辑 aria2 配置
1
vim /etc/aria2/aria2.conf
输入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# Enable RPC
enable-rpc=true
# Listen on all network interfaces
rpc-listen-all=true
# Allow all origins (for web frontends)
rpc-allow-origin-all=true
# Set RPC listening port
rpc-listen-port=6800
# Set the maximum number of concurrent downloads
max-concurrent-downloads=5
# Log file
log-level=notice
log=/root/.aria2/aria2.log
# Download path
dir=/<disk>/aria2Downloads
# Check Integrity
check-integrity=true
# Resume Download
continue=true
# Move file when complete
on-download-complete=/root/.aria2/link_completed.sh
# Seed time
seed-time=600允许 6800 端口通过防火墙
1
ufw allow 6800
创建下载完成时运行脚本
link_completed.sh
1
vim /root/.aria2/link_completed.sh
写入以下内容:
1
2
3
ln -s "$3" "/var/www/files/"为脚本添加执行权限:
1
chmod +x /root/.aria2/link_completed.sh
启动 aria2 并设置开机自启动
编辑服务文件
1
vim /etc/systemd/system/aria2.service
写入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=Aria2 RPC Service
After=network.target
[Service]
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
Restart=always
User=root
Environment="HOME=/root"
[Install]
WantedBy=multi-user.target将 aria2 服务设置为开机自启动
1
systemctl enable aria2
启动 aria2 服务
1
systemctl start aria2
查看 aria2 状态
1
systemctl status aria2
配置 AriaNg
前期准备
- 添加 DNS,将
<ariang.domain>
指向 VPS IP
- 添加 DNS,将
配置 AriaNg
安装 AriaNg
1
wget https://github.com/mayswind/AriaNg/releases/download/1.3.7/AriaNg-1.3.7-AllInOne.zip
前往 Releases · mayswind/AriaNg 查看最新版本
All In One 版本拥有所有需要的内容,可以直接用浏览器访问,普通版本根据需要手动安装
创建网站目录
1
mkdir -p /var/www/ariang
解压 AriaNg 到网站目录
1
unzip AriaNg-1.3.7-AllInOne.zip -d /var/www/ariang
如果没有 unzip 需先安装
1
apt install unzip
添加 Nginx 配置
1
vim /etc/nginx/sites-available/<ariang.domain>
输入以下内容:
1
2
3
4
5
6
7
8
9server {
listen 80;
server_name <ariang.domain>;
location / {
root /var/www/ariang;
index index.html;
}
}为
<ariang.domain>
创建链接1
ln -s /etc/nginx/sites-available/<ariang.domain> /etc/nginx/sites-enabled/
检查 Nginx 配置
1
nginx -t
重新启动 Nginx
1
systemctl restart nginx
此时可以通过
http://<ariang.domain>
访问 AriaNg
(可选,建议)启用 HTTPS
安装 certbot
1
apt install certbot python3-certbot-nginx
获取证书
1
certbot --nginx -d <ariang.domain>
- 编辑配置文件
1
vim /etc/nginx/sites-available/<ariang.domain>
Certbot 应该会自动将配置文件改成以下内容,否则手动编辑:
1
2
3
4
5
6
7
8
9
10
11
12
13
14server {
server_name <ariang.domain>;
location / {
root /var/www/ariang;
index index.html;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/<ariang.domain>/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/<ariang.domain>/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
重新启动 Nginx
1
systemctl restart nginx
配置 aria2
1
vim /etc/aria2/aria2.conf
写入以下内容:
1
2
3rpc-secure=true
rpc-certificate=/etc/letsencrypt/live/<ariang.domain>/fullchain.pem
rpc-private-key=/etc/letsencrypt/live/<ariang.domain>/privkey.pem此时可以通过
https://<ariang.domain>
访问 AriaNg。
配置 qBittorrent
- 前期准备
- 添加 DNS,将
<qbit.domain>
指向 VPS IP
- 安装 qBittorrent
1 | wget https://github.com/c0re100/qBittorrent-Enhanced-Edition/releases/download/release-4.6.5.10/qBittorrent-enhanced-nox_x86_64-linux-musl_static.zip |
这里选择的是 c0re100 在原版 qBittorrent 基础上修改的加强版,加入了屏蔽迅雷这类吸血客户端等功能:GitHub - c0re100/qBittorrent-Enhanced-Edition
当然也可以选择原版 qBittorrent:GitHub - qbittorrent/qBittorrent
- 将 qBittorrent 解压到安装目录
1 | unzip qBittorrent-enhanced-nox_x86_64-linux-musl_static.zip -d /usr/local/bin/ |
添加可执行权限
1 | chmod +x /usr/local/bin/qbittorrent-nox |
- 添加 qBittorrent 服务
1 | vim /etc/systemd/system/qbittorrent.service |
写入以下内容:
1 | [Unit] |
- <\username>:系统用户名
- 重新加载 daemon
1 | systemctl daemon-reload |
- 将 qBittorrent 设置为开机自启动
1 | systemctl enable qbittorrent |
- 允许 8080 端口通过防火墙
1 | ufw allow 8080 |
- 启动 qBittorrent
1 | systemctl start qbittorrent |
现在可通过
http://<vps-ip>:8080
打开 qBittorrent- 首次访问会在 Terminal 给出初始账号密码,进入系统后修改
(可选)绑定域名
添加 Nginx 配置
1
vim /etc/nginx/sites-available/<qbit.domain>
写入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12server {
listen 80;
server_name <qbit.domain>;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}为
<qbit.domain>
创建链接1
ln -s /etc/nginx/sites-available/<qbit.domain> /etc/nginx/sites-enabled/
检查 Nginx 配置
1
nginx -t
重新启动 Nginx
1
systemctl restart nginx
此时可以通过
http://<qbit.domain>
访问 qBittorrent
(可选,建议)启用 HTTPS
安装 certbot:
1
apt install certbot python3-certbot-nginx
获取证书
1
certbot --nginx -d <qbit.domain>
编辑配置文件
1
vim /etc/nginx/sites-available/<qbit.domain>
Certbot 应该会自动将配置文件改成以下内容,否则手动编辑:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
listen 443 ssl;
server_name <qbit.domain>;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
ssl_certificate /etc/letsencrypt/live/<qbit.domain>/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/<qbit.domain>/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
重新启动 Nginx
1
systemctl restart nginx
此时可以通过
https://<qbit.domain>
访问 qBittorrent
配置 qBittorrent
打开 qBittorrent 网页后前往
工具
,选项
- 下载
- (可选)勾选
为所有文件预分配磁盘空间
- (可选)勾选
为不完整的文件添加扩展名 .!qB
- 编辑保存路径为
disk/qBitDownloads
- 勾选
torrent 完成时运行外部程序
,输入/root/.qBittorrent/link_completed.sh "%F"
- (可选)勾选
- 连接
- 记住
用于传入连接的端口
<port>
- 记住
- 高级
(建议)勾选
Auto Ban Unknown Client From China
屏蔽迅雷这类的吸血客户端
- 下载
防火墙允许端口
1
ufw allow <port>
编辑完成后运行脚本
1
vim /root/.qBittorrent/link_completed.sh
输入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
FILE_PATH=$1
TARGET_DIR="/var/www/files"
LOG_FILE="/root/.qBittorrent/link_completed.log"
DOWNLOAD_PATH="/disk/qBitDownloads"
# 记录日志的函数
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# 检查目标目录是否存在,不存在则创建
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p "$TARGET_DIR"
fi
echo "$FILE_PATH" >> "$LOG_FILE"
# 移动文件并记录日志
while true; do
NEW_PATH=$FILE_PATH
NEW_PATH="${NEW_PATH%/*}"
echo "FILE_PATH: $FILE_PATH" >> "$LOG_FILE"
echo "NEW_PATH: $NEW_PATH" >> "$LOG_FILE"
if [ "$NEW_PATH" = "$DOWNLOAD_PATH" ]; then
break
fi
FILE_PATH=$NEW_PATH
done
echo "处理文件:$FILE_PATH" >> "$LOG_FILE"
if ln -s "$FILE_PATH" "$TARGET_DIR/"; then
log_message "Created symlink for $FILE_PATH in $TARGET_DIR/"
else
log_message "Failed to create symlink for $FILE_PATH"
fi- 自动找到最顶层的目录然后创建链接
1
chmod +x /root/.qBittorrent/link_completed.sh
配置本地下载
aira2
下载的普通文件用 aria2 下载到本地
安装过程与 VPS 类似,需要在下载完成时运行脚本 delete_remote.sh
1 |
|
自动删除 aria2 下载的普通文件
此外,还可以用 aria2 下载没有目录结构的 BT 文件,用以下脚本获取所有文件的 URL 列表:
1 |
|
1 | sh get_urls.sh <FolderURL> |
然后把 file_urls.txt
中的内容粘贴到 aria2 中下载
wget
下载的包含目录结构的 BT 文件用 wget 下载到本地
但是 wget 是单线程下载,因此可以手动对目录中的各个文件夹分别使用 wget 下载
无需担心下载下来以后的目录结构问题,wget 会自动创建并管理从 URL 开始的目录结构,只需对文件夹运行以下命令:
1 | wget -r -N -c -np -R "index.html*" <URL> |
下载完成后前往 http://<qbit.domain>
手动删除任务及文件
更新历史
0.4
做种的时候发现经常有迅雷客户端,明明对他上传的速度不低,他却一直保持进度为 0%,从而保持最高的优先级获取下载,而且只下载不上传
因此我得想办法把迅雷这类的吸血客户端给屏蔽了
但是 aria2 的功能有限,无法实现,于是找到了 qBittorrent 的增强版
从此将普通任务和 BT 任务分离,分别由 aria2 和 qBittorrent 下载,还使得运行脚本极大程度简化,aria2 的下载完成运行脚本只剩
1 |
|
而 qBittorrent 的脚本也只需找到最顶层创建链接
1 |
|
下载完成后的做种,我决定不固定分享率或是做种时间,而是在我手动删除原文件前一直保持做种
在我本地完成原文件的下载后,或是下一次需要进行新的下载而腾出空间时,再手动删除原文件
至于能做多少时间的种或是能上传多少数据,就都随缘了,一般都能达到 2 以上
0.3
突然意识到文件被移动后就无法继续做种,而如果使用拷贝则会占用双份空间
如果使用了挂载的硬盘,这两种方式都无法利用硬盘空间
因此将移动改为了创建软连接,把下载好的文件软链接到 var/www/files
1 | ln -s "$FILE_PATH" "$TARGET_DIR/" |
0.2
因为 BT 和普通文件都用 aria2 下载,部分 BT 文件可能包含多个文件,甚至有复杂的目录结构,因此需要遍历每个文件,并找到最上层的文件夹,将整个文件夹移动
此外,还需要区分 BT 任务下载完成 on_bt_download_complete.sh
和普通文件下载完成 on_download_complete.sh
,因为在 BT 任务中,on_download_complete.sh
需要等到做种结束才会执行
因此我需要在文件下载完成以后,做种之前执行,也就是 on_bt_download_complete.sh
,把文件移动到 Nginx 文件夹以便可以下载
所以这里非常复杂,不仅是 on_download_complete.sh
需要判断类型,避免 BT 任务执行过 on_bt_download_complete.sh
后重复执行,还有 move_completed.sh
需要根据 GID
获取当前任务的所有文件列表,并遍历文件、找到最顶层文件夹移动等
on_download_complete.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
GID=$1
NUM_FILES=$2
FILES_LIST=$3
LOG_FILE="/root/.aria2/on_download_complete.log"
ARIA2_RPC_URL="https://<ariang.domain>:6800/jsonrpc"
# 记录日志的函数
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# 获取下载类型并记录日志
log_message "Downloaded GID: $GID"
# 检查 NUM_FILES 是否等于 0
if [ "$NUM_FILES" -eq 0 ]; then
log_message "NUM_FILES = 0, exit"
exit 1
fi
# Function to get the info hash of a download
get_info_hash() {
local gid=$1
curl -s -X POST -d '{"jsonrpc":"2.0","method":"aria2.tellStatus","id":"1","params":["'"$gid"'"]}' "$ARIA2_RPC_URL" | jq -r '.result.infoHash'
}
# Check if the completed download is a BitTorrent download
info_hash=$(get_info_hash "${GID}")
log_message "infoHash: $info_hash"
if [ "${info_hash}" = "null" ]; then
echo "Download with GID ${gid} is not a BitTorrent download." >> "$LOG_FILE"
else
echo "Download with GID ${gid} is a BitTorrent download, exit" >> "$LOG_FILE"
exit 1
fi
# 调用 move_complete.sh 并记录日志
log_message "Calling move_completed.sh with GID=$GID, NUM_FILES=$NUM_FILES, FILES_LIST=$FILES_LIST"
/root/.aria2/move_completed.sh "$GID" "$NUM_FILES" "$FILES_LIST"
if [ $? -eq 0 ]; then
log_message "move_completed.sh completed successfully"
else
log_message "move_completed.sh failed"
fion_bt_download_completed.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GID=$1
NUM_FILES=$2
FILES_LIST=$3
LOG_FILE="/root/.aria2/on_bt_download_complete.log"
# 记录日志的函数
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# 调用 move_completed.sh 并记录日志
log_message "Starting move_completed.sh with GID=$GID, NUM_FILES=$NUM_FILES, FILES_LIST=$FILES_LIST"
/root/.aria2/move_completed.sh "$1" "$2" "$3"
if [ $? -eq 0 ]; then
log_message "move_completed.sh completed successfully"
else
log_message "move_completed.sh failed"
fimove_completed.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
GID=$1
NUM_FILES=$2
TARGET_DIR="/var/www/files"
LOG_FILE="/root/.aria2/move_completed.log"
ARIA2_RPC_URL="https://<ariang.domain>:6800/jsonrpc"
DOWNLOAD_PATH="/root/.aria2/Downloading"
# 记录日志的函数
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# 检查目标目录是否存在,不存在则创建
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p "$TARGET_DIR"
fi
# 获取文件列表的函数
get_file_list() {
local gid=$1
local rpc_url=$2
curl -s -X POST -d '{"jsonrpc":"2.0","method":"aria2.getFiles","id":"1","params":["'"$gid"'"]}' "$rpc_url" | jq -r '.result[] | .path'
}
# 获取文件列表
FILES_LIST=$(get_file_list "$GID" "$ARIA2_RPC_URL")
echo "$FILES_LIST" >> "$LOG_FILE"
# 移动文件并记录日志
while IFS= read -r FILE_PATH; do
while true; do
NEW_PATH=$FILE_PATH
NEW_PATH="${NEW_PATH%/*}"
echo "FILE_PATH: $FILE_PATH" >> "$LOG_FILE"
echo "NEW_PATH: $NEW_PATH" >> "$LOG_FILE"
if [ "$NEW_PATH" = "$DOWNLOAD_PATH" ]; then
break
fi
done
echo "处理文件:$FILE_PATH" >> "$LOG_FILE"
if mv "$FILE_PATH" "$TARGET_DIR/"; then
log_message "Created symlink for $FILE_PATH in $TARGET_DIR/"
else
log_message "Failed to create symlink for $FILE_PATH"
fi
done <<< "$FILES_LIST"
0.1
我将 aria2 的下载目录直接指定为 Nginx 文件夹,即 /var/www/files
但是 aria2 下载中的文件和已下载完成的文件不好区分,只是还未下载完的文件会额外多一个 .aria2
文件
于是我将下载文件夹改成 /root/aria2Downloads
,下载完成后用脚本移动到 /var/www/files
1 |
|
About this Post
This post is written by OwlllOvO, licensed under CC BY-NC 4.0.