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

发布于:2025-04-11 ⋅ 阅读:(41) ⋅ 点赞:(0)

一、前置任务

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

查询两台主机的IP

BL1

192.168.163.130/24

BL2

192.168.88.129/24

二、文件传输

scp命令

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

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

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

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

直接使用scp命令是不行的

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

在第40行将PermitRootLogin 改成yes

正常传输
scp BL1file root@192.168.88.129:/root/Desktop

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

-q(静默传输)
scp -q quietfile root@192.168.88.129:/root/Desktop/

-r递归传输

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

scp -rq aaa root@192.168.88.129:/root/Desktop/

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

ln -s /mnt/BL1file5 /mnt/BL1Link

-r复制目录 

rsync -r /mnt root@192.168.88.129:/root/Desktop

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

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

要复制的目录后不带/

传输目录中的内容和目录本身

要传输的目录后带/

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

-l复制链接

rsync -lr /mnt root@192.168.88.129:/root/Desktop

-p复制权限

rsync -lpr /mnt root@192.168.88.129:/root/Desktop

-o复制所属者

 rsync -lpor /mnt root@192.168.88.129:/root/Desktop

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

-g复制所属组

rsync -lpgor /mnt root@192.168.88.129:/root/Desktop

-t复制时间戳

rsync -lpgort /mnt root@192.168.88.129:/root/Desktop

-D复制设备

rsync -lpgortD /dev/pts/ root@192.168.88.129:/root/Desktop

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

归档

tar命令

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

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

tar cf etc.tar /etc/ /mnt

tar cf <文件名>.tar <要归档的内容或目录...>

创建.tar文件并将/etc/和/mnt归档在etc.tar中

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

tar tf etc.tar

tar tf <文件名>.tar 

xf解档指定文件

tar xf etc.tar

tar xf <文件名>.tar 

vf 查看详细归档的文件

tar cvf etc.tar /etc/ /mnt

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

tar rf etc.tar aaaaaaaaaaaaaaaa

--get解档指定文件

tar --get -f etc.tar

--delete删除指定文件

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

归档和解压一步到位

归档并压缩.gz/.bz2.xz

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

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

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

 解压缩.gz/.bz2/.xz文件

tar        zxf         <要解压缩文件名.gz>

tar        jxf         <要解压缩文件名.bz2>

tar        Jxf         <要解压缩文件名.xz>


网站公告

今日签到

点亮在社区的每一天
去签到