Linux环境下部署FTP服务器并配置定时对FTP中的文件进行备份

本文详细介绍了如何在Linux(CentOS)上安装vsftpdFTP服务器,包括检查安装状况、在线/离线安装、配置文件修改、用户及防火墙设置。接着,文章讲解了如何利用lftp进行FTP文件的自动备份,包括安装lftp、测试同步命令和设置cron定时任务。最后强调了FTP服务器的安全性问题,如禁用匿名登录和开启SSL/TLS加密。
摘要由CSDN通过智能技术生成

Linux作为一个开源操作系统,在企业应用领域具有广泛的应用。很多企业需要在Linux环境下部署FTP服务器,并进行定时文件备份。本文将介绍如何在Linux环境下部署FTP服务器并配置定时对FTP中的文件进行备份

FTP安装

检查安装状况

首先需要在Linux环境下搭建一个FTP服务器,这里以CenOS环境下为例

首先检查是否安装了ftp服务

rpm -qa | grep ftp

image-20230409104133428

确认安装了需要卸载可以执行一下命令进行卸载

rpm -e --nodeps vsftpd-3.0.2-29.el7_9.x86_64
在线安装

确认服务器中没有安装ftp后,执行以下命令安装vsftpd服务

yum install -y vsftpd
离线安装

如果操作的服务器无法访问外网,可以找一台可以连接外网相同操作系统的服务器,或者本地装一个虚拟机,下载vsftpd安装包

yum install --downloadonly --downloaddir=<your_path> vsftpd
  • your_path:这里是指下载的安装包所存放的路径,这里我把路径使用/home/temp/vsftpd

切换到我的home/temp/vsftpd目录下可以看到已经下好相关安装文件

cd /home/temp/vsftpd

image-20230409105837858

将下载下来的rpm文件拷贝到需要安装FTP服务的服务器中,执行

rpm -Uvh *.rpm --nodeps --force

至此vsftpd服务安装完成,可以通过一下命令查看一下安装的vsftpd的版本

vsftpd -version

FTP配置

确认安装好FTP服务后,我们首先确定配置文件的位置:

cd /etc/vsftpd

image-20230409110733920

修改配置文件

执行vi命令修改配置文件

vi vsftpd.conf
  • 修改anonymous_enable=NO#不允许匿名访问(不登录默认访问某目录)

image-20230409111109866

  • listen listen_ipv6修改为listen=YES , listen_ipv6=NO禁用IPV6

image-20230409111608233

  • 手动添加其他配置:
chroot_local_user=YES  #所有用户都限制在其FTP主目录下
chroot_list_enable=NO  #不使用列外的用户列表
allow_writeable_chroot=YES  #允许用户对主目录有写权限
user_config_dir=/etc/vsftpd/userconfig  #配置FTP用户登录指向主目录配置文件位置
pasv_enable=YES #被动模式
pasv_min_port=21100 #pasv连接模式时可以使用port 范围的上界,0表示任意
pasv_max_port=21110 #pasv连接模式时可以使用port 范围的下界。
userlist_deny=NO  #NO代表userlist是白名单
userlist_file=/etc/vsftpd/user_list  #配置登录FTP白名单用户文件位置

这里当userlist_enable为YES, userlist_deny为NO时,FTP服务器仅允许user_list中的用户访问。

image-20230409133737150

配置用户

新建一个文件夹用户FTP的工作目录

mkdir /home/vsftpd

创建用户并指定主目录(不能ssh远程登录)

useradd -d /home/vsftpd/data -s /sbin/nologin vsftp

image-20230409121911906

设置用户密码

passwd vsftp

向FTP登录白名单添加用户

vim /etc/vsftpd/user_list

在文件末尾加入之前创建的linux账号vsftp

image-20230409122415473

创建存放用户FTP主目录配置文件的文件夹

mkdir /etc/vsftpd/userconfig

创建与用户同名的文件在其中配置用户目录路径

vim /etc/vsftpd/userconfig/vsftp

文件中添加

local_root=/home/vsftpd/data

这里如果要指定其他的文件夹,需要保证文件夹存在,如果不存在,登陆会报错

修改local_root配置的文件夹的访问权限

# 将刚创建的目录拥有者更换为vsftp用户组下的vsftp用户
chown vsftp:vsftp /home/vsftpd/data
# 为目录设置访问权限,700的意识是除目录拥有者外同组或其他用户均无权限
chmod 700 /home/vsftpd/data

image-20230409202724278

重启FTP服务

systemctl restart vsftpd
配置防火墙

此时使用相关FTP工具测试连接,发现无法连接,这个时候需要配置防火墙,打开相关端口

