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

news2025/4/16 1:12:46

 一、实验环境的设置

①该实验需要两台主机,虚拟机名称为 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.coloradmin.cn/o/2334834.html

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

相关文章

基于 OpenHarmony 5.0 的星闪轻量型设备应用开发——Ch2 OpenHarmony LiteOS-M 内核应用开发

写在前面&#xff1a; 此篇是系列文章《基于 OpenHarmony5.0 的星闪轻量型设备应用开发》的第 2 章。本篇介绍了如何在 OpenHarmony 5.0 框架下&#xff0c;针对 WS63 进行 LiteOS-M 内核应用工程的开发。 为了方便读者学习&#xff0c;需要OpenHarmony 5.0 WS63 SDK 的小伙伴可…

Linux--线程概念与控制

目录 1. Linux线程概念 1-1 什么是线程 1-2 分⻚式存储管理 1-2-1 虚拟地址和⻚表的由来 1-2-2 物理内存管理 1-2-3 ⻚表 1-2-4 ⻚⽬录结构 1-2-5 两级⻚表的地址转换 1-2-6 缺⻚异常 1-3 线程的优点 1-4 线程的缺点 1-5 线程异常 1-6 线程⽤途 2. Linux进程VS线…

Python | kelvin波的水平空间结构

写在前面 简单记录一下之前想画的一个图&#xff1a; 思路 整体比较简单&#xff0c;两个子图&#xff0c;本质上就是一个带有投影&#xff0c;一个不带投影&#xff0c;通常用在EOF的空间模态和时间序列的绘制中&#xff0c;可以看看之前的几个详细的画法。 Python | El Ni…

【音视频】SDL播放PCM音频

相关API 打开音频设备 int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained); desired&#xff1a;期望的参数。obtained&#xff1a;实际音频设备的参数&#xff0c;一般情况下设置为NULL即可。 SDL_AudioSpec typedef struct SDL_AudioSpec { i…

BERT - Bert模型框架复现

本节将实现一个基于Transformer架构的BERT模型。 1. MultiHeadAttention 类 这个类实现了多头自注意力机制&#xff08;Multi-Head Self-Attention&#xff09;&#xff0c;是Transformer架构的核心部分。 在前几篇文章中均有讲解&#xff0c;直接上代码 class MultiHeadAtt…

docker创建容器添加启动--restart选项

一、通过 Docker 命令直接修改已启动的容器&#xff08;推荐-已验证&#xff09; 操作步骤&#xff1a; 1.执行更新命令&#xff1a; docker update --restartalways <容器名或ID>此命令会将容器的重启策略调整为 always&#xff08;无论容器以何种状态退出&#xff0…

一文读懂WPF系列之常用控件以及样式

WPF控件 控件分类概览常用控件常用控件代码示例和效果 样式与模板应用样式定义​​方式行内样式​​页面/窗口级资源样式&#xff08;Local Resource&#xff09;应用程序全局资源独立资源字典&#xff08;ResourceDictionary&#xff09;控件模板&#xff08;ControlTemplate&…

【双指针】专题:LeetCode 283题解——移动零

移动零 一、题目链接二、题目三、题目解析四、算法原理两个指针的作用以及三个区间总结 五、与快速排序的联系六、编写代码七、时间复杂度、空间复杂度 一、题目链接 移动零 二、题目 三、题目解析 “保持非零元素的相对顺序”&#xff0c;比如&#xff0c;示例1中非零元素1…

2025蓝桥杯JavaB组

说明 博主自己水平有限&#xff0c;而且答案也不一定对&#xff0c;下面代码和思路仅作分享。我只把我考场上做了的写出来了&#xff0c;有什么问题欢迎评论区交流。 A&#xff1a;逃离高塔 思路&#xff1a; 由于有了去年的经验&#xff0c;所以一上来我就是找规律&#xf…

SQL学习--基础语法学习

SQL和excle对比 学习目标 单表查询 项目背景 SQL 练习环境 SQL Online Compiler - Next gen SQL Editor 商品信息表&#xff1a;https://study-zhibo.oss-cn-shanghai.aliyuncs.com/test/%E5%95%86%E5%93%81%E4%BF%A1%E6%81%AF%E8%A1%A8.csv 订单明细表&#xff1a;https://…

