如何利用云存储网关搭建FTP服务器访问OSS存储

https://yq.aliyun.com/articles/743608linux


背景

云存储文件网关是阿里云提供的存储网关产品,它能够知足用户经过NFS或Samba等协议访问OSS对象存储数据的需求。而经过简单的配置,咱们也能够基于文件网关来配置一台FTP服务器,让用户经过FTP来访问OSS中的数据,实现用FTP客户端上传和下载同步OSS bucket中存储的数据。centos

本文将介绍在linux服务器上如何经过在云存储网关共享上搭建FTP服务器来实现对OSS内数据的分发与共享。bash

准备工做

添加NFS共享

(注:关于如何开通及建立云存储网关,你们能够参考 如何在Linux上挂载OSS Bucket 这篇文章)服务器

首先,经过云存储文件网关管理控制台,为想要经过FTP访问的Bucket添加一个新的NFS共享(若是不须要共享整个bucket,请在建立共享时勾选子目录并填入要共享的子目录路径):阿里云

image

在配置共享时,若是有不少数据须要从OSS反向同步到文件网关的话,建议打开极速同步功能,这样能够保证咱们在OSS中上传的文件及时同步到文件网关中。关于极速同步功能,能够参考 文件网关秒级同步OSS变动对象初体验spa

image

挂载共享目录

接下来,咱们在linux服务器上建立/ftp目录,并将新建立的nfs共享挂载到/ftp目录下:code

# 1. 建立ftp服务器使用的目录
[root@csg ~]# mkdir -p /var/ftp/oss-bucket

# 2. 使用showmount 命令查看新建立的网关共享
[root@csg ~]# showmount -e <网关IP地址>

# 3. 挂载共享目录到/var/ftp/oss-bucket目录下
[root@csg ~]# mount -t nfs <网关IP地址>:<共享路径> /var/ftp/oss-bucket

# 4. 查看目录挂载状态
[root@csg ~]# df -h /var/ftp/oss-bucket

搭建ftp服务器

1. 安装ftp服务

咱们以centos 为例,安装ftp服务vsftpd:server

[root@csg ~]# yum -y install vsftpd

2. 添加ftp用户

[root@csg ~]# useradd ftpuser1
[root@csg ~]# passwd ftpuser1

3. 配置vsftpd

[root@csg ~]# vi /etc/vsftpd/vsftpd.conf
## 常规配置
# line 12: 关闭匿名用户登录
anonymous_enable=NO
# line 82,83: 容许ascii模式访问
ascii_upload_enable=YES
ascii_download_enable=YES
# line 100, 101: 使能chroot
chroot_local_user=YES
chroot_list_enable=YES
# line 103: 指定chroot用户列表配置文件路径
chroot_list_file=/etc/vsftpd/chroot_list
# line 109: 使能ls recurse
ls_recurse_enable=YES
# line 114: 若是使用ECS IPV4地址,修改下面一行并按需关闭IPV6
listen=YES
# line 123: 
listen_ipv6=NO

# 添加下面几行配置到配置文件中
# 修改使用的chroot目录,咱们配置为挂载了文件网关NFS共享的路径 (若是不指定的话,会默认使用ftp用户的home目录而不是NFS挂载目录)
local_root=/var/ftp/oss-bucket

# 使用本地时间
use_localtime=YES
# 关闭seccomp filter
seccomp_sandbox=NO

# 指定客户端passive模式访问端口,可自由指定
pasv_min_port=12001
pasv_max_port=12005
# 添加chroot容许用户
[root@csg ~]# vi /etc/vsftpd/chroot_list
# 添加容许chroot的ftp用户
ftpuser1

启动vsftpd服务

[root@csg ~]# systemctl start vsftpd
[root@csg ~]# systemctl enable vsftpd

若是开启了防火墙,须要添加规则容许ftp端口的访问:对象

[root@csg ~]# firewall-cmd --add-service=ftp --permanent
success
[root@csg ~]# firewall-cmd --reload
success

若是开启了selinux,须要容许ftp访问blog

[root@csg ~]# setsebool -P ftpd_full_access on

访问ftp/sftp服务器

配置完成后,咱们就能够使用ftp客户端来访问部署好的ftp服务器了,咱们以fileZilla客户端为例,使用ftpuser1这个用户登录ftp服务器,并尝试上传一个f文件到ftp服务器:

image

图: 登录并上传文件到ftp server

上传成功后,登录到OSS控制台,到云存储网关配置共享的bucket对应的目录下查看,能够查看到刚刚上传的文件,实现了经过FTP客户端向OSS上传的功能:

2C8457A0_20EF_4A77_8597_B02108CA6E12

图:在OSS控制台访问ftp client新上传的文件

一样,在文件网关打开极速同步或反向同步功能后,文件网关也能够反向同步OSS上的数据更新,让FTP的客户端获取到OSS上新上传的文件列表,下载OSS中新上传的文件。

总结

经过基于云存储网关的NFS共享搭建FTP服务器,能够让用户使用ftp访问OSS中的数据,实现用FTP客户端上传数据到OSS和下载OSS中的数据的功能,让文件共享与分发更加的方便。