文件传输讲解
今天分享两个文件传输的命令;
这个实验做起来也是非常简单的,可以跟着去做就能够实现了;
增强一下自己的成就感也不错;
1.scp命令
- 作用:加码的方式在本地主机和远程主机之间复制文件
- 语法:scp + 选项 + 本地路径/远程路径 + 本地路径/远程路径
- 选项:-r:递归复制目录下的内容
- 本地目录复制到远程实验
#本地目录复制给到远程
[root@Linux0 test]# scp -r aa/ 192.168.75.71:/tmp
...............#这里是询问是否远程连接
Are you sure you want to continue connecting (yes/no)? yes#然后输入远程主机的密码
root@192.168.75.71's password:
aa.txt 100% 18 25.6KB/s 00:00 #登录远程主机查看-->这台主机的ip就是71
[root@Linux1 ~]# ls /tmp/ /tmp/aa/
/tmp/:
aa
/tmp/aa/:
aa.txt# 注意:这里有个问题:aa/ 和aa其实可以 同步真个目录#如果想要单单传输目录下的文件,结合通配符使用
[root@Linux0 test]# scp -r aa/* 192.168.75.71:/tmp#登录查看
[root@Linux1 ~]# ls /tmp/
aa aa.txt
- 如果只复制本地文件到远程的方法也是一样
- 也可以直接启动压缩
#直接复制文件到远程主机
[root@Linux0 test]# scp b.txt 192.168.75.71:/tmp#如果想要直接压缩
[root@Linux0 test]# scp -rC bb/ 192.168.75.71:/tmp/
#直接登录查看一下文件
[root@Linux1 ~]# ls /tmp/
aa aa.txt bb b.txt
2.rsync命令:
远程数据同步工具,它传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
需要注意:本地与远程服务器都需要安装好rsync软件包。
- 作用:主要用于同步数据使用
- 语法:rsync + 选项 + 本地目录/ + 本地目录/B
- 注意:这里本地目录带/和不带/是有非常大的区别的;
- B目录可以不存在,如果不存在则自动创建,但是上级data必须存在。
- 带斜杠表示同步A目录下的文件,
- 不带则同步A目录以及其中文件。
- 注意:这里本地目录带/和不带/是有非常大的区别的;
- 选项:
- –delete: B与A保持绝对的一致,B中存在,而A中不存在的文件将被删除。
- 两台主机做免密登录,以免说每一次传输都得输入密码
# 首先,进行一个ssh远程免密登录#可以将本机公钥发给远程主机,否则每次执行都会提示出入密码。
#使用ssh命令生成公钥
[root@Linux0 test]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
.......
#然后公钥给到远程主机
[root@Linux0 test]# ssh-copy-id 192.168.75.71#测试是否能够免密登录
[root@Linux0 test]# ssh root@192.168.75.71
#安装rsync服务
[root@Linux0 test]# rsync -av src/ desc/# 同样的步骤在另外一台主机上面操作
- 本地同步到本地的实验
#创建连个目录;一个src,一个desc目录
[root@Linux0 test]# mkdir src desc#语法:rsync + 选项 + 目录/ 本地目录
#src创建一些目录
[root@Linux0 test]# touch src/{1..5}.txt #把desc目录同步到这
[root@Linux0 test]# rsync -av src/ desc/
sending incremental file list
./
1.txt
2.txt
3.txt
4.txt
5.txt
....#如果想要两个目录绝对一直的操作 #首先更变一下两个目录的内容
[root@Linux0 test]# echo hello >> src/aa.txt
[root@Linux0 test]# echo hello >> desc/bb.txt#如果想要绝对一直,需要加上delete选项
[root@Linux0 test]# rsync -av --delete src/ desc/
sending incremental file list
deleting bb.txt #原来bb.txt文件被删除了,
./
aa.txt #多了这个aa.txt文件
....
- 远程同步到本地
- 这个是拉数据的过程
- 从远程主机拉取到本地
#格式说明如下:rsync -av 192.168.75.71:/目录/ 本地目录/rsync -av 192.168.75.71:/目录 /本地目录/#表示将远程目,同步到本地目录。
注意:#要注意不带斜杠会在本地目录创建一个C目录,#如果带上斜杠/,则只会同步C目录下的文件。
#实验:
[root@Linux0 test]# rsync 192.168.75.71:/tmp/ /test/src/#如果要保持所有的数据一致,就--delete
[root@Linux0 test]# rsync -av --delete 192.168.75.71:/tmp/ /test/src/#查看数据
[root@Linux0 test]# ls src/
aa aa.txt bb b.txt
- 本地同步到远程
- 这个就是数据推送的过程
- 把数据从本机推送到远程
#从本地同步到远程
[root@Linux0 test]# rsync -av --delete desc/ 192.168.75.71:/tmp/#查看
[root@Linux1 ~]# ls /tmp/
1.txt 2.txt 3.txt 4.txt 5.txt aa.txt
3.开启shell拓展
#开启shell扩展
[root@Linux1 ~]# shopt -s extglob#准备数据
[root@Linux1 ~]# touch {1..3}.txt
[root@Linux1 ~]# ls
1.txt 2.txt 3.txt anaconda-ks.cfg#使用shell扩展-->删除文件
[root@Linux1 ~]# rm -rf !(anaconda-ks.cfg)
[root@Linux1 ~]# ls
anaconda-ks.cfg
分享环节:
hi,亲爱的朋友们:
- 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
- 资源免费共享;有需要滴滴,(仅仅是我有的)
我的坚持初衷:💕立志要成为一名架构师
- 不断地去坚持学,其中的各种各样的难度,不言而喻~!
- 坚持不是一件容易的事情,但它却是成功的关键。做起来吧~!
如果你也想要坚持:那么组团吧,咋们一块互相监督;一天一点分享也是进步;最怕就是孤军奋战!加油吧,追梦人~!