文件及内容处理 - scp、wget

1. scp:用于不同主机之间复制文件

scp命令的功能说明

scp 命令用于 Linux 之间复制文件和目录。scpsecure copy 的缩写, scplinux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp命令的语法格式

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[user@]host1:]file1 [...] [[user@]host2:]file2

scp [可选参数] file_source file_target

scp命令的常用参数说明:

scp 参数很多,表1为 scp 命令的参数及说明:

表1: 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命令的实践操作

范例1: 从本地复制到远程 (命令格式)

scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file 
  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

应用实例

scp /home/space/music/1.mp3 root@www.xxx.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.xxx.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.xxx.com:/home/root/others/music
scp /home/space/music/1.mp3 www.xxx.com:/home/root/others/music/001.mp3 

复制目录 (命令格式)

scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder 
  • 第1个指定了用户名,命令执行后需要再输入密码;
  • 第2个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ root@www.xxx.com:/home/root/others/
scp -r /home/space/music/ www.xxx.com:/home/root/others/ 

上面命令将本地 music 目录复制到远程 others 目录下。

范例2: 从本地复制到远程 (命令格式)

从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

应用实例:

scp root@www.xxx.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.xxx.com:/home/root/others/ /home/space/music/

说明

1.如果远程服务器防火墙有为 scp 命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

#scp 命令使用端口号 4588
scp -P 4588 remote@www.xxx.com:/usr/local/sin.sh /home/administrator

2.使用 scp 命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则 scp 命令是无法起作用的。

2. wget:命令行下载文件

wget命令的功能说明

wget 是一个下载文件的工具,它用在命令行下。对于 Linux 用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用 ftp 工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了 Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。 wget 工具体积小但功能完善,它支持断点下载功能,同时支持 FTPHTTP 下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用 wget

wget命令的语法格式

wget [option]... [URL]...
wget [参数] [下载地址]

wget命令的常用参数说明:

wget 参数好多,表1为 wget 命令的参数及说明:

表1: wget 命令的参数及说明

参数选项 解释说明
-V,-version 显示软件版本号然后退出;
-h,-help 显示软件帮助信息;
-e,-execute=COMMAND 执行一个 “.wgetrc”命令
-o,-output-file=FILE 将软件输出信息保存到文件;
-a,-append-output=FILE 将软件输出信息追加到文件;
-d,-debug 显示输出信息;
-q,-quiet 不显示输出信息;
-i,-input-file=FILE 从文件中取得URL;
-t,-tries=NUMBER 是否下载次数(0表示无穷次)
-O -output-document=FILE 下载文件保存为别的文件名
-nc, -no-clobber 不要覆盖已经存在的文件
-N,-timestamping 只下载比本地新的文件
-T,-timeout=SECONDS 设置超时时间
-Y,-proxy=on/off 关闭代理
-nd,-no-directories 不建立目录
-x,-force-directories 强制建立目录
-http-user=USER 设置HTTP用户
-http-passwd=PASS 设置HTTP密码
-proxy-user=USER 设置代理用户
-proxy-passwd=PASS 设置代理密码
-r,-recursive 下载整个网站、目录(小心使用)
-l,-level=NUMBER 下载层次
-A,-accept=LIST 可以接受的文件类型
-R,-reject=LIST 拒绝接受的文件类型
-D,-domains=LIST 可以接受的域名
-exclude-domains=LIST 拒绝的域名
-L,-relative 下载关联链接
-follow-ftp 只下载FTP链接
-H,-span-hosts 可以下载外面的主机
-I,-include-directories=LIST 允许的目录
-X,-exclude-directories=LIST 拒绝的目录

wget命令的实践操作

范例1: 使用 wget 下载单个文件 (后面下载地址使用 URL 代替)

以下的例子是从网络下载一个文件并保存在当前目录

[root@db01 /server/tools]# ls #当前目录为空
[root@db01 /server/tools]# wget https://wordpress.org/latest.tar.gz
--2019-06-12 11:10:24--  https://wordpress.org/latest.tar.gz
正在解析主机 wordpress.org (wordpress.org)... 198.143.164.252
正在连接 wordpress.org (wordpress.org)|198.143.164.252|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:11199196 (11M) [application/octet-stream] #大小为11M
正在保存至: “latest.tar.gz”

 0% [                                                                                                          ] 89,696      31.9KB/s

 [root@db01 /server/tools]# ll #查看大小是否正确,确保完整性
总用量 10940
-rw-r--r-- 1 root root 11199196 5月  22 02:26 latest.tar.gz 

在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。 

范例2: 使用 wget -O 下载并以不同的文件名保存 

wget 默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。 

错误: 下面的例子会下载一个文件并以名称 download.php?id=1080 保存 

wget http://www.centos.bz/download?id=1 

即使下载的文件是 zip 格式,它仍然以 download.php?id=1080 命令。

正确: 为了解决这个问题,我们可以使用参数 -O 来指定一个文件名:

wget -O wordpress.zip http://www.centos.bz/download.php?id=1080

