Linux系统中的文件传输
1 实验环境
可以相互通信的真实主机和虚拟机,真实主机作为客户端,虚拟机作为服务端,使用“systemctl disable – now firewalld”或“systemctl stop firewalld”命令关闭虚拟机的防火墙。
2 scp命令
- scp是secure copy的缩写,该命令可以实现远程文件传输
- 上传:scp 本地文件 远程主机用户@远程主机ip:远程主机目录的绝对路径
- 下载:scp 远程主机用户@远程主机ip:远程主机文件的绝对路径 真机路径
1)在客户端建立文件:
将建立好的文件上传至服务器:
将服务器端的图片下载到客户端的当前位置:
2)将目录上传至服务器,-r 表示复制目录,若目录中有文件,也会将文件传输过去:
在服务器端查看:
将目录及目录下的20个文件上传到服务器:
将目录及目录下的文件上传到服务器,-q表示上传文件时不显示进度:
在服务器端查看,上传成功:
3 rsync命令
rsync是增量备份 ,即只备份没有备份过的,之前备份过的不再备份;而scp是完全备份,即原来服务器不管有没有备份过的东西,都备份上,没有增量的对比。
3.1 rsync和scp命令对比
1)生成密钥,实现免密登陆
2)创建一个较大的文件,下图所示的命令表示从/dev/zero文件中,截取一块放到bigfile文件里,所截取的一块大小是1M,共截取一千块。截取完成后,可以用 du -sh bigfile 命令查看文件大小:
3)测试scp命令上传文件所需要的时间,方便起见,可以创建一个脚本,里面写入要执行的命令:
vim test.sh脚本中写入的内容,time后面可以加命令,查看该命令执行时消耗的时间:
运行该脚本文件,其中real表示实际消耗时间,user表示用户检测消耗的时间(授权检测),sys表示系统消耗时间。根据下图所示结果来看,每次执行该命令所消耗的时间几乎一致,这是因为每次执行scp命令都是需要做完全备份的:
4)修改脚本文件,测试rsync命令:
test.sh文件中的命令修改如下:
可以看到第一次备份的时间和scp命令时间几乎一致,但后面两次,只作增量备份,所消耗的时间远远小与第一次:
3.2 rsync命令用法
- 上传:rsync 文件 远程用户@远程主机ip:远程主机目录
- 下载:rsync 远程用户@远程主机ip:远程主机目录 文件路径
参数 | 含义 |
---|---|
-r | 复制目录 |
-l | 复制链接 |
-p | 复制权限 |
-t | 复制时间戳 |
-o | 复制拥有者 |
-g | 复制拥有组 |
-D | 复制设备文件(/dev/pts/目录下的设备文件) |
1)在客户端建立实验素材,其中“ln -s /home/lhyqjw/westosdir/file1 westosdir/test”命令表示将/home/lhyqjw/westosdir/file1文件链接到westosdir/test里:
在服务端建立一个监控:
2)复制上传目录,复制时,目录后面加‘/’和不加是有区别的,不加代表将目录和文件一起复制,链接会被忽略;加上‘/’表示只上传目录里面的内容,目录本身不会被传输过去,链接也被忽略。当不想忽略链接时,加-l参数:
服务器端监控,复制了目录本身及目录中的内容:
目录后面加上‘/’:
查看服务器端监控,只包含文件,不包含目录本身:
3)复制链接:
查看服务器端监控:
4)将这些文件全都设置成满权限,但是复制过来后,权限不变,所以加上p参数复制权限。
设置文件权限:
查看客户端权限:
将改变权限后的文件上传到服务器端:
服务器端的文件权限依旧没有改变:
添加-p参数:
服务器端权限上传成功:
5)上传文件的同时,复制用户和用户组:
查看服务器端监控:
6)上传文件的同时,复制时间:
查看服务器端监控:
7)复制设备文件
查看服务器端监控:
4 文件的归档压缩
4.1 文件归档
- 将目录打包成文件传输,提升传输效率
- tar命令参数及含义
参数 | 含义 |
---|---|
c | 创建 |
f | 指定文件名称 |
x | 解档 |
v | 显示打包过程 |
t | 查看 |
r | 向归档文件中添加文件 |
- -get | 解档指定文件 |
- -delete | 删除指定文件 |
-C | 指定解档路径 |
-P | don’t remove “/”,默认会删除‘/’,加P参数之后保留 |
1)打包文件同时指定文件名称:
2)查看打包文档:
3)解档:
4)tar其他命令操作:
命令 | 含义 |
---|---|
tar cf etc.tar /etc/ | etc.tar是打包后的文件名,/etc是打包的内容 |
tar tf etc.tar | 查看打包的内容 |
tar rf etc.tar westosfile | 向归档文件中添加文件。在归档后的目录下建立了一个文件,使用查看打包内容查看后,新建文件不再里面,可以使用该命令进行添加,之后再查看,该文件在该打包内容中 |
tar xf etc.tar | 对打包好的文件解压 |
tar f etc.tar - -get westosfile | 解档指定文件,将该文件单独拿出来 |
tar f etc.tar --delete westosfile | 将归档包里面的文件删除 |
tar xf etc.tar -C /root/Desktop | 解档时,指定解档路径 |
4.2 文件压缩
- zip格式压缩及解压
命令 | 含义 |
---|---|
zip -r mnt.tar.zip mnt.tar | zip格式压缩,将mnt.tar归档好的文件,进行压缩 |
unzip mnt.tar.zip | zip格式解压缩 ,注意解压的时候,要把原文件删除,原文件在解压出来汇报错 |
- gzip格式压缩及解压
命令 | 含义 |
---|---|
gzip mnt.tar | gzip格式压缩 |
gunzip mnt.tar.gz | gzip格式解压缩 |
- bzip2格式压缩及解压
命令 | 含义 |
---|---|
bzip2 mnt.tar | bzip2格式压缩 |
bunzip2 etc.tar.bz2 | bzip2格式解压缩 |
- xz格式压缩及解压
命令 | 含义 |
---|---|
xz mnt.tar | xz格式压缩 |
unxz mnt.tar.xz | xz格式解压缩 |
1)du -sh lhy.tar表示查看文件大小,zip压缩和解压缩:
2)gzip压缩和解压缩:
3)bzip2压缩和解压缩:
4)xz压缩和解压缩:
注意:压缩是对已经归档好的文件进行压缩及解压
4.3 tar+压缩
- gzip格式打包+压缩及解压
命令 | 含义 |
---|---|
tar zcf etc.tar.gz /etc | gzip打包+压缩 |
tar zxf etc.tar.gz | gzip解压 |
- bzip2格式打包+压缩及解压
命令 | 含义 |
---|---|
tar jcf etc.tar.bz2 /etc | bzip2打包+压缩 |
tar jxf etc.tar.bz2 | bzip2解压 |
- xz格式打包+压缩及解压
命令 | 含义 |
---|---|
tar Jcf etc.tar.xz /etc | xz打包+压缩 |
tar Jxf etc.tar.xz | xz解压 |
注意:这是实现打包及压缩一起进行的方式,不用先打包再压缩,节约时间且易用