一、前置任务
为了便于实验,我用母盘的虚拟机克隆出两台虚拟机来模拟两台主机进行文件传输
查询两台主机的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>