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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从0到1学Elasticsearch】Elasticsearch从入门到精通(上)

黑马商城作为一个电商项目&#xff0c;商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的&#xff0c;存在很多问题。 首先&#xff0c;查询效率较低。 由于数据库模糊查询不走索引&#xff0c;在数据量较大的时候&#xff0c;查询性能很差…

图论基础理论

在我看来&#xff0c;想要掌握图的基础应用&#xff0c;仅需要三步走。 什么是图&#xff08;基本概念&#xff09;、图的构造&#xff08;打地基&#xff09;、图的遍历方式&#xff08;应用的基础&#xff09; 只要能OK的掌握这三步、就算图论入门了&#xff01;&#xff0…

详细解读react框架中的hooks

React Hooks 是 React 16.8 引入的一项革命性特性&#xff0c;它允许你在函数组件中使用状态(state)和其他 React 特性&#xff0c;而无需编写 class 组件。下面将详细解读 React Hooks 的核心概念、常用 Hooks 及其工作原理。 一、Hooks 的核心概念 1. 什么是 Hooks Hooks …

主机IP动态变化时如何通过固定host.docker.internal访问本机服务

场景需求——主机IP动态变化时&#xff0c;通过固定的 http://host.docker.internal:11555 访问本机服务&#xff0c;核心问题在于 host.docker.internal 的解析逻辑与动态IP的适配。以下是分步解决方案&#xff1a; 一、核心原理&#xff1a;host.docker.internal 的本质与局…

插值算法 - 最近邻插值实现

目录 1. 导入必要的库 2. nearest_neighbor_interpolation 3. 测试代码 数学原理 完整代码 本文实现了基于最近邻插值算法的图像缩放功能。 它使用 Python 编写,主要依赖于NumPy和PIL(Python Imaging Library)库。 NumPy用于高效的数值计算,而PIL仅用于图像的加载和…

windows中搭建Ubuntu子系统

windows中搭建虚拟环境 1.配置2.windows中搭建Ubuntu子系统2.1windows配置2.1.1 确认启用私有化2.1.2 将wsl2设置为默认版本2.1.3 确认开启相关配置2.1.4重启windows以加载更改配置 2.2 搭建Ubuntu子系统2.2.1 下载Ubuntu2.2.2 迁移位置 3.Ubuntu子系统搭建docker环境3.1安装do…

MySQL事务机制

目录 原子性 持久性 隔离性 隔离级别(并发事务之间的关系) 读未提交 读已提交 可重复读 串行化(最严格的隔离级别) 一致性 问题 不可重复读性(已经提交的数据) 什么是脏读问题(未提交的数据)? 幻读 保存点 自动提交机制--autocommit 会话隔离级别与全局隔离级…

Cadence学习笔记之---直插元件的封装制作

目录 01 | 引 言 02 | 环境描述 03 | 操作步骤 04 | 结 语 01 | 引 言 在之前发布的Cadence小记中&#xff0c;已经讲述了怎样制作热风焊盘&#xff0c;贴片(SMD)焊盘、通孔、过孔&#xff0c;以及贴片元件的封装。 本篇关于Cadence的小记主要讲如何制作直插元件的封装。 …

【第四十周】文献阅读:用于检索-增强大语言模型的查询与重写

目录 摘要Abstract用于检索-增强大语言模型的查询与重写研究背景方法论基于冻结LLM的重写方案基于可训练重写器的方案重写器预热训练&#xff08;Rewriter Warm-up&#xff09;强化学习&#xff08;Reinforcement Learning&#xff09; 创新性实验结果局限性总结 摘要 这篇论文…

java学习总结(if switch for)

一.基本结构 1.单分支if int num 10; if (num > 5) {System.out.println("num 大于 5"); } 2.双分支if-else int score 60; if (score > 60) {System.out.println("及格"); } else {System.out.println("不及格"); } 3.多分支 int…

yum的基本操作和vim指令

在我们的手机端或者Windows上下载软件&#xff0c;可以在相应的应用商店或者官网进行下载&#xff0c;这样对于用户来说十分的方便和便捷。而在Linux上&#xff0c;也有类似的安装方式&#xff0c;我们来一一了解一下。 Linux安装软件的3种方法 源代码安装 在Linux下安装软件…

C++ CUDA开发入门

CUDA开发笔记 文章目录 CUDA开发笔记[toc]1 概述2 环境3 命令行编译4 CMAKE引入CUDA5 vscode开发CUDA6 Qt中使用CUDA-CMake7 QMake配置CUDA8 核函数9 核函数调用9.1 核函数调用语法9.2 执行配置参数详解9.3 关键调用步骤9.4 重要注意事项9.5 调用示例分析9.6 最佳实践建议 10 线…

llm开发框架新秀

原文链接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google开源ADK-Agent Development Kit 开源的、代码优先的 Python 工具包&#xff0c;用于构建、评估和部署具有灵活性和控制力的复杂智能体项目仓库:https://github.com/google/adk-python 2.6k项目文档:Age…

VM——相机拍照失败

1、问题&#xff1a;相机频闪触发&#xff0c;在MVS中正常出图&#xff0c;在VM中出现拍照失败 2、解决&#xff1a; 1、首先排查网络设置&#xff08;巨帧是否设置&#xff09; 2、电脑的所有防火墙是否关闭 3、在MVS中恢复相机的设置参数为默认参数&#xff0c;删除VM中的全…

【时频谱分析】小波分析

算法配置页面&#xff0c;也可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

怎么免费下载GLTF/GLB格式模型文件,还可以在线编辑修改

​ 现在非常流行glb格式模型&#xff0c;和gltf格式文件&#xff0c;可是之类模型网站非常非常少 1&#xff0c;咱们先直接打开http://glbxz.com 官方glb下载网站 glbxz.com 2 可以搜索&#xff0c;自己想要的模型关键词 3&#xff0c;到自己想下载素材页面 4&#xff0c;…

【6】深入学习http模块(万字)-Nodejs开发入门

深入学习http模块 前言http一个Web服务器项目创建代码运行代码解析 Server属性&#xff1a;keepAlive属性&#xff1a;keepAliveTimeout属性&#xff1a;maxHeaderSize属性&#xff1a;requestTimeout属性&#xff1a;maxRequestsPerSocket方法&#xff1a;close()方法&#xf…

buuctf sql注入类练习

BUU SQL COURSE 1 1 实例无法访问 / Instance cant be reached at that time | BUUCTF但是这个地方很迷惑就是这个 一个 # 我们不抓包就不知道这个是sql注入类的判断是 get 类型的sql注入直接使用sqlmap我们放入到1.txt中 目的是 优先检测 ?id1>python3 sqlmap.py -r 1.t…

(即插即用模块-特征处理部分) 三十二、(TGRS 2024) MDAF 多尺度双表示对齐过滤器

文章目录 1、Multiscale Dual-Representation Alignment Filter2、代码实现 paper&#xff1a;SFFNet: A Wavelet-Based Spatial and Frequency Domain Fusion Network for Remote Sensing Segmentation Code&#xff1a;https://github.com/yysdck/SFFNet 1、Multiscale Dual-…

Python 中为什么 hash(-1) == hash(-2)?

推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 让我们从哪里开始?获取源代码!让我们浏览一下这是正确/完整的答案吗?结论前几天在浏览 Reddit 时,我在 r/Python 上看到了这样一个…