Linux系统中的文件传输
文章目录
实验环境:
与前面的实验环境大致相同,还是需要两台主机,并且两台主机可以互相通信,我选择的是两台虚拟机,一台的IPADRRES是172.25.254.100(充当客户端),另一台是172.25.254.200(充当服务器),在实验开始之前要先关闭防火墙,以下是命令:
命令 | 效果 |
---|---|
systemctl disable firewalld | 关闭防火墙 |
systemctl stop firewalld | 关闭防火墙 |
用命令关闭后可以用reboot重启,之后在实验结束后用restart还原
一.scp命令:
scp命令可以用于对于本机文件和远程主机文件之间的文件传输:
命令 | 效果 |
---|---|
scp 本地文件 远程主机用户@远程主机ip:远程主机目录的绝对路径 | 将本地文件发给远程主机,并且存放在绝对路径所示的目录下 |
scp 远程主机用户@远程主机ip:远程主机文件的绝对路径 本地文件 | 将远程主机的文件复制到本地 |
[1]实验一:将本机文件传输至远程主机,在本地主机/mnt/新建一个文件filey,在确保主机和远程主机防火墙关闭且sshd服务器开启的状态下,在第一台主机中用命令发送给远程主机的桌面下:
本机操作:
远程主机显示:
[2]实验二:将远程主机文件复制到本地,在远程主机桌面下新建文件filex,在确保主机和远程主机防火墙关闭且sshd服务器开启的状态下,在第一台主机使用命令复制至本机的桌面中:
远程主机操作:
本机操作:
scp参数
参数 | 效果 |
---|---|
-r | 复制目录 |
-q | 传输文件时不显示进度条 |
以用scp命令将远程主机文件复制至本地为例,分别展开实验:
[1]-r可以传输目录:
远程主机操作:
本机操作:
[2]-q表示静默传输,传输时不显现进度条:
二.rsync:
1.rsync与scp的对比实验:
本实验的操作命令:
命令 | 效果 |
---|---|
dd if=/dev/zero of=/mnt/westosfile1 bs=1M count=10 | of=outputfile,bs=blocksize,count=块的个数 |
本实验的监控命令:
操作 | 效果 |
---|---|
time +其他指令 | 显示执行该指令的时间 |
实验步骤:
[1]编辑操作指令:
dd if=/dev/zero of=/mnt/westosfile1 bs=1M count=10
dd if=/dev/zero of=/mnt/westosfile1 bs=1M count=20
dd if=/dev/zero of=/mnt/westosfile1 bs=1M count=30
[2]创建测试脚本:

