将树莓派当做远程下载机

2018-10-17 4114 0

1. 外接移动硬盘

由于USB口供电能力有限,可以单独买一个带电源的USB集线器,USB集线器一定要选择质量信得过的牌子,供电能力足够的,带过流保护功能,如此一来就可以连接多个移动硬盘。

2. 安装aria2

  1. sudo apt-get install aria2 -y

创建配置

  1. mkdir -p ~/.aria2
  2. touch ~/.aria2/aria2.session
  3. vim ~/.aria2/aria2.conf

配置文件内容如下:

  1. # 下载目录
  2. dir=/home/ubuntu/.aria2/downloads
  3. # 下载从这个文件中找到的urls, 需自己建立这个文件
  4. input-file=/home/ubuntu/.aria2/.session
  5. # 保存错误或者未完成的下载到这个文件
  6. # 和基本配置中的 input-file 一起使用,那么重启后仍可继续下载
  7. save-session=/home/ubuntu/.aria2/.session
  8. # 每5分钟自动保存错误或未完成的下载,如果为 0, 只有 aria2 正常退出才回保存,默认 0
  9. save-session-interval=300
  10. # 若要用于 PT 下载,需另外的配置,这里没写
  11. # 下载完成后执行脚本
  12. on-download-complete=/home/ubuntu/.aria2/move.sh
  13. # 日志级别
  14. log-level=info
  15. # 最大同时下载任务数,默认 5
  16. max-concurrent-downloads=10
  17. # 断点续传,只适用于 HTTP(S)/FTP
  18. continue=true
  19. # HTTP/FTP 配置
  20. # 关闭连接如果下载速度等于或低于这个值,默认 0
  21. # lowest-speed-limit=0
  22. # 对于每个下载在同一个服务器上的连接数,默认 1
  23. max-connection-per-server=5
  24. # 磁盘缓存
  25. disk-cache=25M
  26. # 每个文件最小分片大小,例如文件 20M,设置 size 为 10M, 则用2个连接下载,默认 20M
  27. # min-split-size=10M
  28. # 下载一个文件的连接数,默认 5
  29. split=10
  30. # BT 特殊配置
  31. # 启用本地节点查找,默认 false
  32. bt-enable-lpd=true
  33. # 指定最大文件数对于每个 bt 下载,默认 100
  34. # bt-max-open-files=100
  35. # 单种子最大连接数,默认 55
  36. # bt-max-peers=55
  37. # 设置最低的加密级别,可选全连接加密 arc4,默认是头加密 plain
  38. # bt-min-crypto-level=plain
  39. # 总是使用 obfuscation handshake,防迅雷必备,默认 false
  40. bt-require-crypto=true
  41. # 如果下载的是种子文件则自动解析并下载,默认 true
  42. # follow-torrent=true
  43. # 为 BT 下载设置 TCP 端口号,确保开放这些端口,默认 6881-6999
  44. listen-port=65298
  45. # Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker
  46. dht-listen-port=65298
  47. enable-dht=true
  48. bt-enable-lpd=true
  49. enable-peer-exchange=true
  50. # BT跟中服务器,从https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt获取
  51. 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
  52. # 整体上传速度限制,0 表示不限制,默认 0
  53. # max-overall-upload-limit=0
  54. # 每个下载上传速度限制,默认 0
  55. # max-upload-limit=0
  56. # 种子分享率大于1, 则停止做种,默认 1.0
  57. # seed-ratio=1
  58. # 做种时间大于2小时,则停止做种
  59. seed-time=120
  60. # RPC 配置
  61. # 开启 JSON-RPC/XML-RPC 服务,默认 false
  62. enable-rpc=true
  63. # 允许所有来源,web 界面跨域权限需要,默认 false
  64. rpc-allow-origin-all=true
  65. # 允许外部访问,默认 false
  66. rpc-listen-all=true
  67. # rpc 端口,默认 6800
  68. rpc-listen-port=6800
  69. # token验证
  70. # rpc-secret=123456
  71. # 设置最大的 JSON-RPC/XML-RPC 请求大小,默认 2M
  72. # rpc-max-request-size=2M
  73. # rpc 密码,可不设置
  74. # rpc-passwd=raspberry
  75. # rpc 用户名,可不设置
  76. # rpc-user=aria2pi
  77. # 高级配置
  78. # This is useful if you have to use broken DNS and
  79. # want to avoid terribly slow AAAA record lookup.
  80. # 默认 false
  81. disable-ipv6=true
  82. # 指定文件分配方法,预分配能有效降低文件碎片,提高磁盘性能,缺点是预分配时间稍长
  83. # 如果使用新的文件系统,例如 ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), falloc 是最好的选择
  84. # 如果设置为 none,那么不预先分配文件空间,默认 prealloc
  85. file-allocation=falloc
  86. # 整体下载速度限制,默认 0
  87. # max-overall-download-limit=0
  88. # 每个下载下载速度限制,默认 0
  89. # max-download-limit=0

