文件传输讲解

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,亲爱的朋友们:

  • 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
  • 资源免费共享;有需要滴滴,(仅仅是我有的)

我的坚持初衷:💕立志要成为一名架构师

  • 不断地去坚持学,其中的各种各样的难度,不言而喻~!
  • 坚持不是一件容易的事情,但它却是成功的关键。做起来吧~!

如果你也想要坚持:那么组团吧,咋们一块互相监督;一天一点分享也是进步;最怕就是孤军奋战!加油吧,追梦人~!