RH134学习进程——四.归档和传输文件

四.归档和传输文件

1.管理压缩的tar存档

1.1tar命令

tar 是 Linux 系统中用于打包归档的核心命令,可将多个文件/目录整合为单个归档文件(.tar格式),常与压缩工具结合实现打包+压缩,是文件备份、传输的常用工具。

1.2核心概念

1.2.1打包 vs 压缩:

tar 本身仅负责 "打包"(将多个文件合并为一个归档文件),不直接压缩;需配合 gzip、bzip2 等工具实现 "压缩" 功能。

1.2.2归档文件格式:

纯打包文件后缀为 .tar,打包 + 压缩后常见格式为 .tar.gz(gzip 压缩)、.tar.bz2(bzip2 压缩)、.tar.xz(xz 压缩)。

流程:

1.3核心操作

1.3.1打包(仅合并不压缩)

tar -cvf 包文件名字 要进行打包的文件/目录

如:

tar -cvf A.tar B_dir

将 B_dir1 打包为 A.tar

1.3.2打包并压缩

tar -czvf 包文件名字.tar.方式 要进行打包的文件/目录

如:

<1>打包并通过gzip压缩(.tar.gz)(最常用)

<2>打包并通过bzip2压缩(.tar.bz2)(压缩率高,速度慢)

<3>打包并通过xz压缩(.tar.xz)(压缩率最高,相当最慢)

1.3.3解包/解压

tar -?xvf 包文件名 -C 指定目录

"?"表示对应压缩参数的选项(-z/-j/-J)

如:

1.3.4查看归档文件(不解包)

tar -?tvf 包文件

如:

tar -jtvf A.tar.bz2

1.3.5列出包的内容

tar -tvf 包文件

如:

tar -tvf test.tar.gz

1.4 tar常用选项:

|------------|------------|------------------|
| 参数 | 作用 | 常用场景 |
| -c | 创建新的归档文件 | 打包时必选 |
| -x | 从归档文件中提取文件 | 解包/解压时必选 |

以上选项必须指定其中一个

其他选项:

|------------|-------------------|-------------------------------|
| 参数 | 作用 | 常用场景 |
| -f | 指定归档文件名称 | 必须放在参数最后,紧跟文件名 |
| -z | 用 gzip 压缩 / 解压 | 处理.tar.gz 格式 |
| -j | 用 bzip2 压缩 / 解压 | 处理.tar.bz2 格式 |
| -J | 用 xz 压缩 / 解压 | 处理.tar.xz 格式 |
| -t | 查看归档文件中的内容 | 不解包直接查看文件列表 |
| -C | 指定解压 / 打包路径 | 解压到指定目录或打包时指定源路径 |
| --exclude | 打包时排除指定文件/目录 | 过滤不需要打包的内容 |
| -v | 显示操作过程( verbose ) | 查看打包 / 解压细节 |

2.在系统间安全的传输文件

2.1使用Secure Copy传输文件(scp)

scp 是 OpenSSH 套件的一部分,基于 SSH 协议实现 "加密传输 + 身份验证",既能将文件从本地系统复制到远程系统,也能从远程系统复制到本地系统,是跨主机传输敏感文件的安全选择。

2.2语法基础

