今天我们来讨论Linux系统之间的文件共享,包含:SCP、FTP、rz / sz、wget
其实我在写
SSH协议常见问题排错
章节中已介绍其SCP用法。
现我把SCP常用语法格式,给大家说下
scp用法举例:
1.复制文件
scp '本地文件' 远端用户名@远端设备IP:远端文件夹
#举例:scp /home/test.txt [email protected]:/home
2.复制文件夹
## -r:递归复制整个目录
scp -r '本地文件夹' 远端用户名@远端设备IP:远端文件夹
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可;
1.复制文件
scp 远端主机名@远端设备IP:/远端主机文件 /存放在本地的文件夹
#举例: scp [email protected]:/test/test1.txt /tmp
2.复制文件夹
scp -r 远端主机名@远端设备IP:/远端主机文件夹/ /存放在本地的文件夹
目前主流的FTP服务器端软件有很多,包括Vsftpd、FileZilla Server、Server-U等,咱们今天主要讲下使用较为广泛的Vsftpd
Vsftpd:very secure FTP daemon,非常安全的FTP服务进程。
为啥说这货是非常安全的FTP服务进程?小伙伴们可自行Google哦
好了,不说废话了。咱直接实战
Vsftpd安装有两种方式:一是基于yum方式安装;二是基于源码编译安装。
两种方法最终实现效果是一样的,本文采用yum安装Vsftpd,具体步骤如下:
1)在shell命令行中执行如下命令
[root@qll251 ~]# yum -y install vsftpd
2)启动Vsftpd服务、查看进程是否启动 及查看使用的端口
[root@qll251 ~]# systemctl start vsftpd
[root@qll251 ~]# ps -aux |grep vsftpd
root 1960 0.0 0.0 53284 576 ? Ss 13:42 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 1962 0.0 0.0 112728 972 pts/3 S+ 13:43 0:00 grep --color=auto vsftpd
[root@qll251 ~]#
[root@qll251 ~]# netstat -antup | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 1960/vsftpd
[root@qll251 ~]#
3)Vsftpd服务的配置文件:
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
4)客户端访问FTP服务器三种方式
4.1 匿名用户访问FTP
vsftpd默认以匿名用户访问。
默认FTP服务器的共享路径:/var/ftp/pub
修改etc/vsftpd/vsftpd.conf
配置文件
anonymous_enable=YES //允许匿名用户登录FTP服务器。默认为YES
local_enable=NO //禁止本地用户登录FTP服务器。
anon_other_write_enable=YES //允许匿名用户拥有写权限,默认值为NO。
anon_upload_enable=YES //允许匿名用户上传文件。只有write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO。
anon_mkdir_write_enable=YES //允许匿名用户创建目录。只有在write_enable设置为YES时有效。且匿名用户对上层目录有写入的权限。默认为NO。
anon_root=/var/www/html //修改匿名模式下的共享路径。注意:本次试验未修改默认共享路径。
上面提到,如果匿名用户需要上传、修改及删除等权限时,需要对/var/ftp/pub
目录有写权限,使用chown和chmod任意一种命令均可设置权限。
chown -R ftp:ftp /var/ftp/pub/
chmod +w /var/ftp/pub/
如上,vsftpd .conf配置完毕,同时var/ftp/pub
权限设置完毕。接下来我们重启vsftpd服务并且关闭防火墙及关闭selinux即可。
systemctl restart vsftpd //重启vsftpd服务
systemctl stop firewalld && systemctl disable firewalld.service //关闭防火墙并禁止开启自启动`
编辑
/etc/selinux/config
配置文件
改:SELINUX=enforcing
为:SELINUX=disabled
并reboot重启系统使配置永久生效。
重启服务器,我们未设置vsftpd开机自启动哦,我们需要执行
systemctl start vsftpd
,启动vsftpd服务,向外提供FTP服务。
本次试验由于我未关闭系统selinux,导致匿名用户访问FTP服务器后,无法进行创建目录及删除文件操作。折腾了好久,才想明白。
vsftpd是一个FTP服务器程序,SELinux是CentOS的防火墙组件。因此vsftpd 默认被 SELinux 拦截。所有我们要关闭selinux。
以上便是匿名用户访问FTP的方式,接下来我们来讨论系统用户访问FTP如何配置
4.2 系统用户访问FTP
1.创建系统用户,设置登录密码
2.修改vsftpd.conf配置文件
3.重启vsftpd服务;这种模式下,登录访问的目录就是/home/新建用户/
详细配置步骤
(1) 创建系统用户ftp_user,设置密码123456
[root@qll251 ~]# useradd ftp_user
[root@qll251 ~]# echo "123456" | passwd --stdin ftp_user
更改用户 ftp_user 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@qll251 ~]#
(2)修改/etc/vsftpd/vsftpd.conf
配置文件代码如下:
anonymous_enable=NO //禁止匿名用户登录FTP服务器。
local_enable=YES //允许本地用户登录FTP服务器。
write_enable=YES //对登录用户开启写权限。属全局性设置。
local_root=/var/www/html //设置本地用户的根目录为/var/www/html,注意:要保证ftp_user用户对此文件夹具有读写权限(本次试验未修改此项,我共享的目录是/home/ftp_user)
4.3 虚拟用户模式访问FTP
vsftpd虚拟用户原理是通过映射到其中一个真实用户及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统。
我个人认为如果仅为了数据间的传输,以上两种方式已经满足业务需求。大家刚开始学知识的时候,够用就好。所有我就不讨论这种方式的配置步骤了,贪多嚼不烂
rz / sz 是指安装lrzsz软件包后,提供的上传 下载的两个命令。
可以用在windows与linux 系统之间的文件传输,体积小速度快
rz:该命令用于从本地选择文件上传到服务器。
sz:将选定的文件发送到本地机器。
1.下面我们通过YUM来安装lrzsz
yum -y install lrzsz
从本地选择文件上传到服务器。
报错了…
提示:“▒CCCCCCCCCCC23be50ive.**B0100000023be50”
我用的是MobaXterm连接的服务器,要不咱用putty再试试?
putty报了一样的错误,最后大杀招。Xshell !!!
相信正在认真阅读的小伙伴已经发现问题所在了。
rz 与 sz 需要终端支持才可以使用。终端就是连接远程服务器的客户端,例如 XShell、Putty、MobaXterm等。
通过实践,我们得到结论:以上三款终端软件只有Xshell可以正常使用rz,sz进行文件传输。
3.执行sz命令
wget是一个下载文件的工具。
wget支持HTTP,HTTPS,和FTP协议,支持代理服务器以及断点续传功能。
安装wget
[root@qll251 ~]# yum -y install wget
基本语法:
[root@qll251 ~]# wget --help
GNU Wget 1.14,非交互式的网络文件下载工具。
用法: wget [选项]... [URL]...
常用参数:
wget -r //递归下载服务器上所有目录和文件
wget -b //后台下载
wget -c //指定断点续传功能,该功能要求服务器支持断点续传
举个例子:
比如说,我们想下载QQ·Linux版安装包,可直接复制该下载链接到Linux系统中,命令如下:
wget https://qd.myapp.com/myapp/qqteam/linuxQQ/linuxqq_2.0.0-b1-1024_x86_64.rpm
下载已完成,看下图:
(今天我们只讨论wget的使用方法。至于Linux版QQ的安装,感兴趣的小伙伴自行安装体验~
原则上只要是下载链接,都可以用wget下载到服务器中。
于是我有个猜想,把百度云盘上的下载链接提取出来,使用wget是否可达到不限速的效果?感兴趣的小伙伴可自行尝试哦