百度网盘下载方式总结
今天又折腾了下如何较为快速地下载百度网盘的文件,这里记录一下,以后不再折腾了
1. 手机下载,Ftp传到电脑
手机不知道为什么下载会比电脑快不少,特别是大文件。Linux版下载文件也很快,感觉可能是对Linux版有优化
缺点就是手机要一直连着wifi,而且比较耗电
2. aria2
md不要再试了,这个东西一是配置起来非常繁琐,跨平台更繁琐,二是也不能实现加速,只是能直链下载。唯一将来可能有用的地方是在路由器上配置aria2然后到路由器上下载,这样不额外费电。但是还是,配置起来非常麻烦
3. 虚拟机下载
这指的是因为Linux下载快,所以开Linux虚拟机下载
缺点就是麻烦
4. 服务器下载
这是上午研究的重点。先用云服务器远程桌面下载,然后下载回本地。但是这里的问题是云服务器出口带宽非常小,所以下载还是非常慢,有两个办法:
-
第一个是将文件下载到另外一台云服务器AWS(AWS的带宽大,但是因为内存小所以不好直接安装GUI和百度网盘客户端),然后通过SSH下载下来。这个办法的问题就是AWS流量是有限的,超出15G要收费
这里有几个细节,就是首先,如果是远程连接的服务器,那么断开连接的话shell中的命令会中断执行。解决这个问题的办法是nohup或者screen命令
3.1 nohup 命令
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用 nohup 命令. 该命令可以在你退出帐户 / 关闭终端之后继续运行相应的进程. nohup 就是不挂起的意思.
我们现在开始启动服务 python pyserver.py,并且希望在后台运行. 我们就可以使用 nohup,命令如下:
nohup ./hello &
此时默认地程序运行的输出信息放到当前文件夹的 nohup.out 文件中去,加不加 & 并不会影响这个命令。只是让程序前台或者后台运行而已
然后另外一个 ssh 中, 我们用
pidof hello
来查看进程的 pid 信息, 显示出进程的 pid 为 29738接着我们关掉那个启动了
hello
的ssh
, 重新用pidof hello
再次查看进程信息, 发现进程仍然存在NOHUP 命令 说明 用途 挂断地运行命令 语法 nohup Command [Arg …] [ & ] 描述 nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示 “and” 的符号)到命令的尾部 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符.
退出状态, 该命令返回下列出口值
退出值 描述 126 可以查找但不能调用 Command 参数指定的命令 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令, 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态 3.2 screen 命令
如果想在关闭 ssh 连接后刚才启动的程序继续运行怎么办, 可以使用 nohup.
但是如果要求第二天来的时候. 一开 ssh, 还能查看到昨天运行的程序的状态,
然后继续工作,这时 nohup 是不行了, 需要使用 screen 来达到这个目的.
虽然 nohup 很容易使用,但还是比较 “简陋” 的,对于简单的命令能够应付过来,对于复杂的需要人机交互的任务就麻烦了
其实我们可以使用一个更为强大的实用程序 screen。流行的 Linux 发行版通常会自带 screen 实用程序,如果没有的话,可以从 GNU screen 的官方网站下载
执行 screen , 按任意键进入子界面;
我用./hello 命令开始执行, 如果下班了,但是想关闭 ssh 以后./hello 继续运行,那么按 ctrl+a 再按 d
这样暂停了子界面,会显示 [detached] 的字样,这时候 我回到了父界面;
用 screen –ls 查看目前子界面的状态 screen -ls
There is a screen on: 10869.pts-14.kylin (Detached) 1 Socket in /var/run/screens/S-gatieme.
如果回到子界面 用 screen –r 10869.pts-14.kylin,一下子弹到了./hello 的子界面;
打开新的会话窗口:screen
结束当前会话:exit
在新会话中执行程序(程序关闭时会话自动结束):screen vi test.c
打开新会话并起个名字:screen -S myname
暂时离开会话(经常用):Ctrl+a 然后 d
查看会话列表: screen -ls
恢复之前离开的会话:screen -r 会话名或进程号
清除dead状态的会话:screen -wipe
启动一个开始就是Detached状态的会话:screen -dmS 名字 命令这里使用nohup限制还是比较多,所以我推荐还是使用screen命令
另外,我们可以使用iftop命令来查看网络流量和连接
这里我还要对那个shell命令说一下:
# !/bin/bash alias sendAWS='scp -i <pem> -rC <fromDir>@<ip>:<toDir>'`date +%m%d%l%M`'-transfer'
我们将这个命令写入~/.bashrc,并取别名sendAWS,就可以直接调用了。
-C表示打包传输,到目的位置再解压
注意shell中的字符串拼接不需要任何运算符,两个字符串放到一起就可以了
`date +%m%d%l%M`
是使用date命令返回日期相关的内容,这样我们就可以在每次传输时在目标服务器创建一个带有当前时间的文件夹放传输的内容
shell date命令看这里:https://blog.csdn.net/runming918/article/details/7223520
-
第二个办法是下载后将文件拷贝到QQ邮箱的文件中转站,这种方式除了总容量只有3G之外没什么问题,就是怕如果流量特别大的话可能会出问题。
Ok了,大致的方法就是这样了,我给使用的时候排个序:手机下载>服务器下载+QQ邮箱文件中转站>虚拟机下载。鉴于AWS流量宝贵,还是不要用AWS了