【Linux探索之旅】第四部分第三课:文件传输,潇洒同步



内容简介

1、第四部分第三课:文件传输,潇洒同步

2、第四部分第四课:分析网络,隔离防火


文件传输,潇洒同步

这一课的内容相对简单,所以我们慢慢享用。

经过上一课的学习,我们已经知道如何远程连接到其他电脑了。从今以后,你就可以在自己的电脑上运行命令,来控制远方的另一台电脑了,很酷吧。

我们继续探究Linux的奇幻网络世界。这个网络世界比较特别,也许你已经有所体会:前辈们做了大量努力,靠加密方法来保证网络间传输的数据的安全,以防我们私人的信息泄露,例如密码。

这一课我们来学习文件传输,主要分为以下几方面:

  • 如何下载文件
  • 如何连接到FTP,读取,下载文件
  • 如何安全地拷贝文件

其中涉及的关于网络方面的知识,可以查阅小编已完结的系列教程《Web探索之旅》:http://blog.csdn.net/column/details/webexplore.html



wget:下载文件

我们就从一个简单的命令开始吧,就是:wget

它可以使我们直接从终端控制台下载文件,只需要给出文件的HTTP或FTP地址。

命令格式:

wget  [参数]  [URL地址]

例如:

wget http://cdimage.debian.org/debian-cd/8.2.0/i386/iso-cd/debian-8.2.0-i386-netinst.iso

就会开始从http://cdimage.debian.org/debian-cd/8.2.0/i386/iso-cd/上下载debian-8.2.0-i386-netinst.iso这个文件。

如果要停止下载,只需要按Ctrl +C

可以看到下方会出现一个进度条,显示下载进度:

38%表示已下载百分之38。

117k/s是下载速度,表示117kb每秒。

eta是预计剩余时间,此处是70秒。

那么,怎么事先获得供wget下载的地址呢?

你可以用浏览器(比如firefox),找到要下载的文件,然后在文件上点击鼠标右键,左键点击"复制链接地址",如下图:

然后黏贴到wget命令的地址参数中就可以了。

wget

非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性。如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务
器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。简直是bug般的存在。

继续中断的下载

要继续一个中断的下载,只要在相同的下载命令中加入 -c 参数,例如:

wget -c http://cdimage.debian.org/debian-cd/8.2.0/i386/iso-cd/debian-8.2.0-i386-netinst.iso

c是英语continue的缩写,表示“继续”。

wget有非常多的参数选项,我们不能逐一列举。可以参看wget的使用手册:man wget

wget的一个不错的地方是它显示下载的进度。稍后我们会学习的ftp命令则不会显示下载进度。



scp:网间拷贝

我们以前的课程中学习过cp命令,它用于在自己的电脑上拷贝文件。

scp是Secure CoPy的缩写,表示“安全拷贝”。这个命令可以使我们通过网络,把文件从一台电脑拷贝到另一台。当然,拷贝的信息是安全的,正如它的名字所示。

也有一个命令rcp,是Remote CoPy的缩写。也可以做同样的事,但是信息没有得到安全保护,不推荐。

scp使用起来有点类似上一课学过的SSH(Secure SHell)。这并不是巧合,因为scp是基于SSH的原理来运作的。SSH首先会在两台通过网络连接的电脑之间创建一条安全通信的管道(如上一课所示),scp就利用这条管道安全地拷贝文件。

scp的基本命令格式如下:

scp original_file destination_file

其中original_file表示源文件,就是被拷贝的文件。destination_file表示目标文件,就是拷贝产生的文件。

这两个文件都可以如下方式来表示:

[email protected]:file_name

其中user是登录名,ip是域名(例如google.fr)或ip地址(例如89.231.45.67),file_name是文件路径。不要忘了中间的@号和冒号(:)。

从自己电脑拷贝文件到另一台电脑

这很简单,例如:

scp image.png [email protected]:/home/oscar/images/

表示把我的电脑中当前文件夹下的image.png文件拷贝到远程电脑(ip地址是89.231.45.67)的用户oscar的/home/oscar/images目录下,文件名不变(还是image.png,你也可以改名字)。如下图所示:

当然了,scp会请求你输入远程电脑(ip地址是89.231.45.67)的用户oscar的密码。输入密码,回车,就开始拷贝了。

另一台电脑拷贝文件到自己电脑

类似的用法,例如:

scp [email protected]:/home/oscar/images/image.png file_changed_name.png