firewall-cmd --add-port=21/tcp --permanent

读取目录列表失败,需要在防火墙上开启ftp服务

firewall-cmd --add-service=ftp --permanent 

上传文件失败,需要开放上传端口

firewall-cmd --add-port=21100-21110/tcp --permanent

重启防火墙

firewall-cmd --reload 

配置好防火墙之后正常来说就可以连接了,我们用FTP客户端测试连接

image-20230409132817907

如果报错530错误,我们需要查看登陆账号的主目录和登陆Shell是什么

cat /etc/passwd

image-20230409133054811

这时再次查看/etc/shells 是否有自己登录的shell如果没有则需要添加:

vim /etc/shells

这里我们查找/etc/shells没有/sbin/nologin,我面把它加在文件的最后

image-20230409133204211

再次测试登陆就可以登陆了

image-20230409133455437

FTP自动备份

lftp安装

登陆另一台备份用的目标服务器安装lftp工具

yum -y install lftp

image-20230408234702303

确认lftp安装好之后,创建备份文件夹

mkdir /home/vsftpd/data
测试同步命令

此时我们2台服务器准备好了:

  • 192.168.99.102: FTP服务器
  • 192.168.99.101: 备份目标服务器

创建好文件夹之后,我们连接之前配置的FTP服务器,上传一个测试文件验证FTP文件是否正常

image-20230409202836182

此时查看目标备份的目录下文件/home/vsftpd/data下没有文件

image-20230409203401692

我们执行测试数据同步命令:

lftp -u <ftp_name>,<ftp_pwd> <ftp_ip> -e "mirror --verbose --delete --only-newer <source_path> <target_path>; quit"
  • ftp_name: 之前配置FTP服务的访问用户名,这里是vsftp
  • ftp_pwd:FTP用户对应的密码
  • ftp_ip:FTP服务器的访问IP或者域名
  • source_path:需要备份的FTP远程文件夹
  • target_path:本地目标服务的备份目录
  • –verbose: 设置监视级别,范围 0-3,0 表示不输出,3 表示输出全部
  • –delete: 删除远程目录上不存在的文件
  • –only-newer: 只下载新文件(-c参数无法工作)
lftp -u vsftp,vsftp@123 192.168.99.102 -e "mirror --verbose --delete --only-newer / /home/vsftpd/data; quit"

image-20230409205431507

这里报错500 OOPS: chroo这个可能是SELinux造成的

SELinux是linux的一个内核模块,是linux的安全子系统。
SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
我们可以手动关闭它
getenforce查看SELinux状态
Enforcing是代表强制的意思
setenforce 0关闭SELinux(临时)
Permissive是放纵的,任由.

此时我们回到FTP服务器执行

getenforce

image-20230409205652598

再执行:

setenforce 0

image-20230409205806526

此时回到目标服务器再次执行同步命令,就会得到如下结果

image-20230409210653372

设置定时任务

我们可以使用cron来定时运行lftp命令。cron是一个Linux系统中的定时任务管理器,可以让您在指定的时间间隔内运行命令。

要使用cron定时运行lftp命令,请按照以下步骤操作:

crontab -e

为了验证定时任务是否有效我们临时将定时任务设置成每分钟执行一次,在文件末尾添加以下行:

*/1 * * * * lftp -u vsftp,vsftp@123 192.168.99.102 -e "mirror --verbose --delete --only-newer / /home/vsftpd/data; quit"

我们通过以下命令查看定时任务

crontab -l

image-20230409212219644

回到FTP服务器,新建一个文件夹test

image-20230409212417419

等待一分钟后,我们回到目标文件夹,可以看到文件夹test被同步过来了,说明定时任务有效

image-20230409212556767

同步FTP我们不需要太高的实时性,所以我们可以将lftp命令设置每小时的0分钟运行一次。可以根据需要更改时间间隔。

0 * * * * lftp -u vsftp,vsftp@123 192.168.99.102 -e "mirror --verbose --delete --only-newer / /home/vsftpd/data; quit"

image-20230409211510869

至此,我们就可以定时的备份FTP服务器的文件了.

本文介绍了在Linux环境下部署FTP服务器并配置定时对FTP中的文件进行备份的方法,希望能够帮助读者解决相关的技术难题。同时,我们也提醒读者,在使用FTP服务器时要注意安全性问题,禁用匿名登录和开启SSL/TLS加密等措施,以确保数据的安全。若您在实践过程中遇到任何问题,欢迎留言讨论。

PDF版具体操作步骤,供下载后本地预览

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

推到油瓶不扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值