Linux系统中的文件传输
- 实验环境:
- 需要两台可以通信的主机
- 需要先关火墙:
systemctl disable firewalld
systemctl stop firewalld
1 SCP命令
(1)
- scp 本地文件 远程主机用户@远程主机ip:远程主机目录的绝对路径
- scp 远程主机用户@远程主机ip:远程主机文件的绝对路径 本地文件
实验步骤:
[1] 在node2建立实验需要的素材
[root@westoslinux ~]# touch westos #创建一个westos文件
[root@westoslinux ~]# mkdir westosdir #创建一个westosdir目录
[2] 测试
【1】把本地文件复制到远程主机 (上传)
[root@westoslinux ~]# scp westos root@172.25.254.101:/root/Desktop #将westos文件传输给node1
[root@westoslinux ~]# scp -r westosdir root@172.25.254.101:/root/Desktop #将westosdir目录传输给node1
[root@westoslinux ~]# scp -q westos root@172.25.254.101:/root/Desktop #将westos传输给node1,但是不显示传输过程
- node1结果显示:
[root@westoslinux ~]# cd /root/Desktop #切换目录到/root/Desktop目录下
[root@westoslinux Desktop]# ls #查看目录下是否有westos文件和westosdir文件
【2】把远程文件复制到本地(下载)
[root@westoslinux Desktop]# scp root@172.25.254.201:/root/Desktop/westosfile /root/Desktop #将node2中的/root/Deskrop/westosfile下载到node1的/root/Desktop下
- node1结果显示:
【3】time scp
- 显示传输时间
2 rsync
【1】rsync和scp命令的对比
实验环境:需要在node2中生成密钥
[root@westoslinux Desktop]# ssh-keygen #生成密钥
[root@westoslinux .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.101 #将私钥发给node1
【2】创建测试脚本
- scp
[root@westoslinux Desktop]# vim check_scp.sh #编写脚本文件
[root@westoslinux Desktop]# sh check_scp.sh #运行脚本文件
- rsync
[root@westoslinux Desktop]# vim check_rsync.sh #编写rsync脚本测试文件
[root@westoslinux Desktop]# sh check_rsync.sh #运行脚本文件
【3】rsync用法
-
rsync 文件 远程用户@远程主机ip:远程主机目录
-
rsync 远程用户@远程主机ip:远程主机目录 文件路径
-
rsync
[1]-r
#复制目录
[2]-l
#复制连接
[3]-p
#复制权限
[4]-t
#复制时间戳
[5]-o
#复制拥有者
[6]-g
#复制拥有组
[7]-D
#复制设备文件 -
实验环境:
在node1中
watch -n 1 ls -lR /mnt
在node2中
[root@westoslinux Desktop]# touch westosdir/westosfile{1…5} #建立westosdir目录下的westosfile1~5文件
[root@westoslinux Desktop]# ls westosdir/ #查看是否创建成功
[root@westoslinux Desktop]# ln -s /root/Desktop/westosdir/westosfile1 westosdir/test #创建链接
[root@westoslinux Desktop]# ls -l westosdir/ #察看是否创建成功
- node2
[root@westoslinux Desktop]# rsync -r westosdir root@172.25.254.101:/mnt/ #复制文件
- node1
- -r 复制目录
- -lr 复制链接以及目录
备注:
[root@westoslinux Desktop]# ssh root@172.25.254.101 'rm -rf /mnt/* ’ #远程删除node1下mnt目录下的所有文件目录
[root@westoslinux Desktop]# rsync -lr westosdir root@172.25.254.101:/mnt/ #复制链接及目录
- -plrtog 复制权限,拥有者拥有组,时间戳,目录以及链接
[root@westoslinux Desktop]# rsync -ptoglr westosdir root@172.25.254.101:/mnt/ #复制权限,拥有者拥有组,时间戳,目录以及链接
- -poglrtD 复制设备文件的权限,拥有者,拥有组,时间戳,目录,链接
[root@westoslinux Desktop]# rsync -poglrtD /dev/pts root@172.25.254.101:/mnt/
3 文件的归档压缩
【1】文件归档
tar
c
#创建
f
#指定文件名称
x
#解档
v
#显示过程
t
#查看
r
#向归档文件中添加文件
–get
#解档指定文件
–delete
#删除指定文件
-C
#指定解档路径
-P
#不删除“/”
- 查看文件大小:
[root@westoslinux mnt]# du -sh etc #查看etc文件大小
[root@westoslinux mnt]# du -sh etc.tar #查看etc.tar文件大小
[root@westoslinux mnt]# tar tf etc.tar #查看指定文档
【2】文件的压缩
- 压缩格式有gzip bzip2 zip xz “rar”(其中rar是闭源的linux中无法使用)
- .tar已经是压缩文档了,还可以再进行压缩
- 压缩成其他形式后,用un命令进行解压缩后,再用tar命令进行解档
- un命令解压缩需要先将原文档删除,要么解压缩时就会报错
[1]zip
[root@westoslinux mnt]# zip -r etc.tar.zip etc.tar #zip格式压缩etc.tar
[root@westoslinux mnt]# ls #查看是否压缩成功
[root@westoslinux mnt]# du -sh etc.tar.zip #查看.zip文件大小
[root@westoslinux mnt]# du -sh etc.tar #查看.tar格式文件大小
[2]gzip
[root@westoslinux mnt]# gzip etc.tar #以gzip格式压缩文件
[root@westoslinux mnt]# ls #查看是否建立成功
[root@westoslinux mnt]# du -sh etc.tar.gz #查看gzip格式文件大小
[root@westoslinux mnt]# gunzip etc.tar.gz #解压缩gzip格式文件
[root@westoslinux mnt]# ls #查看是否解压缩成功
[3]bzip2
[root@westoslinux mnt]# bzip2 etc.tar #以bzip2的形式压缩文件
[root@westoslinux mnt]# ls #察看是否压缩成功
[root@westoslinux mnt]# du -sh etc.tar.bz2 #查看bzip2文件大小
[root@westoslinux mnt]# bunzip2 etc.tar.bz2 #解压缩
[root@westoslinux mnt]# ls 察看是否解压成功
[4]xz
[root@westoslinux mnt]# xz etc.tar #以xz形式压缩文件
[root@westoslinux mnt]# ls #查看是否压缩成功
[root@westoslinux mnt]# du -sh etc.tar.xz #查看压缩文件大小
[root@westoslinux mnt]# unxz etc.tar.xz #解压
[root@westoslinux mnt]# ls #查看是否解压成功