将树莓派当做远程下载机
1. 外接移动硬盘
由于USB口供电能力有限,可以单独买一个带电源的USB集线器,USB集线器一定要选择质量信得过的牌子,供电能力足够的,带过流保护功能,如此一来就可以连接多个移动硬盘。
2. 安装aria2
sudo apt-get install aria2 -y
创建配置
mkdir -p ~/.aria2
touch ~/.aria2/aria2.session
vim ~/.aria2/aria2.conf
配置文件内容如下:
# 下载目录
dir=/home/ubuntu/.aria2/downloads
# 下载从这个文件中找到的urls, 需自己建立这个文件
input-file=/home/ubuntu/.aria2/.session
# 保存错误或者未完成的下载到这个文件
# 和基本配置中的 input-file 一起使用,那么重启后仍可继续下载
save-session=/home/ubuntu/.aria2/.session
# 每5分钟自动保存错误或未完成的下载,如果为 0, 只有 aria2 正常退出才回保存,默认 0
save-session-interval=300
# 若要用于 PT 下载,需另外的配置,这里没写
# 下载完成后执行脚本
on-download-complete=/home/ubuntu/.aria2/move.sh
# 日志级别
log-level=info
# 最大同时下载任务数,默认 5
max-concurrent-downloads=10
# 断点续传,只适用于 HTTP(S)/FTP
continue=true
# HTTP/FTP 配置
# 关闭连接如果下载速度等于或低于这个值,默认 0
# lowest-speed-limit=0
# 对于每个下载在同一个服务器上的连接数,默认 1
max-connection-per-server=5
# 磁盘缓存
disk-cache=25M
# 每个文件最小分片大小,例如文件 20M,设置 size 为 10M, 则用2个连接下载,默认 20M
# min-split-size=10M
# 下载一个文件的连接数,默认 5
split=10
# BT 特殊配置
# 启用本地节点查找,默认 false
bt-enable-lpd=true
# 指定最大文件数对于每个 bt 下载,默认 100
# bt-max-open-files=100
# 单种子最大连接数,默认 55
# bt-max-peers=55
# 设置最低的加密级别,可选全连接加密 arc4,默认是头加密 plain
# bt-min-crypto-level=plain
# 总是使用 obfuscation handshake,防迅雷必备,默认 false
bt-require-crypto=true
# 如果下载的是种子文件则自动解析并下载,默认 true
# follow-torrent=true
# 为 BT 下载设置 TCP 端口号,确保开放这些端口,默认 6881-6999
listen-port=65298
# Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker
dht-listen-port=65298
enable-dht=true
bt-enable-lpd=true
enable-peer-exchange=true
# BT跟中服务器,从https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt获取
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.open-internet.nl:6969/announce,udp://exodus.desync.com:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.internetwarriors.net:1337/announce,udp://9.rarbg.to:2710/announce,udp://public.popcorn-tracker.org:6969/announce,udp://tracker.vanitycore.co:6969/announce,udp://tracker.mg64.net:6969/announce,udp://mgtracker.org:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://tracker.cypherpunks.ru:6969/announce,udp://bt.xxx-tracker.com:2710/announce,udp://tracker.torrent.eu.org:451/announce,udp://thetracker.org:80/announce,udp://retracker.lanta-net.ru:2710/announce,udp://open.stealth.si:80/announce,udp://torr.ws:2710/announce,http://retracker.telecom.by:80/announce,http://tracker.city9x.com:2710/announce
# 整体上传速度限制,0 表示不限制,默认 0
# max-overall-upload-limit=0
# 每个下载上传速度限制,默认 0
# max-upload-limit=0
# 种子分享率大于1, 则停止做种,默认 1.0
# seed-ratio=1
# 做种时间大于2小时,则停止做种
seed-time=120
# RPC 配置
# 开启 JSON-RPC/XML-RPC 服务,默认 false
enable-rpc=true
# 允许所有来源,web 界面跨域权限需要,默认 false
rpc-allow-origin-all=true
# 允许外部访问,默认 false
rpc-listen-all=true
# rpc 端口,默认 6800
rpc-listen-port=6800
# token验证
# rpc-secret=123456
# 设置最大的 JSON-RPC/XML-RPC 请求大小,默认 2M
# rpc-max-request-size=2M
# rpc 密码,可不设置
# rpc-passwd=raspberry
# rpc 用户名,可不设置
# rpc-user=aria2pi
# 高级配置
# This is useful if you have to use broken DNS and
# want to avoid terribly slow AAAA record lookup.
# 默认 false
disable-ipv6=true
# 指定文件分配方法,预分配能有效降低文件碎片,提高磁盘性能,缺点是预分配时间稍长
# 如果使用新的文件系统,例如 ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), falloc 是最好的选择
# 如果设置为 none,那么不预先分配文件空间,默认 prealloc
file-allocation=falloc
# 整体下载速度限制,默认 0
# max-overall-download-limit=0
# 每个下载下载速度限制,默认 0
# max-download-limit=0
启动命令:
aria2c -c
3 使用webui管理aria2
aria2c只是一个命令行下载工具,还需要安装webui-aria2或者ariaNg来实现web管理。可以选择自己安装或者直接使用官方地址,只需要更改一下aria2 rpc的地址即可,
https://ziahamza.github.io/webui-aria2/
http://ariang.mayswind.net/latest/
如果自己安装,步骤如下(以webui-aria2为例):
sudo apt-get install nginx -y
sudo mkdir -p /var/www/html
sudo git clone https://github.com/ziahamza/webui-aria2.git /var/www/html/webui-aria2
sudo chown -R www-data:www-data /var/www/html
编辑nginx配置文件/etc/nginx/conf.d/aria2.conf
server {
listen 8000;
root /var/www/html/webui-aria2;
}
访问 http://ip:8000 即可打开webui-aria2,点击 设置->连接设置,设置连接地址后然后保存。刷新页面后出现:“通过 RPC 连接到 Aria2 成功!”即表示连接成功。
要想将百度云盘的资源导出到aria2下载,请使用 BaiduExporter
如果需要外网访问,请参考内网穿透技术:部署ngrok服务
其中,~/.ngrok
配置如下:
server_addr: "ishield.cn:4443"
trust_host_root_certs: false
tunnels:
ssh:
remote_port: 50022
proto:
tcp: 22
aria2:
subdomain: pine64.aria2
proto:
http: 81
aria2-rpc:
remote_port: 50068
proto:
tcp: 6800
此时,访问 http://pine64.aria2.ishield.cn 即可,连接设置如下:
4. 安装supervisor
上面我们直接通过终端运行aria2c,如果终端断开,后台进程也就断开了,为此我们按照守护程序supervisor来保证aria2c一直运行。
pip install supervisor
编辑配置文件supervisor.ini
[unix_http_server]
file=%(ENV_SUPERVISOR_HOME)s/proc/supervisor.sock ; (the path to the socket file)
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:7007 ; (ip_address:port specifier, *:port for all iface)
username=digua ; (default is no username (open server))
password=qwert54321 ; (default is no password (open server))
[supervisord]
logfile=%(ENV_SUPERVISOR_HOME)s/logs/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=%(ENV_SUPERVISOR_HOME)s/proc/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix://%(ENV_SUPERVISOR_HOME)s/proc/supervisor.sock ; use a unix:// URL for a unix socket
[include]
files = conf.d/*.ini
其中,环境变量SUPERVISOR_HOME是supervisor.ini所在目录(如/home/ubuntu/Documents/tools/runtime/supervisor),同时创建proc、logs、conf.d目录。
编辑supervisor运行aria2的配置conf.d/aria2.ini
[program:aria2]
command = /usr/bin/aria2c -c
directory = /home/ubuntu/tools/runtime/supervisor
user = ubuntu
autostart = true
autorestart = true
redirect_stderr = true
stdout_logfile = /home/ubuntu/tools/runtime/supervisor/logs/aria2.log
启动supervosord
export SUPERVISOR_HOME=/home/ubuntu/Documents/tools/runtime/supervisor
supervisord -c /home/ubuntu/Documents/tools/runtime/supervisor/supervisord.ini
如果成功启动,在http://ip:7007/ 即可看到supervisor的web管理界面,aria2已经是running状态。
开机启动supervisor
编辑配置文件/usr/lib/systemd/system/supervisor.service
[Unit]
Description=Supervisord Service
[Service]
User=ubuntu
Type=forking
Environment="SUPERVISOR_HOME=/home/ubuntu/tools/runtime/supervisor"
ExecStart=/home/ubuntu/tools/runtime/pyenv/shims/supervisord -c /home/ubuntu/tools/runtime/supervisor/supervisord.ini
Restart=on-failure
StandardOutput=syslog
StandardError=null
[Install]
WantedBy=multi-user.target
Alias=supervisor.service
其中,User=ubuntu
表示以ubuntu用户身份启动,Type=forking
表示以子进程方式启动,主进程会退出。
然后启动supervisord服务
sudo systemctl enable supervisor
sudo systemctl start supervisor
5. 文件共享
安装samba实现文件共享
sudo apt-get install samba -y
备份原配置文件cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
,编辑/etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = smbpasswd
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[nas]
comment = NAS data folder
path = /home/ubuntu/Downloads
security = user
browseable = yes
writable = yes
valid users = ubuntu
passdb backend = smbpasswd
表示使用samba提供的密码存储方式,默认存储位置是/etc/samba/smbpasswd
,使用root用户管理samba用户:
sudo smbpasswd -a ubuntu #添加账号,注意ubuntu必须是已经存在的linux账号
sudo smbpasswd -x ubuntu #删除账号
sudo smbpasswd -d ubuntu #禁用账号
sudo smbpasswd -e ubuntu #恢复账号
添加账号后查看/etc/samba/smbpasswd
是否添加成功。nas
即表示要共享的目录。同时设置开机启动:
sudo systemctl enable smbd
sudo systemctl start smbd
在Finder ->连接服务器中输入smb://192.168.0.101/nas
即可连接。
需要注意的是,共享的文件夹要有读写权限,否则无法连接。
6. 挂着HFS+格式移动硬盘
Linux默认可读到HFS+分区,但只有read权限。如果需要write权限则需要关掉journal功能,因为linux只支持读写non-journaled HFS+。
可以使用MacOS来设置
#关闭Journal
$ diskutil disableJournal disk0s2
Journaling has been disabled on disk0s2
#打开Journal
$ diskutil enableJournal disk0s2
Journaling has been enabled on disk0s2
或者安装hfsprogs
sudo apt-get install hfsprogs
sudo fsck.hfsplus -f /dev/sda1
挂载
sudo mount -t hfsplus -o force,rw /dev/sda1 /media
sudo umount /dev/sda1