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 [email protected]:/root/Desktop

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

-q(静默传输)
bash 复制代码
scp -q quietfile [email protected]:/root/Desktop/
-r递归传输

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

bash 复制代码
scp -rq aaa [email protected]:/root/Desktop/
bash 复制代码
scp -rq bbb [email protected]:/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 [email protected]:/root/Desktop

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

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

要复制的目录后不带/

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

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

-l复制链接

bash 复制代码
rsync -lr /mnt [email protected]:/root/Desktop

-p复制权限

bash 复制代码
rsync -lpr /mnt [email protected]:/root/Desktop

-o复制所属者

bash 复制代码
 rsync -lpor /mnt [email protected]:/root/Desktop

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

-g复制所属组

bash 复制代码
rsync -lpgor /mnt [email protected]:/root/Desktop

-t复制时间戳

bash 复制代码
rsync -lpgort /mnt [email protected]:/root/Desktop

-D复制设备

bash 复制代码
rsync -lpgortD /dev/pts/ [email protected]:/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> <要压缩的文件或目录>

相关推荐
筱戥芊茹1 分钟前
RK3588上Linux系统编译C/C++ Demo时出现BUG:The C/CXX compiler identification is unknown
linux·c语言·c++·嵌入式硬件·bug
网硕互联的小客服4 分钟前
香港服务器租用对分布式计算的作用
运维·服务器
__基本操作__7 分钟前
linux以C方式和内核交互监听键盘[香橙派搞机日记]
linux·c语言·输入子系统
rainFFrain11 分钟前
网络基础1
网络
迷茫运维路35 分钟前
K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战
运维·kubernetes·go·prometheus·consul
博睿谷IT99_40 分钟前
华为数通Datacom认证考试难度怎么样?
运维·华为·网络工程师·hcie·华为数通认证
北极的冰箱1 小时前
自动化运行后BeautifulReport内容为空
运维·python·测试工具·自动化
skywalk81632 小时前
FreeBSD从14.1升级到14.2后桌面图标消失桌面背景消失且无法设置
运维·服务器·freebsd
笑远2 小时前
不同服务器架构(x86、ARM、Power、SPARC)对数据库使用的影响
运维·服务器·数据库·架构
Respect@2 小时前
tcpdump`是一个非常强大的命令行工具,用于在网络上捕获并分析数据包
网络·测试工具·tcpdump