Linux文件传输:让数据飞起来!

一、前置任务

为了便于实验,我用母盘的虚拟机克隆出两台虚拟机来模拟两台主机进行文件传输

查询两台主机的IP

BL1

192.168.163.130/24

BL2

192.168.88.129/24

二、文件传输

scp命令

|------|---------------------|
| 不填选项 | 正常显示进度的传输 |
| -q | 静默传输 |
| -r | 递归传输(用于传输目录及目录里的内容) |

1.复制本地文件到远程主机

bash 复制代码
scp [-r] <本地文件> <远程主机用户@远程主机ip:远程主机目录的绝对路径>

先在BL1中创建一个实验文件BL1file,BL2中桌面上是没有BL1file

直接使用scp命令是不行的

先要编辑/etc/ssh/sshd_config(sshd的配置文件)

在第40行将PermitRootLogin 改成yes

正常传输
bash 复制代码
scp BL1file root@192.168.88.129:/root/Desktop

scp <要传输的文件名> 以什么身份传输@传输的主机的IP地址:要放在传输的主机的哪里(绝对路径)

-q(静默传输)
bash 复制代码
scp -q quietfile root@192.168.88.129:/root/Desktop/
-r递归传输

aaa目录中没有任何文件,bbb中有file123三个文件

bash 复制代码
scp -rq aaa root@192.168.88.129:/root/Desktop/
bash 复制代码
scp -rq bbb root@192.168.88.129:/root/Desktop/

rsync命令

比scp更快速传输,它会检查有无已经有的文件,若已经有则跳过文件传输下一个文件。

|----|--------|
| -r | 复制目录 |
| -l | 复制链接 |
| -p | 复制权限 |
| -t | 复制时间戳 |
| -o | 复制拥有者 |
| -g | 复制拥有组 |
| -D | 复制设备文件 |

实验前置

touch /mnt/BL1file{1..5} 在mnt目录下创建BL1file1~5
chmod 777 /mnt/BL1file* 更改mnt目录下BL1file1~5的权限
chown vb.vb /mnt/BL1file* 更改mnt目录下BL1file1~5的所有人和所有组

创建一个链接文件BL1Link指向BL1file5

bash 复制代码
ln -s /mnt/BL1file5 /mnt/BL1Link

-r复制目录

bash 复制代码
rsync -r /mnt root@192.168.88.129:/root/Desktop

注意:在用rsync传输目录时,当目录中有软链接时,rsync -r会跳过软链接的传输

注意:复制目录时/的位置以及是否带/ 是有区别的!!!

要复制的目录后不带/

传输目录中的内容和目录本身
要传输的目录后带/

传输目录中的内容而不传输目录本身

-l复制链接

bash 复制代码
rsync -lr /mnt root@192.168.88.129:/root/Desktop

-p复制权限

bash 复制代码
rsync -lpr /mnt root@192.168.88.129:/root/Desktop

-o复制所属者

bash 复制代码
 rsync -lpor /mnt root@192.168.88.129:/root/Desktop

注:因为BL2中没有vb这个用户,所以复制的是BL1中vb的id 1001

-g复制所属组

bash 复制代码
rsync -lpgor /mnt root@192.168.88.129:/root/Desktop

-t复制时间戳

bash 复制代码
rsync -lpgort /mnt root@192.168.88.129:/root/Desktop

-D复制设备

bash 复制代码
rsync -lpgortD /dev/pts/ root@192.168.88.129:/root/Desktop

三、加速文件传输-归档与压缩

归档

tar命令

|----------|------------|
| c | 创建并归档 |
| t | 查看归档的内容 |
| f | 指定文件名称 |
| x | 解档 |
| v | 详细过程 |
| r | 向归档文件中添加文件 |
| --get | 解档指定文件 |
| --delete | 删除指定文件 |
| -C | 指定解档路径 |

cf创建指定文件名称并归档

bash 复制代码
tar cf etc.tar /etc/ /mnt

tar cf <文件名>.tar <要归档的内容或目录...>
创建.tar文件并将/etc/和/mnt归档在etc.tar中

tf查看指定文件的归档内的内容

bash 复制代码
tar tf etc.tar

tar tf <文件名>.tar

xf解档指定文件

bash 复制代码
tar xf etc.tar

tar xf <文件名>.tar

vf 查看详细归档的文件

