目录
一、实验环境的搭建
需要两台主机并且保证这两台主机之间是可以通信的,所以这里我们创建两个虚拟机
创建新虚拟机命令为:
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 root@172.25.254.200:/mnt/* /mnt
先在主机westosc中指定位置创建文件。
再在主机westosa中通过远程复制命令,可以看到文件已经从远程主机westosc中复制过来了。
#复制 指定远程用户下的指定路径目录 到 本机指定路径
scp -r root@172.25.254.200:/mnt/testdir /mnt
复制远程主机的目录时,需要加上参数<-r>表示递归,不加的话会导致“找不到指定目录”
2、把本地文件复制到远程主机(上传)
#复制 指定远程用户下的指定路径目录 到 本机指定路径
scp /mnt root@172.25.254.200:/mnt/
scp -r /mnt root@172.25.254.200:/mnt/ #-r 表示复制目录
scp -q /mnt root@172.25.254.200:/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 root@172.25.254.150:/mnt /mnt
time rsync -r root@172.25.254.150:/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>。同样的,解压缩时也是需要加上这些参数。