表示从远程电脑(ip地址是89.231.45.67)的用户oscar的/home/oscar/images目录下把image.png拷贝到我的电脑中当前文件夹下,并改名为file_changed_name.png(不改名也可以)。如下图所示:

修改端口

上述命令中,我们并没有指定用哪个端口,只指定了ip地址。默认的端口号是22,和SSH一样。我们也可以修改端口号,用-P参数。例如:

scp -P 7821 [email protected]:/home/oscar/images/image.png .

表示从远程电脑(ip地址是89.231.45.67,端口7821)的用户oscar的/home/oscar/images目录下把image.png拷贝到我的电脑中当前文件夹下,名字不变。此处用点号(.)表示当前目录。

注意:上一课中,SSH修改端口号使用-p参数,p是小写。而scp修改端口号使用-P参数,P是大写。



ftp&sftp:传输文件

FTP是File Transfer Protocol的缩写,表示《文件传输协议》。顾名思义,就是用于传输文件的。

FTP协议已经有点岁数了,1985年诞生,比小编来老呢。现在仍然是传输文件的最常用协议。正所谓“廉颇老矣,尚能饭否”,人家是“FTP当道,宝刀未老”。

使用ftp主要分为两种情况:

  1. 从公共的FTP服务器下载文件。一般来说,当你点击浏览器上的下载链接时,浏览器就以自动和透明的方式来完成这个操作。这种情况下,连接是匿名的。
  2. 从私有的FTP服务器上传或下载文件。当我们从服务器出租商处租用一台服务器作为个人网站之用时,出租商通常会给我们一个FTP的登录名和密码,我们可以连接,以上传及下载文件。这种情况下,连接是需要身份验证的。

因为并不是每个读者都有自己私人的FTP服务器,所以下面演示的时候,我们会连接到公共的FTP服务器。当然,如果你想要连接到私人FTP服务器,那方法是一样的。

我们这里使用纯命令行的形式来操作,当然了,也存在不少优秀的FTP软件,可以提供图形操作界面,例如著名的FileZilla。

连接到FTP服务器

我们试着连接到Debian的FTP服务器,地址如下:ftp://ftp.debian.org

方法很简单:

ftp ftp.debian.org

Debian的FTP服务器应该会有所回应,并向你请求输入用户名和密码。对于公共的FTP服务器,用户名一般都填写 anonymous (表示“匿名”)。

密码你随便输入什么都会被接受。

登录成功后,会看到类似以下信息:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

现在你有了命令提示符了,就是那个 ftp>

你就可以输入FTP命令了。

在FTP服务器中操作

好消息:你在FTP服务器上可以使用的命令基本和我们到目前为止学习的Linux命令是一样的。

例如:

ls:列出当前目录的文件

pwd:显示当前目录的路径

cd:转换目录

你可以试试其他命令。

文件传输

如果你想要上传及下载文件,有两个命令要知道:

  • put:用于上传文件
  • get:用于下载文件

如下图所示:

我们来下载一个文件试试(README):

ftp> get README

local: README remote: README

200 PORT command successful. Consider using PASV.

150 Opening BINARY mode data connection for README (940 bytes).

226 File send OK.

940 bytes received in 0.00 secs (918.9 kB/s)

下载完毕,README文件现在位于你的当前目录了。

如果你连接到FTP服务器,但又想要在自己的电脑上运行命令,怎么办呢?

只要在命令前加一个感叹号就可以了,例如:

!pwd

就会在自己电脑上执行pwd命令,而不是在FTP服务器上执行。

其他的ftp命令

还有好些其他的FTP命令,我们就不逐一列举了。

用man ftp来看看其他可用的命令吧。你会发现,并不是所有的命令都与你到目前学过的Linux命令一样的。例如,删除文件不是用rm命令,而是delete命令。

要从FTP服务器断开连接,你可以用Ctrl+D组合键。也可以用bye,exit或quit命令,效果是一样的。

sftp:安全加密的ftp

ftp命令虽然方便,但是有一个致命缺点:不安全,数据不是加密传输的。任何人,只要连接到同一个网络,可以想办法截取到你传输的数据,或者你的密码。

因此,我们需要请出sftp。sftp是Secure FTP的缩写。表示“安全的FTP”。

sftp也是基于SSH的,所以登录需要用户名和密码,用法如下:

sftp [email protected]

例如:

sftp [email protected]

一旦你输入用户名和密码,连接上之后,其他的操作和ftp是一样的。只不过通信被加密了,更安全。

用man sftp来看看其他可用的命令和参数吧。

上述命令中,我们并没有指定用哪个端口,只指定了ip地址。默认的端口号是22,和SSH一样。我们也可以修改端口号,用-oPort参数。例如:

sftp -oPort 3592 [email protected]


rsync:同步备份

rsync命令易于使用,功能很强大。

rsync是一个小程序,需要安装,默认系统一般没有这个命令。

sudo apt-get install rsync

rsync命令使我们可以同步两个目录,不管这两个目录位于同一台电脑还是不同的电脑(用网络连接)。

rsync应该是最常用于“增量备份”的命令了吧。什么是“增量备份”呢?

增量备份(incremental backup)是备份的一个类型,指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。

备份有什么好处呢?

想象一下,假如你不备份文件。那么一旦你的个人电脑遭遇不测,例如坏了,被偷,等等。那么你的数据就找不回来了。如果有写了几十页的论文在里面,那哭倒长城都有可能啊。好些朋友就有过这样惨痛的经历。

小编以前就有备份的良好习惯,而且我备份不止会在一个地方。

所以备份很重要。假如你把你电脑上的文件备份到远程服务器上,那么如下图所示:

用rsync来进行备份,是非常方便的。假如,你把自己的用户家目录都备份到服务器上了,也许有十几个G的内容啊。

第一次备份时,需要传输这整整十几个G的内容,但是以后呢,只需要传输新增或修改的内容就够了,不需要再传一遍。这就是rsync的强大之处,所谓“增量备份”的好处。

如上图所示,我用rsync只传输了新的那个文件。其他的并没有再传输。

rsync就好像更智能的scp。

备份到同一台电脑的其他目录

rsync -arv Images/ backups/

以上命令,将Images目录下的所有文件备份到backups目录下。

-arv参数分别表示:

  • -a:保留文件的所有信息,包括权限,修改日期,等等。
  • -r:递归调用。表示子目录的所有文件也都包括。
  • -v:冗余模式。输出详细操作信息。

删除文件

默认地,rsync在同步时并不会删除目标目录的文件。例如,你的源目录(被同步目录)中删除了一个文件,但是用rsync同步时,它并不会删除同步目录中的相同文件。

如果要使rsync也同步删除操作。那么可以这么做:

rsync -arv --delete Images/ backups/

加上 --delete 参数就可以了。

备份到另一台电脑的目录


rsync -arv --delete Images/ [email protected]:backups/

是不是很简单呢。

至于更多参数,可以用man rsync学习。

当然,rsync的强大之处绝不止于此。

你可以自己配置rsync,使得它从指定目录(可以是多个目录)备份到指定的ip地址的目录下,而且可以指定哪些类型文件是要备份的,哪些类型不要备份,然
后把这一长串命令统一用Shell来写成一个文件(例如取名叫backup),使之可执行(用chmod命令),再把这个文件的路径添加到PATH中。

这样你以后不论在哪个目录下输入backup,rsync就帮你自动同步了,非常帅气。这酸爽,不言而喻~

至于怎么做,就算是留给大家的课后兴趣作业咯。可以自己百度,例如“Ubuntu下rsync配置”。



总结

  1. wget命令可以下载文件。
  2. 为了将文件从一台电脑拷贝到另一台电脑,我们可以使用scp命令。它使用上一课提到的SSH,因此传输是加密的,是安全的。
  3. 我们可以用ftp命令来连接到一个FTP服务器,然后就可以上传及下载文件了。
  4. sftp和ftp命令类似,但是它用了SSH,所以传输的信息是加密的。
  5. rsync命令可以同步同一台电脑或两台不同电脑上的两个文件(夹)的内容,用rsync命令来备份文件特别方便。

第四部分第四课预告

今天的课就到这里,一起加油吧!

下一课我们学习:分析网络,隔离防火

时间: 2025-01-23 18:52:23

【Linux探索之旅】第四部分第三课:文件传输,潇洒同步的相关文章

【Linux探索之旅】第二部分第三课:文件和目录,组织不会亏待你

内容简介 1.第二部分第三课:文件和目录,组织不会亏待你 2.第二部分第四课预告:文件操纵,鼓掌之中 文件和目录,组织不会亏待你 上一次课我们讲了命令行,这将成为伴随我们接下来整个Linux课程的一个重要部分. 大宝啊明天见,命令行啊天天见~ 今天的标题里的那句"组织不会亏待你",不是说Linux社群是个非*法组织,不*良帮*派.不是的,我们还是很廉洁的啊~ 是因为这一课我们要来谈一谈Linux系统的文件和目录是如何组织的. 使用过Windows系统的用户,应该对Windows系统里的