vim check_scp.sh ##检测scp传输时间
time scp -qr /root/Desktop [email protected]:/root/Desktop
time scp -qr /root/Desktop [email protected]:/root/Desktop
time scp -qr /root/Desktop [email protected]:/root/Desktop
##################################################
vim check_rsync.sh ##检测rsync的传输时间
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
[3]对比实验:
通过实验及时间传输对比,scp命令时间大致保持不变,而rsync命令从第二次开始传输时间大幅减少,因为rsync存在检测功能,重复文件将不会进行传输
2.rsync命令:
操作 | 效果 |
---|---|
rsync 文件 远程用户@远程用户ip:远程主机目录绝对路径 | 将本机的文件传输至远程主机绝对路径所示的目录 |
rsync 远程用户@远程用户ip:远程主机目录 文件路径 | 将远程主机上的文件下载至本机路径所示的目录 |
效果与scp命令相同,不做实验演示
rsync参数:
命令 | 效果 |
---|---|
rsync -r | 复制目录 |
rsync -l | 复制链接 |
rsync -p | 复制权限 |
rsync -t | 复制时间戳 |
rsync -o | 复制拥有者 |
rsync -g | 复制拥有组 |
rsync -D | 复制设备文件 |
实验素材:在本机在远程主机中的/mnt下下载目录:
[1]-l复制链接:
远程主机操作:
本机操作:
[2]-p复制权限:
远程主机操作:
本机操作:
[3]-t复制时间以及-g复制拥有组:
远程主机操作:
本机操作:
[4]-o复制拥有者:
远程主机操作:
本机操作:
[5]-D同步设备文件:
远程主机操作:
本机操作:
三.文件的归档压缩:
1.文件的归档:
文件的归档需要用到命令tar,针对tar命令有几种常用的参数:
参数 | 效果 |
---|---|
f | 指定文件名称 |
c | 创建 |
x | 解档 |
v | 实现过程 |
t | 查看 |
r | 向归档后的文件中添加文件 |
-C | 解档至指定路径 |
–get | 解档指定文件 |
–delete | 删除指定文件 |
[1]用cf创建归档文件:
用cvf在创建时显示过程:
[2]用xf解档:
用xf -C 指定目录可以将文件解档至指定目录:
[3]用tf查看:
注意查看时归档后的文件都是用的相对路径,是为了避免在解档时出现绝对路径的文件,覆盖原本目录中的文件,如果要修改路径设置,需要添加参数P:
[4]对于归档文件以及新文件的操作:新建文件westos.file,用rf向归档后的文件添加并用tf查看是否添加成功:
用-get使westos.file从归档后的文件中解压出来:
用-delete将westos.file在归档后的文件中删除并用tf查看:
2.文件的压缩:
在Linux系统中压缩文件常有以下格式:zip,gzip,bzip2,xz,四种压缩文件的压缩效果依次增强,即同样大小的文件在压缩之后生成的压缩文件大小依次减小,对应压缩所需要的时间依次增加,查看文件内存大小可以使用以下命令:
du -sh file/dir
在Linux系统中没有rar文件,因为要收取版权,所以针对四种压缩文件分别有其对应的命令压缩文件/解压文件:
命令 | 效果 |
---|---|
zip -r 压缩后的文件.zip 目标文件 | 将目标文件压缩成zip文件 |
unzip 压缩文件.zip | 将zip格式的文件解压缩 |
gzip 目标文件 | 将目标文件压缩成gzip格式 |
gunzip 压缩文件.gzip | 将gzip文件解压 |
bzip2 目标文件 | 将目标文件压缩成bzip2文件 |
bunzip2 压缩文件.bzip2 | 将bzip2文件解压 |
xz 目标文件 | 将目标文件压缩成xz文件 |
unxz 压缩文件.xz | 将xz文件解压 |
[1]对于zip格式的文件压缩以及解压:
由实验现象可知zip压缩后不会删除被压缩的目标文件
由实验现象可知,zip解压后也不会删除原来的zip文件,但是在其他三种文件的解压与压缩过程中都会删除
[2]对于gzip格式的文件压缩以及解压:
[3]对于bzip2格式的文件压缩以及解压:
[4]对于xz格式的文件压缩以及解压:
3.tar+压缩:
文件的归档以及压缩可以在一步完成,以及文档的解压和解档也可以:针对gzip,bzip2,xz三种形式的压缩文件分别有不同的指令:
命令 | 效果 |
---|---|
tar zcf 压缩后的文件.gz 目标文件夹 | 将目标文件夹中的文件归档并压缩成gzip文件 |
tar zxf 压缩文件.gz | 将gzip文件解压后解档 |
tar jcf 压缩后的文件.bz2 目标文件夹 | 将目标文件夹中的文件归档并压缩成bzip2文件 |
tar jxf 压缩文件.bz2 | 将bz2文件解压后解档 |
tar Jcf 压缩后的文件.xz 目标文件夹 | 将目标文件夹中的文件归档并压缩成xz文件 |
tar Jxf 压缩文件.xz | 将xz文件解压后解档 |
[1]对于gzip格式的文件归档压缩以及解压解档:
[2]对于bzip2格式的文件归档压缩以及解压解档:
[3]对于xz格式的文件归档压缩以及解压解档: