在Linux中进行文件传输


如何在两台Linux主机之间利用局域网实现文件传输??
我们在学习之前先准备好实验环境,以便于我们更好的理解内容。
需要 2 台主机并且保证这两台主机是可以通信的:
westos_linux : 172.25.254.105
westos_node1 : 172.25.254.205

westos_linux&westos_node1:
关闭火墙服务

$sudo systemctl disable --now firewalld
$sudo systemctl stop firewalld

1. scp 命令

scp  本地文件  远程主机用户@远程主机 ip:远程主机目录的绝对路径
scp  远程主机用户@远程主机 ip:远程主机文件的绝对路径  本地文件

实验步步骤:
(1)在westos_linux建立实验素材

$sudo touch westos
$sudo mkdir westosdir

(2)测试
a)把本地文件复制到远程主机 (上传)

$sudo scp westos root@172.25.254.205:/root/Desktop
$sudo scp -r westosdir root@172.25.254.205:/root/Desktop   ## -r 表示复制目录
$sudo scp -q westos root@172.25.254.205:/root/Desktop  ##-q 传输文件时不显示进度(较大的文件才会显示进度)

b)把远程文件复制到本地(下载)

$sudo scp root@172.25.254.205:/root/Desktop/westos_node1 /root/Desktop

2.rsync

a) rsync 和 scp 命令的对比
实验素材:
1)172.25.254.105:

dd if=/dev/zero of=/root/Desktop/westosfile1 bs=1M count=10 
##dd=截取,if=inputfile
##of=outputfile
#bs=blocksize
#count=块的个数
dd if=/dev/zero of=/root/Desktop/westosfile2 bs=1M count=20
dd if=/dev/zero of=/root/Desktop/westosfile3 bs=1M count=30

2)在主机之间建立免密登陆使远程文件传输可以直接执行

westos_linux中:

$sudo ssh-keygen ##生成密钥
$sudo ssh-copy-id -i /root/.ssh/id_rsa.pub.  root@172.25.254.205

3)创建测试脚本

vim check_scp.sh ##检测 scp 传输时间
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
time scp -qr /root/Desktop root@172.25.254.20:/root/Desktop
vim check_rsync.sh ##检测 rsync 的传输时间
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop
time rsync -raCq /root/Desktop root@172.25.254.20:/root/Desktop

4)执行
scp执行效果:

$sudo bash check_scp.sh
real 0m1.334s
user 0m0.210s
sys 0m0.490s  ##第一次系统执行时间
real 0m1.642s
user 0m0.412s
sys 0m0.383s  ##第二次系统执行时间
real 0m1.586s
user 0m0.309s
sys 0m0.497s  ##第三次系统执行时间

以上执行效果我们可以看出 scp 三次执行时间几乎一致
rsync 执行效果:

$sudo bash check_rsync.sh
real 0m1.603s
user 0m0.399s
sys 0m0.557s  ##第一次系统执行时间
real 0m0.329s
user 0m0.012s
sys 0m0.010s  ##第二次系统执行时间
real 0m0.348s
user 0m0.014s
sys 0m0.022s  ##第三次系统执行时间

以上执行效果我们可以看出 rsync 三次执行时间中后两次远远小与第一次

b) rsync 用法
rsync 文件 远程用户@远程主机 ip:远程主机目录
rsync 远程用户@远程主机 ip:远程主机目录 文件路径

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

实验环境配置
在 westos_node1 中

$sudo watch -n 1 ls -lR /root/Desktop

在 westos_linux 中

$sudo touch /root/Desktop/file{1..5}
$sudo chmod 777 /root/Desktop/*
$sudo useradd westos
$sudo chown westos /root/Desktop/*
$sudo ln -s /root/Desktop/file1 /root/Desktop/file

westos_linux 执行:
执行命令看效果:

rsync -r root@172.25.254.205:/root/Desktop /mnt  ##同步目录本身其目录中的文件
rsync -r root@172.25.254.205:/root/Desktop/ /mnt  ##只同步目录中的文件
rsync -rl root@172.25.254.205:/root/Desktop/ /mnt  ##同步链接
rsync -rlp root@172.25.254.205:/root/Desktop/ /mnt  ##同步权限
rsync -rlpog root@172.25.254.205:/root/Desktop/ /mnt  ##同步用户组
rsync -rlpogt root@172.25.254.205:/root/Desktop/ /mnt  ##同步时间
rsync -rD root@172.25.254.205:/dev/pts /mnt  ##同步设备文件

3.利用文件归档压缩加快文件传输

为了加快文件的传输速度及效率,我们可以将文件进行归档压缩后再传输。
(1)文件归档

tar		c		##创建
		f		##指定文件名称
		x		##解档
		v		##现实过程
		t		##查看
		r		##向归档文件中添加文件
		--get	##解档指定文件
		--delete	##删除指定文件
		-C		##指定解档路径

实验步骤:

$sudo tar cf etc.tar /etc/
$sudo tar tf etc.tar
$sudo tar rf etc.tar westos_rhel8
$sudo tar xf etc.tar
$sudo tar f etc.tar --get westos_rhel8
$sudo tar f etc.tar --delete westos_rhel8
$sudo tar xf etc.tar -C /root/Desktop

(2)文件的压缩
zip:

$sudo zip -r mnt.tar.zip mnt.tar  #zip 格式压缩
$sudo unzip mnt.tar.zip #zip 格式解压缩

gzip:

$sudo gzip mnt.tar #gzip 格式压缩
$sudo gunzip mnt.tar.gz #gzip 格式解压缩

bzip2:

$sudo bzip2 mnt.tar  #bzip2 格式压缩
$sudo bunzip2 etc.tar.bz2 #bzip2 格式解压缩

xz:

$sudo xz mnt.tar  #xz 格式压缩
$sudo unxz mnt.tar.xz  #xz 格式解压缩

(3)tar+压缩
gzip:

$sudo tar zcf etc.tar.gz /etc
$sudo tar zxf etc.tar.gz

bzip2:

$sudo tar jcf etc.tar.bz2 /etc
$sudo tar jxf etc.tar.bz2

xz:

$sudo tar Jcf etc.tar.xz /etc
$sudo tar Jxf etc.tar.xz
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值