Part1.7——Linux系统中的文件传输

目录

一、实验环境的搭建

二、scp命令的使用方法

1、把远程主机的文件复制到本地(下载)

 2、把本地文件复制到远程主机(上传)

 二、rsync命令

1、rsync与scp命令的对比

 2、rsync用法

 三、文件的归档与压缩

1、文件归档命令:tar

2、文件的压缩

(1)zip

 (2)gzip

(3)bz2

(4)xz

3、tar+压缩

(1)gzip

(2)bzip2

(3)xz


一、实验环境的搭建

需要两台主机并且保证这两台主机之间是可以通信的,所以这里我们创建两个虚拟机

创建新虚拟机命令为:

westos-vnctl create nodeb

查看虚拟机状态命令:

virt-manager

设定虚拟机默认设置:

systemctl set-default multi-user.target

设定虚拟机主机名:

hostnamectl set-hostname westosb.westos.org

设定虚拟机IP地址:

nm-connection-editor

在弹出的图形界面做如下设置(应该先设置名称,再设置<Ethernet>网卡,再设置<IPv4>):

IP地址设定和主机的前三位都一致,只改变最后一位。

远程连接虚拟机:最后的IP地址是目标虚拟机的IP地址。

ssh -l root 172.25.254.100

我这里设置的两个虚拟机的IP 分别为westosa--<172.25.254.100>和westosc--<172.25.254.200>。

创建并设置好两个虚拟机后实验环境就搭建好了。

二、scp命令的使用方法

需要在一台主机中远程操作另一台主机的文件,就需要用到远程命令。

1、把远程主机的文件复制到本地(下载)

 #复制 指定远程用户下的指定路径文件 本机指定路径

