一、实验环境的设置
①该实验需要两台主机,虚拟机名称为 L2 和 L3 ,在终端分别更改主机名为 node1 和 node2,在实验过程能够更好分辨。
然后再重新打开终端,主机名便都更改了相应的名称。
②用 ip a 的命令分别查看两个主机的 IP地址。(node1 的IP地址为 192.168.10.128/24,node2 的IP地址为 192.168.10.131/24 )。
IP 地址的来源:
找到编辑,打开虚拟网络编辑器。
选择NAT模式,可看到VMnet 8 打开了DHCP服务,L2 和 L3 虚拟机可自动从 192.168.10.0 这个网段中获取IP地址,DHCP设置中可看到 IP地址的范围是 192.168.10.128 -- 192.168.10.254。
用 ping 命令检测两个虚拟机之间的连通性
保险起见,在 node1 和 node2 中都编辑一个 sshd 文件,输入 :set nu 命令可显示行数,将第 40 行的 # 删掉,将是否允许超级用户登录后面的单词改为 yes ,然后 :wq 保存退出,再输入 systemctl restart sshd 命令重启 sshd 服务,配置便生效了。(d :开启了守护进程)
二、文件传输方法
1.scp
scp (Secure Copy)是一个在 Linux、Unix 以及类 Unix 系统中广泛使用的命令,用于在本地主机和远程主机之间安全地复制文件和目录。它基于 SSH(Secure Shell)协议,因此在传输过程中会对数据进行加密,确保数据的安全性。
1)把本机文件或目录复制到远程主机
命令格式:scp [-r] <本地文件或目录> <远程主机用户@远程主机IP:远程主机目录的绝对路径>
node1 为当前主机,node2 为远程主机
先在 node1 主机上建立 lxt 目录和 lee 文件,并在 lxt 目录里建立三个 test 文件。
然后在 node1 复制 lee 文件到 node2 ,同意建立连接,随后输入 node2 主机的密码,即可复制成功。
由图可知,L3 的桌面出现了 lee 文件,即复制成功。
将 node1 主机的 lxt 目录及里面的文件复制到 node2 主机桌面(第一次传输输入过密码,后面传输可直接 Enter 健跳过)。
命令说明:
scp lee root@192.168.10.131:/root/Desktop | 复制文件 |
scp -r lxt root@192.168.10.131:/root/Desktop
| -r:递归,复制目录,目录传输时,里面的文件也一块传输 |
scp -q lxt root@192.168.10.131:/root/Desktop | -q:传输文件时不显示进度 |
2)把远程文件或目录复制到当前主机的当前目录
命令格式: scp [-r] <远程主机用户@远程主机ip:远程主机目录的绝对路径> <本地文件或目录>
先将 node1 主机的桌面清空,随后将 node2 主机的文件和目录分别复制到当前主机 。
命令说明:
scp root@192.168.10.131:/root/Desktop/lee .
| 将远程文件复制到当前主机的当前目录 |
scp -r root@192.168.10.131:/root/Desktop/lxt . | 将远程目录复制到当前主机的当前目录 |
命令最后的 . 表示当前目录,相当于 /root/Deaktop |
2.rsync
rsync 是一个强大且高效的文件同步和传输工具,既可以通过 SSH 协议进行安全传输,也能使用rsync 守护进程( rsync daemon )进行传输,不仅能实现本地和远程主机间的文件传输,还具备强大的增量传输功能。rsync 的效率比 scp 的效率更高些,但是 rsync 的数据完整性和可靠性相对于 scp 而言要差一些(下面以复制目录为例) 。
实时监控 node2 中的 mnt 目录,并清除里面所有的内容,便于观察里面的变化。
在 mnt 目录里建立 leefile1 - leefile5 五个文件,并将权限改为 777(即 rwnrwnrwn),以及其所有文件的拥有者和拥有组改为 lee ,再建立一个链接
查看 mnt 目录中所有文件及链接的信息
1)把本地文件或目录同步到远程主机
命令格式:
rsync [-rlptogD] <本地文件或目录> <远程主机用户@远程主机IP:远程主机目录的绝对路径>
同步目录和目录中的内容:
将 node1 中的mnt 目录的内容同步到 node2 中。
mnt 目录及其所有文件都能同步到 node2(忽略了链接)。
只同步目录里面的内容:
首先还是先清空 node2 中的mnt 目录里面的内容。
将 node1 中的 mnt 目录的内容同步到 node2 中。
这时 node2 中只出现了目录里面的内容,没有目录本身(忽略了链接)。
同步普通文件:
-l:同步 node1 的链接到 node2。
-p:同步 node1 的权限到 node2。
-o:同步 node1 的拥有者到 node2。
-g:同步 node1 的拥有组到 node2。
-t:同步 node1 的时间戳到 node2。
因为 node2 中没有 lee 这个身份,所以拥有者和拥有组显示数字(用户的真实身份是数字)
同步特殊文件:
特殊文件例子:/dev/pts/ 字符设备
-D:同步node1 的设备文件到 node2。
rsync命令总结说明
rsync -r /mnt root@192.168.10.131: /mnt
| 只同步本机的目录和目录中的内容到远程主机 |
rsync -r /mnt/ root@192.168.10.131: /mnt | 只同步本机的目录中的内容到远程主机 |
rsync -lr /mnt/ root@192.168.10.131: /mnt | 同步本机的链接到远程主机 |
rsync -pr /mnt/ root@192.168.10.131: /mnt | 同步本机的权限到远程主机 |
rsync -or /mnt/ root@192.168.10.131: /mnt | 同步本机的拥有者到远程主机 |
rsync -gr /mnt/ root@192.168.10.131: /mnt | 同步本机的拥有组到远程主机 |
rsync -tr /mnt/ root@192.168.10.131: /mnt | 同步本机的时间戳到远程主机 |
rsync -Dr /mnt/ root@192.168.10.131: /mnt | 同步本机的设备文件到远程主机 |
2)把远程文件或目录同步到当前主机的当前目录
命令格式:
rsync [-rlptogD] <远程主机用户@远程主机IP:远程主机目录的绝对路径> <本地文件或目录>
过程与将当前主机的文件或目录同步到远程主机的过程相同,只是命令中的文件或目录放在了最后,下面仅展示命令示例总结说明:
rsync -r root@192.168.10.131: /mnt /mnt
| 只同步远程主机的目录和目录中的内容到本机 |
rsync -r /mnt/ root@192.168.10.131: /mnt /mnt/ | 只同步远程主机的目录中的内容到本机 |
rsync -lr root@192.168.10.131: /mnt /mnt/ | 同步远程主机的链接到本机 |
rsync -pr root@192.168.10.131: /mnt /mnt/ | 同步远程主机的权限到本机 |
rsync -or root@192.168.10.131: /mnt /mnt/ | 同步远程主机的拥有者到本机 |
rsync -gr root@192.168.10.131: /mnt /mnt/ | 同步远程主机的拥有组到本机 |
rsync -tr root@192.168.10.131: /mnt /mnt/ | 同步远程主机的时间戳到本机 |
rsync -Dr root@192.168.10.131: /mnt /mnt/ | 同步远程主机的设备文件到本机 |
三、加速文件传输的方法——归档与压缩
1.归档
归档是指将多个文件或目录收集整合到一个单独的文件中,这个单独的文件就被称为归档文件。归档的 主要目的是方便对大量文件进行管理、备份和传输。
将node1 中的 etc 目录及其文件按照正常速度传输到 node2 的话,目录中的内容会一个个传输,速度较慢。
首先在 node1 将需要发送的内容打包成一个 .tar 文件,但不进行压缩。通过查看文件权限,可知已将 etc 目录打包成 etc.tar 文件。
再次将 node1 需要发送的内容传输到 node2,此时显示出来的发送内容只有一条,速度也提升了。
查看 etc 目录和 etc.tar 文件占用内存,是相同的, etc.tar 文件内存少了一点的原因是:etc 目录里有些内容是链接,其中的文件会有重复,所以目录占用内存较多。
②c:创建 f:指定文件或目录名称
创建 abc.tar 归档文件,并将 etc 目录和 mnt 目录打包在一起。
③x:解档 abc.tar 归档文件。
④--get:指定解档 abc.tar 归档文件中的 mnt 目录。
⑤r:将建立的 file 文件添加到 abc.tar 归档文件中,然后查看 abc.tar 归档文件的最后三行,显示有 file 文件,说明添加成功。
⑥--delete:删除 abc.tar 归档文件中的 file 文件,同样查看 abc.tar 文件的最后三行,没有显示 file 文件,说明删除成功。
⑦-C:先查看 pub 目录里面的内容,只有 leefile 文件,然后将 abc.tar 归档文件解档到 pub 目录中,随后再次查看 pub 目录, abc.tar 归档文件中的 etc 目录和 mnt 目录都解档解档到 pub 目录中。
归档命令总结说明
tar cf etc.tar /etc/
| 创建 etc.tar 归档文件,将 etc 目录打包 |
tar cf abc.tar /etc/ /mnt/ | 创建 abc.tar 归档文件,将 etc 目录和 mnt 目录一起打包 |
tar xf abc.tar | 将 abc.tar 归档文件解档 |
tar rf abc.tar file | 将 file 文件添加到 abc.tar 归档文件 |
tar tf abc.tar | tail -n 3 | 查看 abc.tar 归档文件的最后三行(内容多,可只查看规定的几行内容) |
tar f abc.tar --get /mnt/ | 指定解档 abc.tar 归档文件中的 mnt 目录 |
tar f abc.tar --delete file | 删除 abc.tar 归档文件中的 file 文件 |
tar xf abc.tar -C /pub/ | 将 abc.tar 归档文件解档到指定的 pub 目录 |
2.压缩
压缩文件可以减少存储空间的占用,提升数据传输的效率。压缩的文件越小,越利于文件传输,压缩速度也越慢。压缩速度快慢除了跟压缩比例相关,更多的是对 CPU 的要求比较高,CPU 快,压缩速度也快。
Linux 默认支持压缩格式 | zip 格式 | gzip 格式 | bzip2 格式 | xz 格式 |
压缩 格式 说明 |
它可以将多个文件和目录压缩到一个文件中,并且支持跨平台使用,方便在不同操作系统之间传输文件。zip 格式还支持加密功能,可以对压缩文件中的内容进行加密保护。
|
以 .gz 为扩展名,是 Linux 系统中广泛使用的压缩格式。它使用 gzip 算法进行压缩,具有较 快的压缩和解压缩速度,适用于大多数日常文件的压缩。例如,许多软件包在发布时会采用 .gz 压缩格式。
|
文件扩展名为 .bz2 。这种格式采用 bzip2 算法,压缩率相对较高,但压缩和解压缩速度比 gz格式慢一些。在需要更高压缩比的情况下,如对大型数据文件或备份文件进行压缩时,常采 用 .bz2 格式。
|
以.xz为扩展名,使用 xz 算法进行压缩。它具有极高的压缩率,能最大程度地减小文件体积,但压缩和解压缩过程相对较慢,通常用于对空间要求极为苛刻的场景,如长期存储的大量数据归档。
|
先清空桌面的文件,重新建立 etc.tar 归档文件,打包 etc 目录。然后查看 etc.tar 归档文件和 etc 目录占用内存大小。
1)zip格式压缩
zip -r etc.tar.zip etc.tar zip 格式压缩文件
unzip etc.tar.zip zip 格式解压缩
将 etc.tar 归档文件压缩成 zip 格式,随后查看压缩后的占用内存,只有7.7M。
解压 etc.tar.zip,便可得回 etc.tar 归档文件。
2)gzip 格式
gzip etc.tar gzip 格式压缩文件
gunzip etc.tar.gz gzip 格式解压缩
将 etc.tar 归档文件压缩成 gzip 格式,随后查看压缩后的占用内存,只有6.3M。
解压 etc.tar.gz,便可得回 etc.tar 归档文件。
3)bzip2 格式
bzip2 etc.tar bzip2 格式压缩
bunzip etc.tar.bz2 bzip2 格式解压缩
将 etc.tar 归档文件压缩成 bzip2 格式,随后查看压缩后的占用内存,只有5.4M。
解压 etc.tar.bz2,便可得回 etc.tar 归档文件。
4)xz 格式
xz etc.tar xz 格式压缩
unxz etc.tar.xz xz 格式解压缩
将 etc.tar 归档文件压缩成 xz 格式,随后查看压缩后的占用内存,只有4.5M。
解压 etc.tar.xz,便可得回 etc.tar 归档文件。
3.归档压缩一步完成
压缩只针对于文本,涉及图片或视频不支持,因为它们之间的解码不同。
将 etc 目录一步完成归档压缩(只有 gzip、bzip2、xz 格式才能归档压缩一步完成,tar 命令不支持 zip 格式)。
分别解压etc.tar.gz、etc.tar.bz2、etc.tar.xz,便可得回 etc 目录。