当前位置: 首页 > news >正文

Linux中的文件传输(附加详细实验案例)

 一、实验环境的设置

①该实验需要两台主机,虚拟机名称为 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.归档 

归档是指将多个文件或目录收集整合到一个单独的文件中,这个单独的文件就被称为归档文件。归档的 主要目的是方便对大量文件进行管理、备份和传输。 

打包 成一个 .tar 文件发送,增加效率

将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 目录。

相关文章:

  • [MRCTF2020]ezpop wp
  • CSI-PVController
  • 面向对象编程基础:从方法论到实践的全面解析
  • 【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1
  • JavaScript 基础语法系统学习笔记
  • 使用MPI-IO并行读写HDF5文件
  • 操作系统简要概述
  • 深入解析 Android 图形系统:Canvas、Skia、OpenGL 与 SurfaceFlinger 的协作
  • Vue 3 自定义指令
  • Mac配置开发环境
  • 【Hadoop入门】Hadoop生态之Pig简介
  • 一体化关节模组核心芯片(人形机器人)
  • 双指针、滑动窗口
  • QScrCpy源码解析(4)获取手机端数据知识补充
  • 文章记单词 | 第30篇(六级)
  • 帆软 FCA-FineBI 认证:迈向商业智能专家之路
  • 文章记单词 | 第28篇(六级)
  • ROS第十梯:ROS+VSCode+Python+C++利用launch自启动节点
  • 几何与游标
  • 大模型时代的“数字共生”:AI如何塑造人类社会的新范式
  • 证监会:2024年依法从严查办证券期货违法案件739件,作出处罚决定592件、同比增10%
  • 法学联合书单|法庭上的妇女
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 时隔4年多,这一次普京和泽连斯基能见面吗?
  • 伊美第四轮核问题谈判开始
  • 前四月全国铁路完成固定资产投资1947亿元,同比增长5.3%