文章目录
- 前言
- 一、配置本地用户可上传权限ftp服务器
- 1、用户登录ftp
- 二、配置FTP上传脚本文件
- 1.脚本代码如下
- 补充知识
前言
vsftpd(Very Secure FTP Daemon)是一个在 Linux/Unix 系统上运行的一款开源免费的 FTP 服务器软件。vsftpd 支持支持 匿名用户、本地用户、虚拟用户 3种登录方式。vsftpd 高速安全,支持带宽限制,支持IPv6,可分配虚拟IP,支持创建虚拟用户。
提示:以下是本篇文章正文内容,下面案例可供参考
一、配置本地用户可上传权限ftp服务器
[root@node2 ~]# yum install vsftpd -y
1、创建本地用户
[root@node2 ~]# useradd backuper
[root@node2 ~]# echo redhat | passwd --stdin backuper
2、本地用户上传目录
[root@node2 vsftpd]# mkdir -p /data/ftp
[root@node2 vsftpd]# chown -R backuper /data/ftp
3、修改ftp配置文件
进入到 vim /etc/vsftpd.conf 进行文件配置,刚开始进去就是空白的,讲以下的代码写入进去,然后保存anonymous_enable=NOlisten=YESlisten_ipv6=NOuserlist_deny=NOlocal_root=/data/ftp
4、设置白名单
[root@node2 vsftpd]# echo backuper > user_list
5、重启服务:
[root@node2 vsftpd]# systemctl restart vsftpd
6、安装客户端
[root@node1 ~]# yum install ftp lftp -y
以上三步一般都不会有问题的,直接跟着敲就好了
1、用户登录ftp
二、配置FTP上传脚本文件
1.脚本代码如下
代码如下(示例):
#!/bin/bash#定义当天的时间
nowdate=`date +%Y%m%d`#获取7天前的日期,删除ftp服务器空间7天前备份
deldate=$(date -d -7day +%Y%m%d)#定义备份文件存放的目录
MPATH=/backupftp -v -n 192.168.40.142<<EOF
user backuper redhat
binary
hash
mkdir ${nowdate}
cd ${nowdate}
lcd ${MPATH}
mput *.*
close
bye
#here document
EOF
echo "successfully"
[root@master shell]# ./test6.sh
Connected to 192.168.40.142 (192.168.40.142).
220 (vsFTPd 3.0.2)
530 Permission denied.
Login failed.
530 Please login with USER and PASS.
Hash mark printing on (1024 bytes/hash mark).
530 Please login with USER and PASS.
530 Please login with USER and PASS.
Local directory now /backup
mput mysql_bak.2023-07-22.sql? 530 Please login with USER and PASS.
Passive mode refused.
mput percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm? 530 Please login with USER and PASS.
Passive mode refused.
mput school.sql? 530 Please login with USER and PASS.
Passive mode refused.
mput school.sql.gz? mput school1.sql? mput school2.sql? mput schoolbabe.sql? mput shcool.sql.gz? mput shcool3.sql? mput student.sql? 221 Goodbye.
successfully
这里有一个问题,就是提示530问题,我去搜索了一下需要关闭ftp的enable服务,将这里的userlist_enable注释掉
原因:
因为检测不到文件,但是文件又被启用,所以导致了账号和密码无法找到,故无法登陆,
原以为脚本修改得有问题,折腾了快一个小时,才发现应该是ftp的问题,第一次接触ftp,所以导致不是特别熟练
补充知识
1、
ftp -v -n 192.168.40.142<<EOF
<< 是使用即时文件重定向输入
EOF是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。
FTP常见标识 | 作用 |
---|---|
-d | 使用调试模式,但必须编辑 /etc/syslog.conf 文件并添加以下中的一项:user.info FileName 或 user.debug FileName。 |
-g | 禁用文件名中的元字符拓展,即取消全局文件名。 |
-i | 关闭多文件传输中的交互式提示。 |
-n | 防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。 |
-v | 显示远程服务器的全部响应,并提供数据传输的统计信息,即在程序运行时显示详细的处理信息。 |
2、传输文件类型
FTP传输文件类型 | 作用 |
---|---|
ascii | 将文件传输类型设置为网络 ASCII。此类型为缺省值,即默认使用ascii方式进行传输。 |
binary | 将文件传输类型设置为二进制映像。需要使用binary方式传输的文件类型有ISO文件、可执行文件、压缩文件、图片等。此类型可能比 ASCII 传送更有效。 |
ebcdic | 将文件传输类型设为 EBCDIC。 |
image | 将文件传输类型设置为二进制映像。此类型可能比 ASCII 传送更有效。 |
local M | 将文件传输类型设置为本地。M 参数定义每计算机字位的十进制数。此参数没有缺省值。 |
tenex | 将文件传输类型设为 TENEX 机器需要的类型 |
3、文件传输
下载文件
下载多个文件
mget [remote-files] | 获取远端所在文件夹下所有文件 |
---|
mget *
and
met *.*
mget . 每下载一个文件,都会有提示。如果要除掉提示,则在mget . 命令前先执行:prompt off。
下载单个文件
get [remote-file] [local-file] | 获取远端FTP上的a.txt文件 |
---|
get a.sh
上传文件
上传多个文件
mput local-files | 将所在文件夹下所有文件上传到FTP上 |
---|
mput *
上传单个文件
put local-file [remote-file] | 将本地a.txt文件上传到远端FTP上 |
---|
put a.sh
4、分界符标志
<< EOF
#execute shell
EOF
EOF只是一个分界符标志,完全可以用abc, ! 等替换,也一样的功能,只是大家都习惯用EOF来表示。 <<用法:当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。因此分界符可以是定义的任何字符串。