zoukankan      html  css  js  c++  java
  • 【Linux探索之旅】第四部分第三课:文件传输,潇洒同步



    内容简单介绍

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

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



    文件传输。潇洒同步


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


    经过上一课的学习。我们已经知道怎样远程连接到其它电脑了。

    从今以后。你就能够在自己的电脑上执行命令,来控制远方的还有一台电脑了,非常酷吧。


    我们继续探究Linux的奇幻网络世界。

    这个网络世界比較特别,或许你已经有所体会:前辈们做了大量努力,靠加密方法来保证网络间传输的数据的安全。以防我们私人的信息泄露。比如password。


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


    • 怎样下载文件

    • 怎样连接到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会不断的尝试,直到整个文件完成下载。假设是server打断下载过程,它会再次联到server上从停止的地方继续下载。这对从那些限定了链接时间的server上下载大文件非常实用。简直是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表示目标文件,就是拷贝产生的文件。


    这两个文件都能够例如以下方式来表示:


    user@ip:file_name


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


    从自己电脑复制文件到还有一台电脑


    这非常easy,比如:


    scp image.png oscar@89.231.45.67:/home/oscar/images/


    表示把我的电脑中当前文件夹下的image.png文件复制到远程电脑(ip地址是89.231.45.67)的用户oscar的/home/oscar/images文件夹下,文件名称不变(还是image.png,你也能够改名字)。

    例如以下图所看到的:




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


    还有一台电脑复制文件到自己电脑


    类似的使用方法,比如:


    scp oscar@89.231.45.67:/home/oscar/images/image.png file_changed_name.png


    表示从远程电脑(ip地址是89.231.45.67)的用户oscar的/home/oscar/images文件夹下把image.png复制到我的电脑中当前文件夹下,并改名为file_changed_name.png(不改名也能够)。

    例如以下图所看到的:



    改动port


    上述命令中,我们并没有指定用哪个port,仅仅指定了ip地址。默认的port号是22,和SSH一样。我们也能够改动port号。用-P參数。比如:


    scp -P 7821 oscar@89.231.45.67:/home/oscar/images/image.png .


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


    注意:上一课中。SSH改动port号使用-p參数,p是小写。而scp改动port号使用-P參数,P是大写。



    ftp&sftp:传输文件


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


    FTP协议已经有点岁数了,1985年诞生。比小编来老呢。如今仍然是传输文件的最经常使用协议。

    正所谓“廉颇老矣,尚能饭否”,人家是“FTP当道,宝刀未老”。


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


    1. 从公共的FTPserver下载文件。一般来说,当你点击浏览器上的下载链接时,浏览器就以自己主动和透明的方式来完毕这个操作。

      这样的情况下。连接是匿名的。

    2. 从私有的FTPserver上传或下载文件。当我们从server出租商处租用一台server作为个人站点之用时,出租商一般会给我们一个FTP的登录名和password,我们能够连接,以上传及下载文件。

      这样的情况下,连接是须要身份验证的。


    由于并非每一个读者都有自己私人的FTPserver,所以以下演示的时候。我们会连接到公共的FTPserver。当然,假设你想要连接到私人FTPserver,那方法是一样的。


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


    连接到FTPserver


    我们试着连接到Debian的FTPserver。地址例如以下:ftp://ftp.debian.org


    方法非常easy:


    ftp ftp.debian.org


    Debian的FTPserver应该会有所回应,并向你请求输入username和password。对于公共的FTPserver,username一般都填写 anonymous (表示“匿名”)。


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


    登录成功后。会看到类似下面信息:


    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp>


    如今你有了命令提示符了,就是那个 ftp>


    你就能够输入FTP命令了。


    在FTPserver中操作


    好消息:你在FTPserver上能够使用的命令基本和我们到眼下为止学习的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文件如今位于你的当前文件夹了。


    假设你连接到FTPserver,但又想要在自己的电脑上执行命令。怎么办呢?


    仅仅要在命令前加一个感叹号就能够了,比如:


    !pwd


    就会在自己电脑上运行pwd命令,而不是在FTPserver上运行。


    其它的ftp命令


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


    用man ftp来看看其它可用的命令吧。你会发现,并非全部的命令都与你到眼下学过的Linux命令一样的。

    比如。删除文件不是用rm命令,而是delete命令。


    要从FTPserver断开连接。你能够用Ctrl+D组合键。也能够用bye,exit或quit命令,效果是一样的。



    sftp:安全加密的ftp


    ftp命令尽管方便,可是有一个致命缺点:不安全。数据不是加密传输的。不论什么人,仅仅要连接到同一个网络。能够想办法截取到你传输的数据,或者你的password。


    因此,我们须要请出sftp。sftp是Secure FTP的缩写。

    表示“安全的FTP”。


    sftp也是基于SSH的。所以登录须要username和password。使用方法例如以下:


    sftp user@ip


    比如:


    sftp oscar@coderunity.com


    一旦你输入username和password,连接上之后。其它的操作和ftp是一样的。仅仅只是通信被加密了,更安全。


    用man sftp来看看其它可用的命令和參数吧。


    上述命令中。我们并没有指定用哪个port。仅仅指定了ip地址。默认的port号是22,和SSH一样。我们也能够改动port号。用-oPort參数。比如:


    sftp -oPort 3592 oscar@89.231.45.67



    rsync:同步备份


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


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


    sudo apt-get install rsync


    rsync命令使我们能够同步两个文件夹。无论这两个文件夹位于同一台电脑还是不同的电脑(用网络连接)。


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


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


    备份有什么优点呢?


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


    小编曾经就有备份的良好习惯。并且我备份不止会在一个地方。


    所以备份非常重要。假如你把你电脑上的文件备份到远程server上,那么例如以下图所看到的:




    用rsync来进行备份。是很方便的。

    假如。你把自己的用户家文件夹都备份到server上了,或许有十几个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/ oscar@89.231.45.67:backups/


    是不是非常easy呢。


    至于很多其它參数,能够用man rsync学习。


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


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


    这样你以后不论在哪个文件夹下输入backup。rsync就帮你自己主动同步了,很帅气。这酸爽,不言而喻~


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




    总结


    1. wget命令能够下载文件。

    2. 为了将文件从一台电脑复制到还有一台电脑。我们能够使用scp命令。它使用上一课提到的SSH,因此传输是加密的,是安全的。

    3. 我们能够用ftp命令来连接到一个FTPserver,然后就能够上传及下载文件了。

    4. sftp和ftp命令类似,可是它用了SSH。所以传输的信息是加密的。

    5. rsync命令能够同步同一台电脑或两台不同电脑上的两个文件(夹)的内容,用rsync命令来备份文件特别方便。




    第四部分第四课预告


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

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

  • 相关阅读:
    The Chinese Postman Problem HIT
    Chinese Postman Problem Aizu
    矩阵游戏 HYSBZ
    最大获利 HYSBZ
    asp.net+MVC--1
    -----IT男生涯————初始篇
    Permutation
    RMQ with Shifts
    Fast Matrix Operations
    "Ray, Pass me the dishes!"
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7015577.html
Copyright © 2011-2022 走看看