启动命令:

  1. 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为例):

  1. sudo apt-get install nginx -y
  2. sudo mkdir -p /var/www/html
  3. sudo git clone https://github.com/ziahamza/webui-aria2.git /var/www/html/webui-aria2
  4. sudo chown -R www-data:www-data /var/www/html

编辑nginx配置文件/etc/nginx/conf.d/aria2.conf

  1. server {
  2. listen 8000;
  3. root /var/www/html/webui-aria2;
  4. }

访问 http://ip:8000 即可打开webui-aria2,点击 设置->连接设置,设置连接地址后然后保存。刷新页面后出现:“通过 RPC 连接到 Aria2 成功!”即表示连接成功。

要想将百度云盘的资源导出到aria2下载,请使用 BaiduExporter

如果需要外网访问,请参考内网穿透技术:部署ngrok服务

其中,~/.ngrok配置如下:

  1. server_addr: "ishield.cn:4443"
  2. trust_host_root_certs: false
  3. tunnels:
  4. ssh:
  5. remote_port: 50022
  6. proto:
  7. tcp: 22
  8. aria2:
  9. subdomain: pine64.aria2
  10. proto:
  11. http: 81
  12. aria2-rpc:
  13. remote_port: 50068
  14. proto:
  15. tcp: 6800

此时,访问 http://pine64.aria2.ishield.cn 即可,连接设置如下:

4. 安装supervisor

上面我们直接通过终端运行aria2c,如果终端断开,后台进程也就断开了,为此我们按照守护程序supervisor来保证aria2c一直运行。

  1. pip install supervisor