【Linux探索之旅】第一部分第三课:測试并安装Ubuntu

内容简单介绍 1.第一部分第三课:測试并安装Ubuntu 2.第一部分第四课预告:磁盘分区 測试并安装Ubuntu 大家好,经过前两个比較偏理论(是否想起了带着瓜皮帽,手拿折扇的老学究,或者腐儒)的课程,这第三课我们就正式进入实战啦. 可能不少朋友没使用过Linux这个操作系统,那么这一课就是见识一下它的庐山真面目的时候了. 我们这个系列课程所使用的Linux发行版是Ubuntu,由于其使用广泛.技术支持全面.文档完整,另一个非常关键的原因就是Ubuntu的配色偏"土豪金"啊,有木有.

【Linux探索之旅】第一部分第三课:测试并安装Ubuntu

内容简介 1.第一部分第三课:测试并安装Ubuntu 2.第一部分第四课预告:磁盘分区 测试并安装Ubuntu 大家好,经过前两个比较偏理论(是否想起了带着瓜皮帽,手拿折扇的老学究,或者腐儒)的课程,这第三课我们就正式进入实战啦. 可能不少朋友没使用过Linux这个操作系统,那么这一课就是见识一下它的庐山真面目的时候了. 我们这个系列课程所使用的Linux发行版是Ubuntu,因为其使用广泛,技术支持全面,文档完整,还有一个很关键的原因就是Ubuntu的配色偏"土豪金"啊,有木有,就是

【Linux探索之旅】第二部分第六课:Nano,初学者的文本编辑器

内容简介 1.第二部分第六课:Nano,初学者的文本编辑器 2.第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 这一课比较简单,没有什么太难的概念.不过这一课会讲如何配置终端噢. 大家可以泡个泡面,烤只烤鸡:剥个卤蛋,慢慢来看. 之前的课程中,我们已经学会了在终端中用多种不同的方式来查看文件的内容,但是我们还不知道如何在终端中修改文件的内容. 为什么我们把文本编辑器推迟到现在来说呢?因为这是终端可以提供的强大功能之一. 在Linux终端的文本编辑器当中,比较著名的有:Nan

【Linux探索之旅】第二部分第七课:软件安装,如虎添翼

内容简介 1.第二部分第七课:软件安装,如虎添翼 2.第二部分第八课预告:RTFM 阅读那该死的手册 软件安装,如虎添翼 这一课也会相对比较轻松,所以好好享受吧. 我们来谈谈Linux下软件的安装,会在我们的Ubuntu这个Linux发行版中演示. 一般提到软件安装,有过Windows系统使用经验的朋友肯定会深有体会,那个麻烦啊,大致流程是这样的: 在搜索引擎(比如百度或google)中搜索我们的软件名称. 看到一个不错的结果,点击进入.如果是官网一般会进入官网. 下载此软件的安装程序. 双击下

【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. "很不错,掌声给自己". 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux

【Linux探索之旅】开宗明义+第一部分第一课:什么是Linux?

内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢!   开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱们老百姓呀,用用Windows就高兴. 但事实并非如此,Linux不是那么“难于上青天”的. 不少学编程的朋友看过<鸟哥的Linux私房菜>,是台湾的鸟哥写的,非常棒. 小编也开始写一个系列教程,希望对自己对别人都有帮助.但我会非常认真的,不会乱来. 在这个教程中,小编会向您证明:Linux并不复

【C++探索之旅】第一部分第三课:第一个C++程序

 内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适合自己的一个IDE(Integrated Development Environment,就是"集成开发环境"的意思). 如果你真的要开始在Linux下编写程序,除了使用IDE之外(IDE集成了文本编辑器,编译器,调试器,运行程序等),也可以选择另一种难一些的方式:自己用某一种文本编辑

【Web探索之旅】第二部分第三课:框架和内容管理系统

内容简介 1.第二部分第三课:框架和内容管理系统 2.第二部分第四课预告:数据库 第二部分第三课:框架和内容管理系统 上一课我们介绍了服务器端的编程语言,有PHP,Java,Python,Ruby,C#等. 这一课我们来学习基于这些语言衍生出来的框架(Framework),然后我们再来看看什么是内容管理系统(CMS). 框架(Framework) 什么是Framework(框架)呢?要给出一个准确的定义很难.因为它有不少不同的定义.可以自行参看这个百度百科: http://baike.baidu

【C语言探索之旅】 第二部分第三课:数组

内容简介 1.课程大纲 2.第二部分第三课: 数组 3.第二部分第四课预告:字符串 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动态分配