服务器下载文件,可以使用简单的wget命令:
-a<日志文件>:在指定的日志文件中记录资料的执行过程; -A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔; -b:进行后台的方式运行wget; -B<连接地址>:设置参考的连接地址的基地地址; -c:继续执行上次终端的任务; -C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; -d:调试模式运行指令; -D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔; -e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令; -h:显示指令帮助信息; -i<文件>:从指定文件获取要下载的URL地址; -l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔; -L:仅顺着关联的连接; -r:递归下载方式; -nc:文件存在时,下载文件不覆盖原有文件; -nv:下载时只显示更新和出错信息,不显示指令的详细执行过程; -q:不显示指令执行过程; -nh:不查询主机名称; -v:显示详细执行过程; -V:显示版本信息; --passive-ftp:使用被动模式PASV连接FTP服务器; --follow-ftp:从HTML文件中下载FTP连接文件。
但是针对某些网站中防止盗链的网站,不能直接获取下载链接,我采用的方法是使用python,获取网页源码的方法如下:
#coding=utf-8
import urllib.request
def gethtml(url):
page=urllib.request.urlopen(url)
html=page.read().decode("utf-8")
return html
url="https://www.baidu.com"
html = gethtml(url)
print(html)
下载文件的方法如下:
小文件下载:
import requests
image_url = "https://www.python.org/image.zip"
r = requests.get(image_url) # create HTTP response object
with open("python_logo.png",'wb') as f:
f.write(r.content)
大文件下载:
import requests
file_url = "https://www.python.org/image.zip"
r = requests.get(file_url, stream=True)
with open("python.pdf", "wb") as pdf:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
pdf.write(chunk)
传输文件可以使用scp命令
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
虽然上面的方法足以解决大多数的问题,但是又由于国外服务器不稳定,scp命令容易挂掉,我采用了python HTTP服务器模式,在远端服务器上开启http服务,方便了文件的传输。
命令如下:
python -m SimpleHTTPServer
参考文档:
1. https://blog.csdn.net/sinat_36246371/article/details/62426444