scp   [email protected]:/mnt/*    /mnt

先在主机westosc中指定位置创建文件。

 再在主机westosa中通过远程复制命令,可以看到文件已经从远程主机westosc中复制过来了。

#复制 指定远程用户下的指定路径目录 本机指定路径

scp  -r       [email protected]:/mnt/testdir    /mnt

 复制远程主机的目录时,需要加上参数<-r>表示递归,不加的话会导致“找不到指定目录”

 2、把本地文件复制到远程主机(上传)

#复制 指定远程用户下的指定路径目录 本机指定路径

scp   /mnt   [email protected]:/mnt/

scp   -r     /mnt   [email protected]:/mnt/            #-r 表示复制目录

scp   -q     /mnt   [email protected]:/mnt/           #-q表示传输文件时不显示进度

与上一步中“下载”类似,只是改变了原目录和目标目录的位置,这里先在本地主机westosa中创建文件和文件夹,分别复制到远程主机westosc的指定目录中,参数<-r>可以复制文件夹,参数<-q>可以在执行操作时不显示进度。

 二、rsync命令

1、rsync与scp命令的对比

rsync:重复检测,即不再复制已经存在的文件及目录,但缺点也很明显,可能不会完全复制。

这里先使用<scp>命令从远程主机到本地主机复制文件到本地主机,然后使用<scp>执行重复操作,可以看到是重新复制了一次,比较费时间;使用<rsync>命令后可以看到不会再复制已存在的文件,命令执行几乎是瞬间完成的。

要比较两条命令的时间,可以在命令的最开始加上<time>命令。

 2、rsync用法

通用格式:

rsync                                文件                                                远程用户@远程主机ip:远程主机目录
rsync        远程用户@远程主机ip:远程主机目录                                               文件路径

常用参数:

rsync              -r        ##复制目录
                        -l        ##复制链接
                        -p        ##复制权限
                        -t        ##复制时间戳
                        -o        ##复制拥有者
                        -g        ##复制拥有组
                        -D        ##复制设备文件

为了练习这个命令,接下来先搭建好实验环境:

先在westosb远程主机中执行已下命令,<touch>创建文件,<chmod>更改文件权限,<chown>更改所有人所有组,<ln>创建链接,<ls>查看文件属性。

 这里需要注意的一点是,复制的源目录带</>和不带</>效果不一样,不带</>会把目录本身都复制过来,带上</>会把目录中内容但不包括木不本身。

time rsync -r [email protected]:/mnt /mnt

time rsync -r [email protected]:/mnt/ /mnt

同步链接就加上参数<-l>,同步权限就加上参数<-p>。

 同步用户就加上<-o>,同步用户组就加上<-g>,同步原文件时间就加上<-t>。

 在远程服务中,设备文件无法同步,所以要强制同步设备文件就需要使用参数<-rD>,可以看到,再加上了参数<-D>后,远程设备中的设备文件已经复制过来了。

 三、文件的归档与压缩

为了解决复制大量文件时的耗时问题,压缩成一个文件后传输速度会更快。

1、文件归档命令:tar

注意,这里边的参数<f>几乎需要与大部分参数组合使用。

tar           c        ##创建
                f        ##指定文件名称
                x        ##解档
                v        ##现实过程
                t        ##查看
                r        ##向归档文件中添加文件
                --get        ##解档指定文件

                --delete        ##删除指定文件
                -C        ##指定解档路径
                -P        ##don't remove "/"

实验步骤:先在远程主机westosb中使用<cf>参数把要测试的文件夹打包,打包完成后可用<tf>参数查看打包后的文件。

tar cd etc.tar /etc

 其中,<etc.tar>为打包后的文件名称,</etc>为要打包的文件夹。

 再次使用远程复制命令,将压缩包复制到westosa中。可以看到极大缩短了传输时间。

 复制过来后,再在本地主机中使用参数<xf>把压缩包解压,就得到需要的目录。

如果要显示打包或反打包的过程,可以使用参数<v>来查看过程。

2、文件的压缩

注意:文件的压缩都是建立在归档的基础上的,先归档成<tar>再压缩。

(1)zip

zip  -r  mnt.tar.zip   mnt.tar          #zip格式压缩                                                                         unzip   mnt.tar.zip                   #zip格式解压缩

这里先用<tar>命令打包好一个文件<etc.tar>,可以看到文件大小27M,再使用zip命令把<etc.tar>文件压缩成<etc.tar.zip>,可以看到文件大小已经变为6.7M。使用<unzip>命令可以把压缩的文件再恢复出去,大小也恢复成原文件的大小。

 (2)gzip

gzip   mnt.tar                          #gzip格式压缩
gunzip   mnt.tar.gz                 #gzip格式解压缩

这种格式执行起来相对简单一些,但处理的也是打包后的<etc.tar>文件,压缩后的文件<etc.tar.gz>大小由原来的27M减小到6.7M。

(3)bz2

bzip2   mnt.tar                       #bzip2格式压缩
bunzip2 etc.tar.bz2                #bzip2格式解压缩

这种格式执行起来也很简单,处理的也是打包后的<etc.tar>文件,压缩后的文件<etc.tar.bz2>大小由原来的27M减小到5.1M。(也相比之前更费时间一些)

(4)xz

xz  mnt.tar                              #xz格式压缩
unxz    mnt.tar.xz                    #xz格式解压缩

<xz>格式的文件压缩也很简单,也是需要先打包成“tar”文件。压缩后的文件大小变为4.4,比之前更小了,花费时间也更长了。

3、tar+压缩

鉴于上一步骤中先打包后压缩,操作比较麻烦,所以可以执行以下命令使文件的打包和压缩一步完成。

(1)gzip

tar zcf etc.tar.gz /etc
tar zxf etc.tar.gz

(2)bzip2

tar jcf etc.tar.bz2 /etc
tar jxf etc.tar.bz2

(3)xz

tar Jcf etc.tar.xz /etc
tar Jxf etc.tar.xz

这里对这些文件分别压缩成不同格式,压缩成<gzip>格式需要添加参数<z>,压缩成<bzip2>格式需要添加参数<j>,压缩成<xz>格式需要添加参数<J>。同样的,解压缩时也是需要加上这些参数。

Guess you like

Origin blog.csdn.net/Zhaohui_Zhang/article/details/120857390