bash 复制代码
tar cvf etc.tar /etc/ /mnt

rf向归档的文件中添加文件

bash 复制代码
tar rf etc.tar aaaaaaaaaaaaaaaa

--get解档指定文件

bash 复制代码
tar --get -f etc.tar

--delete删除指定文件

bash 复制代码
tar --delete -f etc.tar aaaaaaaaaaaaaaaa

查看归档后的大小

du -sh <文件名>.tar

为什么会相差?

是因为归档前的目录中可能存在链接,所以链接和链接的内容会被计算两次

而归档后链接不会被重复计算文件大小

压缩

压缩文件可以减少存储空间的占用,提升数据传输的效率

Linux 系统默认支持多种压缩格式,以下是一些常见的默认支持格式:

gz 格式:以.gz为扩展名,是 Linux 系统中广泛使用的压缩格式。它使用gzip算法进行压缩,具有较 快的压缩和解压缩速度,适用于大多数日常文件的压缩。例如,许多软件包在发布时会采用.gz压缩 格式。
bz2 格式:文件扩展名为.bz2。这种格式采用bzip2算法,压缩率相对较高,但压缩和解压缩速度比 gz格式慢一些。在需要更高压缩比的情况下,如对大型数据文件或备份文件进行压缩时,常采 用.bz2格式。
xz 格式:以.xz为扩展名,使用xz算法进行压缩。它具有极高的压缩率,能最大程度地减小文件体 积,但压缩和解压缩过程相对较慢,通常用于对空间要求极为苛刻的场景,如长期存储的大量数据 归档。
zip 格式:虽然zip格式在 Windows 系统中更为常见,但 Linux 系统也默认支持。它可以将多个文 件和目录压缩到一个文件中,并且支持跨平台使用,方便在不同操作系统之间传输文件。此外,zip 格式还支持加密功能,可以对压缩文件中的内容进行加密保护。

zip

zip -r <命名(一般以.zip为后缀)> <要压缩的文件>

压缩后文件的大小减少了很多

unzip

unzip <要解压缩的.zip文件>

gzip

gzip <要压缩的文件>

与zip压缩方式相比,gz的压缩让文件更小

gunzip

gunzip <要解压缩的gz文件>

bzip2

bzip2 <要压缩的文件>

bunzip2

bunzip2 <要解压缩的.bz2文件>

xz

xz <要压缩的文件>

unxz

unxz <要解压缩的.xz文件>

压缩大小能力xz>bzip2>gzip>zip

归档和解压一步到位

tar zcf <压缩后文件名.gz> <要压缩的文件或目录>

tar jcf <压缩后文件名.bz2> <要压缩的文件或目录>

tar Jcf <压缩后文件名.xz> <要压缩的文件或目录>

tar zxf <压缩后文件名.gz> <要压缩的文件或目录>

tar jxf <压缩后文件名.bz2> <要压缩的文件或目录>

tar Jxf <压缩后文件名.xz> <要压缩的文件或目录>

相关推荐
斯班奇的好朋友阿法法3 小时前
中科方德(NFSChina)离线安装 RPM 包
运维
H Journey3 小时前
网络编程-创建SOCKET套接字
网络·socket
milo.qu3 小时前
RockyLinux9.7 docker部署Jisti Meet
linux·docker·容器
GanGanGanGan_3 小时前
CentOS 7.9 glibc 2.17 源码编译升级到 glibc 2.31
linux·运维·centos·glibc
一袋米扛几楼983 小时前
【高级网络】虚拟化与云计算 (Virtualization & Cloud) 深度解析
网络·网络工程
charlie1145141913 小时前
嵌入式Linux驱动开发——class 和 device 模型 - 自动创建设备节点的幕后机制
linux·运维·驱动开发
杨云龙UP5 小时前
SQL Server2022部署:Windows Server 2016下安装、SSMS配置、备份还原与1433端口放通全流程_20260508
运维·服务器·数据库·sql·sqlserver·2022
梦想与想象-广州大智汇5 小时前
自建docker加速镜像,使用 Cloudflare Workers/Pages 部署加速教程
运维·docker·容器
枳实-叶5 小时前
【Linux驱动开发】第四天:dmesg日志全解+驱动加载失败极速排查
linux·运维·驱动开发
武超杰6 小时前
Nginx从入门到精通
运维·nginx