2.2.1从本地到远程(文件

scp 本地文件 远程用户@远程主机:远程目标路径

如:

scp A_dir/a.txt student@workstation:/home/student/B_dir

例子:

(1)在workstation主机中(本地),创建源文件:a.txt

(2)在远程主机servera中,创建目标路径:B_dir

(3)返回本地主机(workstation),从本地主机传输文件到远程主机的目标路径:

传输命令:

查看远程主机文件:(验证是否传输)

2.2.2从远程到本地(文件

scp 远程用户@远程主机:远程目标路径 本地目标路径

如:

scp ++++student@servera:/home/student/SERVERA.dir/test.txt++++ \

WORKSTATION_dir/

例子:

(1)在远程主机中(servera),创建源文件test.txt

(2)在本地workstation主机中(本地),创建目标路径:WORKSTATION_dir

(3)在本地主机中,接收从远程主机(servera)中传输的文件test.txt到目标路径WORKSTATION_dir

在本地主机workstation中查看文件:(验证是否成功)

2.2.3传输目录(-r)

scp 支持 -r 选项(递归),用于传输目录及其所有子内容,目录本身会一起传到目标路径,即传输目录;

(1)本地到远程(目录)

scp -r 远程用户@远程主机:远程目录 本地目标路径

(2)远程到本地(目录)

scp -r 本地文件 远程用户@远程主机:远程目标目录

注:

目标目录不存在会自动创建:

如:

远程没有" /home/张三/文档/ "目录,执行命令后会自动创建这个目录,再把本地文件夹传进去,不用手动提前建目录。

2.3流程图

2.4使用安全文件传输程序传输文件

2.4.1 sftp简介

SFTP 是基于 SSH 协议 的安全文件传输工具,兼具「文件传输」和「交互式文件管理」能力。它类似传统 FTP 工具的操作逻辑,但所有传输和身份验证过程都经过加密,安全性远高于普通 FTP,是跨主机安全传输文件的重要方式之

FTP 是文件传输协议(File Transfer Protocol)的缩写,是一种用于在网络上的计算机之间传输文件的标准网络协议。它的主要功能是实现本地计算机和远程服务器之间的文件上传(从本地传到远程)、下载(从远程传到本地)、目录管理等操作。(明文传输)

2.4.2语法格式:

sftp 远程用户@远程主机

如:

sftp student@servera

2.4.3流程;
2.4.3.1 使用交互环境

(1)建立连接进入交互:环境(sftp连接远程主机)

(2)完成连接后,进行文件传输,目录管理等操作

(3)退出交互环境:(exit退出)

2.4.3.2 不使用交换环境

(1)下载远程文件到本地

sftp 选项 本地目标路径 远程用户@远程主机:远程文件路径

如:

sftp student@servera:/home/student/SERVERA.dir/test.txt

从远程主机(servera)中,下载test.txt文件

(2)上传本地文件到远程

sftp 选项 本地文件路径 远程用户@远程主机:远程目标路径

如:

scp /home/student/A_dir/a.txt \

++++student@172.25.250.10:/home/student/SERVERA.dir++++

在本地主机(workstation)中,上传a.txt文件

2.4.4 SFTP 交互环境常用操作命令
2.4.4.1远程主机:目录导航与查看

|------------|--------------------------|---------------------------------|
| 命令 | 功能 | 示例 |
| ls | 列出远程当前目录的文件 / 目录 | ls(列当前目录)ls /home(列远程 /home 目录) |
| cd | 切换远程主机的工作目录 | cd /var/log(切换到远程 /var/log 目录) |
| pwd | 查看远程当前目录的路径 | pwd(输出如 /home/remoteuser) |

2.4.4.2 本地主机:目录导航与查看

针对本地文件系统的操作,命令前加 l 表示 "local"

|------------|------------------------|------------------------------------------------|
| 命令 | 功能 | 示例 |
| lls | 列出本地当前目录的文件/目录 | lls(列本地当前目录)lls ~/Downloads(列本地 Downloads 目录) |
| lcd | 切换本地主机的工作目录 | lcd ~/Documents(切换到本地 Documents 目录) |
| lpwd | 查看本地当前目录的路径 | lpwd(输出如 /home/localuser) |

2.4.4.3文件传输(上传/下载)

|------------|-----------------------|-----------------------------------------------------------------------------|
| 命令 | 功能 | 示例 |
| put | 上传本地文件到远程当前目录 | put local.txt(上传本地local.txt到远程当前目录)put ~/file.tar.gz /remote/path/(指定远程路径) |
| get | 下载远程文件到本地当前目录 | get remote.txt(下载远程remote.txt到本地当前目录)get /remote/file.log ~/save/(指定本地路径) |

可以添加-r选项,复制整个目录;如put -r

2.4.4.4目录和文件操作

|------------|--------------------|------------------------------------|
| 命令 | 功能 | 示例 |
| mkdir | 在远程主机创建新目录 | mkdir new_dir(在远程当前目录创建 new_dir) |
| rmdir | 删除远程主机的空目录 | rmdir empty_dir(删除远程空目录 empty_dir) |
| rm | 删除远程主机的文件 | rm old.txt(删除远程 old.txt 文件) |

2.4.4.5其他实用命令

|------------|------------|------------|
| 命令 | 功能 | 示例 |
| exit/quit | 退出 SFTP 会话 | exit或quit |
| help | 查看命令帮助列表 | help |

2.5完整传输流程图:

3.在系统间安全的同步文件

3.1使用rsync同步文件和目录

rsync 是一款高效的文件同步工具,采用"差异同步算法"------仅复制文件系统间有变化的部分 ****(比如新增的文件、修改过的文件片段),****而非全量复制,从而大幅减少数据传输量,提升同步效率。

是系统间安全复制文件的重要方式,尤其适合频繁同步、大文件传输、带宽有限的场景。

3.2核心工作原理

3.3 rsync关键词解析

格式:

rsync -n -av 源目录 目标路径

3.3.1预览同步(模拟运行):-n

仅显示需要同步的文件清单,但不真正执行同步操作,用于提前验证同步逻辑。

3.3.2详细输出:-v

输出同步过程的详细信息(如文件列表、传输进度等),便于排查问题。

3.3.3归档模式:-a

-a 是 rsync 最核心的选项之一,是多个功能的组合包,能保证文件属性的完整同步。

其包含的子选项如下

|-----------------|--------------------|
| 子选项 | 描述 |
| -r, --recursive | 递归同步整个目录树(含子目录) |
| -l, --links | 同步符号链接(保留链接关系) |
| -p, --perms | 保留文件权限(如读写执行权限) |
| -t, --times | 保留文件时间戳(创建 / 修改时间) |
| -g, --group | 保留文件所属组权限 |
| -o, --owner | 保留文件所有者 |
| -D, --devices | 同步设备文件(特殊文件类型) |

注:

(1)归档模式不会保留硬链接,使用"-H"选项来保留;

若系统中存在 "多个文件名关联同一数据" 的场景,不保留硬链接会导致文件重复存储,破坏原有的文件引用逻辑,甚至引发磁盘空间浪费或数据一致性问题。

(2)要在忍不文件时包含扩展属性,增加选项:

****-A:****保留访问控制列表(ACL);维持权限一致性

****-X:****保留SELinux上下文;保证 SELinux 安全策略生效

3.4使用场景

|------------|-------------------------------|------------------------|
| 场景 | 命令格式 | 示例(简化) |
| 本地→本地 | rsync [选项] 本地源 本地目标 | rsync -av 源/ 目标/ |
| 本地→远程 | rsync [选项] 本地源 远程用户@主机:远程目标 | rsync -av 源/ 用户@主机:目标/ |
| 远程→本地 | rsync [选项] 远程用户@主机:远程源 本地目标 | rsync -av 用户@主机:源/ 目标/ |
| 模拟同步(所有场景) | 加-n选项 | rsync -nv 源 目标 |

例子:

(1)A_dir目录中a.txt文件内容:

(2)B_dir目录中b.txt文件内容:

(3)执行 rsync 模拟同步命令:

解释:

sending incremental file list:

rsync正在生成增量文件列表(只识别 "有变化的文件",这是 rsync 高效的核心逻辑)。

a.txt:

表示检测到 A_dir/a.txt 与 B_dir/b.txt 存在差异,需要同步(但因为是 -n 模拟,仅 "预告" 不实际同步)。

sent 66 bytes ... speedup is 0.61

模拟过程中传输的 "控制信息" 大小(非文件实际内容,因为是预览);

文件实际大小为 52 字节;

(DRY RUN)

明确标记这是模拟运行,没有真正修改目标文件。

相关推荐
qq_395716171 小时前
服务器加硬盘应该用 RAID 几好?
运维·服务器
wuhen_n1 小时前
Webpack vs Vite:前端构建工具对比
前端·webpack·node.js·vite
线束线缆组件品替网1 小时前
服务器高速互连测试中的 CableMAX 高速线缆实践
运维·服务器·人工智能·自动化·硬件工程·材料工程
破烂pan1 小时前
SGLang 服务器启动参数完整总结
运维·服务器·sglang
Kaede61 小时前
如何判断服务器遭受过CC攻击?
运维·服务器
xzl041 小时前
小智服务器:设备的各种MCP消息、初始化响应、工具列表和工具调用响应
java·网络·python
AGC79211 小时前
PCB沉银工艺科普Q&A:定义、区别与应用指南
网络·pcb工艺
skywalk81631 小时前
阿里云的esc云服务器安装FreeBSD是否支持zfs文件系统
服务器·阿里云·云计算·freebsd
HalvmånEver2 小时前
Linux:信号保存下(信号二)
linux·运维·服务器·c++·学习·信号