MATLAB2022b安装

1 从百度网盘下载MATLAB2022b&#xff0c;下载完成后解压到某个文件夹&#xff1b; 链接: MATLAB2022b 提取码: 6666 2 打开解压后的文件夹&#xff0c;进入setup文件夹&#xff0c;双击打开“setup.exe”文件&#xff1b; 3 在弹出窗口中选择“高级选项”-->“我有文件安…

架构总览怎么写,才算工业级?

📈系统架构文档是整个项目最重要的起点,但很多人第一章就“写穿了”: 不是写得太细,就是没有重点。想要写出高质量、能协作、能传承的架构文档,这一篇会告诉你应该怎么做—— ✅ 架构总览的终极目标 明确边界、定义角色、画清数据流 别讲执行细节,别深入函数调用。 ✅ 架…

Datawhale 入驻 GitCode:以开源力量推动 AI 教育公平与创新

在 AI 技术深度重塑教育生态的今天&#xff0c;国内首个 AI 开源学习社区 —— Datawhale 正式加入 GitCode 开源平台&#xff01;作为覆盖全球 3000 高校、培养超百万 AI 人才的创新社区&#xff0c;Datawhale 将通过开源协作模式&#xff0c;为人工智能教育公平注入新动能&a…

ChatDBA:一个基于AI的智能数据库助手

今天给大家介绍一个基于 AI 大语言模型实现数据库故障诊断的智能助手&#xff1a;ChatDBA。 ChatDBA 是由上海爱可生信息技术股份有限公司开发&#xff0c;通过对话交互&#xff0c;提供数据库故障诊断、专业知识学习、SQL 生成和优化等功能&#xff0c;旨在提升 DBA 工作效率。…

MacOS中的鼠标、触控板的设置研究

一、背景和写这篇文章的原因 想搞清楚和配置好鼠标&#xff0c;比如解决好为什么我的滚动那么难用&#xff1f;怎么设置滚轮的方向跟windows相同&#xff1f;调整双击速度&#xff0c;调整鼠标滚轮左右拨动的"冷却时间"。 二、各种设置之详细解释 1. MacOS设置 -&…

asp.net core 项目发布到 IIS 服务器

目录 一、VS2022 发布 二、设置IIS服务 三、配置IIS管理器 &#xff08;一&#xff09;打开IIS管理器 &#xff08;二&#xff09;添加站台 &#xff08;三&#xff09;配置应用程式集区 四、安装ASP.NET Core Hosting Bundle 五、设定IIS的日志位置 六、测试 一、VS2…

【Nodebb系列】Nodebb笔记写入方案

NodeBB写入方案 前言 最近在整理以前记录的碎片笔记&#xff0c;想把它们汇总到NodeBB中&#xff0c;方便管理和浏览。但是笔记内容有点多&#xff0c;并且用发帖的形式写到NodeBB中会丢失时间信息&#xff0c;因此整理了一套NodeBB写入方案&#xff0c;大致流程如下&#xf…

计算机视觉——基于YOLOV8 的人体姿态估计训练与推理

概述 自 Ultralytics 发布 YOLOV5 之后&#xff0c;YOLO 的应用方向和使用方式变得更加多样化且简单易用。从图像分类、目标检测、图像分割、目标跟踪到关键点检测&#xff0c;YOLO 几乎涵盖了计算机视觉的各个领域&#xff0c;似乎已经成为计算机视觉领域的“万能工具”。 Y…

鸿蒙小案例---心情日记

效果演示 代码实现 import { router, window } from kit.ArkUIEntry Component struct Index {async aboutToAppear(): Promise<void> {let w await window.getLastWindow(getContext())w.setWindowSystemBarProperties({statusBarColor: #00C6C3,statusBarContentColo…

el-tree 实现树形菜单子级取消选中后父级选中效果不变

背景 在复杂的企业级管理系统中,树形菜单是一种常见的数据展示和交互组件。传统的树形菜单通常存在以下交互局限: 子节点取消选中时,父节点会自动取消选中无法满足复杂的权限分配和数据筛选场景实际应用场景: 组织架构权限管理多层级资源分配复杂的数据筛选与展示实现需求…