范例3: 使用 wget –limit -rate 限速下载 

当你执行 wget 的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。 


wget –limit-rate=300k https://wordpress.org/latest.tar.gz 

范例4: 使用 wget -c 断点续传 

使用 wget -c 重新启动下载中断的文件: 

wget -c https://wordpress.org/latest.tar.gz 

对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用 -c 参数。 

范例5: 使用 wget -b 后台下载

对于下载非常大的文件的时候,我们可以使用参数 -b 进行后台下载。

wget -b https://wordpress.org/latest.tar.gz
Continuing in background, pid 1840. 
Output will be written to `wget-log’. 

你可以使用以下命令来察看下载进度

tail -f wget-log

范例6: 伪装代理名称下载

有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过 -user-agent 参数伪装。 

wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接 

范例1: 使用 wget -spider 测试下载链接 

当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加 -spider 参数进行检查。
 

wget -spider URL 

如果下载链接正确,将会显示 

wget –spider URL
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled — not retrieving. 

这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误 

wget –spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 404 Not Found
Remote file does not exist — broken link!!! 

你可以在以下几种情况下使用 spider 参数: 

  • 定时下载之前进行检查
  • 间隔检测网站是否可用
  • 检查网站页面的死链接

范例8: 使用 wget –tries 增加重试次数 

如果网络有问题或下载一个大文件也有可能失败。wget 默认重试 20 次连接下载文件。如果需要,你可以使用 -tries 增加重试次数。 

wget -tries=40 URL

范例9: 使用 wget -i 下载多个文件 

首先,保存一份下载链接文件

cat > filelist.txt <<EOF
url1
url2
url3
url4
EOF

接着使用这个文件和参数 -i 下载

wget -i filelist.txt 

范例10: 使用 wget -mirror 镜像网站

下面的例子是下载整个网站到本地。 

wget -mirror -p -convert-links -P ./LOCAL URL

说明:

  • -miror:开户镜像下载
  • -p:下载所有为了html页面显示正常的文件
  • -convert-links下载后,转换成本地的链接
  • -P ./LOCAL:保存所有文件和目录到本地指定目录

范例11: 使用 wget -reject 过滤指定格式下载 

你想下载一个网站,但你不希望下载图片,你可以使用以下命令。

wget -reject=gif URL

范例12: 使用 wget -o 把下载信息存入日志文件 ( 也可以定向到空 &>/dev/null )

你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:

wget -o download.log URL 

范例13: 使用 wget -Q 限制总下载文件大小 

当你想要下载的文件超过 5M 而退出下载,你可以使用以下命令: 

wget -Q5m -i filelist.txt 

注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。

范例14: 使用 wget -r -A 下载指定格式文件 

可以在以下情况使用该功能 

  • 下载一个网站的所有图片
  • 下载一个网站的所有视频
  • 下载一个网站的所有PDF文件
wget -r -A.pdf URL

范例15: 使用 wget FTP 下载 

你可以使用 wget 来完成 ftp 链接的下载。

wget ftp-url 

使用 wget 用户名和密码认证的 ftp 下载 

wget -ftp-user=USERNAME -ftp-password=PASSWORD url

wget 是在 Linux 下开发的开放源代码的软件,作者是 Hrvoje Niksic ,后来被移植到包括 Windows 在内的各个平台上。它有以下功能和特点: 

  • (1)支持断点下传功能;这一点,也是网络蚂蚁和 FlashGet 当年最大的卖点,现在,Wget 也可以使用此功能,那些网络不是太好的用户可以放心了;
  • (2)同时支持 FTPHTTP 下载方式;尽管现在大部分软件可以使用 HTTP 方式下载,但是,有些时候,仍然需要使用 FTP 方式下载软件;
  • (3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;
  • (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;
  • (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的

wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下 wget 的用法。 

1、下载整个http或者ftp站点。

wget http://place.your.url/here 

这个命令可以将 http://place.your.url/here 首页下载下来。使用 -x 会强制建立服务器上一模一样的目录,如果使用 -nd 参数,那么服务器上下载的所有内容都会加到本地当前目录。

wget -r http://place.your.url/here 

这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用 -l number 参数来指定下载的层次。例如只下载两层,那么使用 -l 2

要是您想制作镜像站点,那么可以使用 -m 参数,例如:wget -m http://place.your.url/here
这时 wget 会自动判断合适的参数来制作镜像站点。此时,wget 会登录到服务器上,读入 robots.txt 并按 robots.txt 的规定来执行。

2、断点续传。

当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget 的断点续传是自动的,只需要使用 -c 参数,例如:

wget -c http://the.url.of/incomplete/file 

使用断点续传要求服务器支持断点续传。-t 参数表示重试次数,例如需要重试 100 次,那么就写 -t 100 ,如果设成 t 0 ,那么表示无穷次重试,直到连接成功。 -T 参数表示超时等待时间,例如 -T 120 ,表示等待 120 秒连接不上就算超时。

3、批量下载。

如果有多个文件需要下载,那么可以生成一个文件,把每个文件的 URL 写一行,例如生成文件 download.txt ,然后用命令:wget -i download.txt
这样就会把 download.txt 里面列出的每个 URL 都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

4、选择性的下载。

可以指定让 wget 只下载一类文件,或者不下载什么文件。例如:

wget -m –reject=gif http://target.web.site/subdirectory 

表示下载 http://target.web.site/subdirectory,但是忽略 gif 文件。-accept=LIST 可以接受的文件类型,-reject=LIST 拒绝接受的文件类型。

5、密码和认证。

wget 只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:

-http-user=USER设置HTTP用户
-http-passwd=PASS设置HTTP密码 

对于需要证书做认证的网站,就只能利用其他下载工具了,例如 curl

6、利用代理服务器进行下载。

如果用户的网络需要经过代理服务器,那么可以让 wget 通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个 .wgetrc 文件。文件中可以设置代理服务器:

http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080 

分别表示 http 的代理服务器和 ftp 的代理服务器。如果代理服务器需要密码则使用这两个参数:

-proxy-user=USER设置代理用户
-proxy-passwd=PASS设置代理密码 

使用参数 -proxy=on/off 使用或者关闭代理。
wget 还有很多有用的功能,需要用户去挖掘。

今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津

Shell命令-网络操作之基础之scp、wget的更多相关文章

  1. Shell命令-网络操作之基础之telnet、ssh

    文件及内容处理 - telnet.ssh 1. telnet:使用TELNET协议远程登录 telnet命令的功能说明 telnet 命令用于远端登入.执行 telnet 指令开启终端机阶段作业,并登 ...

  2. Shell命令-网络操作之基础之ping、route

    文件及内容处理 - ping.route 1. ping:测试主机之间网络的连通性 ping命令的功能说明 ping 命令用于检测主机.执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信 ...

  3. Shell命令行操作

    1.1 shell提示符 [me@linuxbox ~]$ 如果最后一个字符是"#",表示当前终端会话有超级用户权限.使用root用户登录或者使用能提供超级用户权限的终端能获得该权 ...

  4. 一些风骚的shell命令行操作

    1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按<CTRL-x CTRL-e>,会打开一个你指定的编辑器(比如vim,通过环 ...

  5. 『003』Shell命令

    『001』索引-Linux Shell Command shell命令 <01>[线上查询及帮助][001]-[001] [001]- 点我快速打开文章[man][help][已改版] & ...

  6. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  7. Hadoop Shell命令大全

    hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...

  8. Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)

    在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...

  9. Linux 操作基础(一) -- Shell 命令格式和元字符

    1 命令格式 cmd [-选项] [参数] 说明: • 最简单的Shell命令只有命令名,复杂的Shell命令可以有多个选项和参数 • 参数是文件也可以是目录,有些命令必须使用多个操作对象 • 并非所 ...

随机推荐

  1. Python的range、enumerate和zip函数用法

    range函数可创建一个整数列表.如果需要知道当前元素在列表中的索引,推荐用enumerate代替range.zip函数用于同时遍历多个迭代器. 一.range 函数 range函数可创建一个整数列表 ...

  2. Mac OS 自带apache 启动不了的问题

    问题:Mac OS 自带apache,启动不了,拒绝访问. 1.先看一下错误日志 /etc/apache2/httpd.conf 2.然后我去找了一下/private/var/log/apache2/ ...

  3. webpack打包 The 'mode' option has not been set, webpack will fallback to

    webpack 打包报错 The 'mode' option has not been set, webpack will fallback to 'production' for,Module no ...

  4. postman---postman导出python脚本

    前面一直写关于postman的一些文章,大家现在都应该简单了解,其实postman还有许多的功能,这个要大家一点点的挖掘出来了,安静在给大家分享一个关于postman导出python脚本 Postma ...

  5. [转]java 通过反射获取类的全局变量、方法、构造方法

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.str;   public class ZiFuChuan {       ...

  6. git集成idea

    1.Git Gui的使用 2.Ssh key 介绍及使用 3.Idea配置使用并使用git Git Gui的使用 Ssh key 介绍及使用 Ssh key介绍 我理解的就是每台电脑上会产生出一个ss ...

  7. xen原理

    目录:1. Xen的简介1.1 Xen的大体结构1.2 Xen对VM的称呼1.3 Xen对CPU和内存的虚拟化过程1.4 Xen对IO设备的虚拟化过程1.5 Linux Kernel对Xen的支持1. ...

  8. 攻防世界Web_php_unserialize

    本文借鉴 https://blog.csdn.net/qq_40884727/article/details/101162105 打开页面得到源码 <?php class Demo { priv ...

  9. 201871010113-刘兴瑞《面向对象程序设计(java)》第八周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>htt ...

  10. 漫长的 windows caffe编译过程 (OnlyCpu)

    在windows下 编译caffe代码. 官方推荐是vs2013 而我手头只有VS2017 .准备开始下载代码开始编译. 1 代码下载 windows版本的代码有两份,一份是官方的编译的windows ...