编辑配置文件supervisor.ini

  1. [unix_http_server]
  2. file=%(ENV_SUPERVISOR_HOME)s/proc/supervisor.sock ; (the path to the socket file)
  3. [inet_http_server] ; inet (TCP) server disabled by default
  4. port=0.0.0.0:7007 ; (ip_address:port specifier, *:port for all iface)
  5. username=digua ; (default is no username (open server))
  6. password=qwert54321 ; (default is no password (open server))
  7. [supervisord]
  8. logfile=%(ENV_SUPERVISOR_HOME)s/logs/supervisord.log ; (main log file;default $CWD/supervisord.log)
  9. logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  10. logfile_backups=10 ; (num of main logfile rotation backups;default 10)
  11. loglevel=info ; (log level;default info; others: debug,warn,trace)
  12. pidfile=%(ENV_SUPERVISOR_HOME)s/proc/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  13. nodaemon=false ; (start in foreground if true;default false)
  14. minfds=1024 ; (min. avail startup file descriptors;default 1024)
  15. minprocs=200 ; (min. avail process descriptors;default 200)
  16. [rpcinterface:supervisor]
  17. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  18. [supervisorctl]
  19. serverurl=unix://%(ENV_SUPERVISOR_HOME)s/proc/supervisor.sock ; use a unix:// URL for a unix socket
  20. [include]
  21. files = conf.d/*.ini

其中,环境变量SUPERVISOR_HOME是supervisor.ini所在目录(如/home/ubuntu/Documents/tools/runtime/supervisor),同时创建proc、logs、conf.d目录。

编辑supervisor运行aria2的配置conf.d/aria2.ini

  1. [program:aria2]
  2. command = /usr/bin/aria2c -c
  3. directory = /home/ubuntu/tools/runtime/supervisor
  4. user = ubuntu
  5. autostart = true
  6. autorestart = true
  7. redirect_stderr = true
  8. stdout_logfile = /home/ubuntu/tools/runtime/supervisor/logs/aria2.log

启动supervosord

  1. export SUPERVISOR_HOME=/home/ubuntu/Documents/tools/runtime/supervisor
  2. supervisord -c /home/ubuntu/Documents/tools/runtime/supervisor/supervisord.ini

如果成功启动,在http://ip:7007/ 即可看到supervisor的web管理界面,aria2已经是running状态。

开机启动supervisor

编辑配置文件/usr/lib/systemd/system/supervisor.service

  1. [Unit]
  2. Description=Supervisord Service
  3. [Service]
  4. User=ubuntu
  5. Type=forking
  6. Environment="SUPERVISOR_HOME=/home/ubuntu/tools/runtime/supervisor"
  7. ExecStart=/home/ubuntu/tools/runtime/pyenv/shims/supervisord -c /home/ubuntu/tools/runtime/supervisor/supervisord.ini
  8. Restart=on-failure
  9. StandardOutput=syslog
  10. StandardError=null
  11. [Install]
  12. WantedBy=multi-user.target
  13. Alias=supervisor.service

其中,User=ubuntu表示以ubuntu用户身份启动,Type=forking表示以子进程方式启动,主进程会退出。

然后启动supervisord服务

  1. sudo systemctl enable supervisor
  2. sudo systemctl start supervisor

5. 文件共享

安装samba实现文件共享

  1. sudo apt-get install samba -y

备份原配置文件cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,编辑/etc/samba/smb.conf

  1. [global]
  2. workgroup = WORKGROUP
  3. server string = %h server (Samba, Ubuntu)
  4. dns proxy = no
  5. log file = /var/log/samba/log.%m
  6. max log size = 1000
  7. syslog = 0
  8. panic action = /usr/share/samba/panic-action %d
  9. server role = standalone server
  10. passdb backend = smbpasswd
  11. obey pam restrictions = yes
  12. unix password sync = yes
  13. passwd program = /usr/bin/passwd %u
  14. passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  15. pam password change = yes
  16. map to guest = bad user
  17. usershare allow guests = yes
  18. [nas]
  19. comment = NAS data folder
  20. path = /home/ubuntu/Downloads
  21. security = user
  22. browseable = yes
  23. writable = yes
  24. valid users = ubuntu

passdb backend = smbpasswd表示使用samba提供的密码存储方式,默认存储位置是/etc/samba/smbpasswd,使用root用户管理samba用户:

  1. sudo smbpasswd -a ubuntu #添加账号,注意ubuntu必须是已经存在的linux账号
  2. sudo smbpasswd -x ubuntu #删除账号
  3. sudo smbpasswd -d ubuntu #禁用账号
  4. sudo smbpasswd -e ubuntu #恢复账号

添加账号后查看/etc/samba/smbpasswd是否添加成功。nas即表示要共享的目录。同时设置开机启动:

  1. sudo systemctl enable smbd
  2. sudo systemctl start smbd

在Finder ->连接服务器中输入smb://192.168.0.101/nas即可连接。

需要注意的是,共享的文件夹要有读写权限,否则无法连接。

6. 挂着HFS+格式移动硬盘

Linux默认可读到HFS+分区,但只有read权限。如果需要write权限则需要关掉journal功能,因为linux只支持读写non-journaled HFS+。

可以使用MacOS来设置

  1. #关闭Journal
  2. $ diskutil disableJournal disk0s2
  3. Journaling has been disabled on disk0s2
  4. #打开Journal
  5. $ diskutil enableJournal disk0s2
  6. Journaling has been enabled on disk0s2

或者安装hfsprogs

  1. sudo apt-get install hfsprogs
  2. sudo fsck.hfsplus -f /dev/sda1

挂载

  1. sudo mount -t hfsplus -o force,rw /dev/sda1 /media
  2. sudo umount /dev/sda1