利用rsync定时备份ftp服务器

第一章 概述

1.1 需求背景:

现有仓内存储硬件为戴尔I5办公台式机,存储设备为奥瑞科磁盘阵列柜,可以设置raid5磁盘阵列,目前存在以下问题,当磁盘阵列或同时损坏2块硬盘时,数据会
丢失,对公司造成财产损失,故对其进行升级

1.2 需求概述:

实现视频服务器数据定时备份至备份服务器,视频文件保留90天,将90天以前的文件进行删除,并邮件反馈结果

1.3 网络规划

FTP服务器:
10.30.31.240 /data/ftp240
备份服务器:
10.30.31.241 /data/ftp241

1.4 硬件规划

FTP服务器:DELL R730 
 OS:CentOS Linux release 7.5.1804 
 系统盘500G
 存储规划:4T企业级硬盘*5 raid5

备份服务器:DELL R320 
 OS:CentOS Linux release 7.5.1804 
 系统盘500G
 存储规划:4T企业级硬盘*5 raid5

1.5 实现思路

两台服务器上配置raid5阵列,安装centos7.5服务
240服务器上安装ftp服务,ftp目录/data/ftp240,虚拟用户alog1----alog1122 ok
241服务器上以守护进程的方式配置sync服务,备份目录:/data/ftp241
240服务器安装rsync服务,数据目录:/data/ftp240
240服务器上编写备份文件脚本,每天凌晨1点进行备份,并将90天之前的文件进行删除
241服务器上编写脚本,利用md5sum进行结果校验,并将备份的结果进行邮件反馈,将90天之前文件进行删除

第二章 FTP服务配置部署

2.1 安装vsftpd和db_load加密工具

yum install -y vsftpd db4-utils
若安装失败,可以手动下载yum源
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6*.rpm

2.2 创建本地用户

作用:用于映射虚拟用户,所有虚拟用户都会映射到此用户后对文件系统进行读写操作

#创建ftp用户目录
mkdir -p /data/ftp240
#创建用户
useradd -d /data/ftp240 -s /sbin/nologin vuser 
#更改权限和主组权限
chmod 755 /data/ftp240
chown vuser.root /data/ftp240

2.3 创建虚拟用户[用户和密码]文件

vim /etc/vsftpd/vuser-list
alog1
alog112

2.4 加密用户密码文件生成数据库文件

db_load -T -t hash -f /etc/vsftpd/vuser-list  /etc/vsftpd/vuser-list.db
chmod 600 /etc/vsftpd/vuser-list.db

2.5 创建PAM认证文件

vim /etc/pam.d/vuser.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list    #注意64位系统写/lib64这个路径,32位系统要写成/lib,下同!
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list

2.6 修改主配置文件

vim /etc/vsftpd/vsftpd.conf

#允许匿名用户访问
anonymous_enable=yes

local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES

listen=NO
listen_ipv6=YES

#修改ftp默认目录到/data/ftp240下面
chroot_local_user=YES
local_root=/data/ftp240
anon_root=/data/ftp240

#pam认证文件
pam_service_name=vuser.vu

#虚拟用户权限配置目录
user_config_dir=/etc/vsftpd/vuser_config

userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
one_process_model=NO

#开启虚拟用户
guest_enable=YES
guest_username=vuser

重启vsftpd服务

systemctl restart vsftpd.service

2.7 创建虚拟用户[权限]配置文件

权限示例1:所有权限

# mkdir -p /etc/vsftpd/vuser_config
# vim /etc/vsftpd/vuser_config/alog1
local_root=/data/ftp240 #设置登录后禁锢的目录
write_enable=yes #开放写权限
anon_world_readable_only=no #开放下载权限
anon_upload_enable=yes #开放上传权限
anon_mkdir_write_enable=yes #开放创建目录的权限
anon_other_write_enable=yes #开放删除和重命名的权限

权限示例2:只有上传下载的权限

local_root=/data/ftp/alog2
anon_upload_enable=yes
anon_world_readable_only=no

2.8 更改虚拟用户目录权限[略]

#如果不更改的话,匿名用户是可以访问到的
chmod 700 /data/ftp240/alog1 

2.9 访问测试

5,设置vsftpd主配置文件:
vim /etc/vsftpd/vsftpd.conf

禁止匿名用户登录

anonymous_enable=NO

允许本地用户登录

local_enable=YES

将FTP本地用户禁锢在宿主目录中

chroot_local_user=YES

修改ftp默认目录到/data/ftp240下面

local_root=/data/ftp240
anon_root=/data/ftp240

启用虚拟账户

guest_enable=YES

把虚拟账户映射到系统账户virftp

guest_username=virftp

虚拟用户和本地用户有相同的权限

virtual_use_local_privs=YES

使用虚拟用户验证(PAM验证)

pam_service_name=vsftpd

设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为其配置文件)

user_config_dir=/etc/vsftpd/vsftpd_viruser

启用chroot时,虚拟用户根目录允许写入

allow_writeable_chroot=YES

6,配置虚拟用户各自的配置文件:

创建‘虚拟用户配置文件’的存放目录

mkdir /etc/vsftpd/vsftpd_viruser/

创建和配置虚拟用户各自的配置文件,文件名为虚拟用户名

vim /etc/vsftpd/vsftpd_viruser/alog1

允许写入

write_enable=YES

允许浏览FTP目录和下载

anon_world_readable_only=NO

允许虚拟用户上传文件

anon_upload_enable=YES

允许虚拟用户创建目录

anon_mkdir_write_enable=YES

允许虚拟用户执行其他操作(如改名、删除)

anon_other_write_enable=YES

上传文件的掩码,如022时,上传目录权限为755,文件权限为644

anon_umask=022

设置登录后禁锢的目录

local_root=/data/ftp240

连接后没有任何操作的超时时间

idle_session_timeout=600

数据传输超时时间

data_connection_timeout=120

最大允许连接的

clients
max_clients=10088

7,关闭root用户亦即其他用户登录权限

vim /etc/vsftpd/ftpusers

8,启动vsftp
systemctl restart vsftpd

二,241上配置rsync

yum install -y rsync

vim /etc/rsyncd.conf

uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /data/ftp240_bak

useradd rsync -M -s /sbin/nologin

mkdir -p /data/ftp240_bak

chown -R rsync.rsync /data/ftp240_bak

echo "rsync_backup:backup@123" >>/etc/rsync.password

chmod 600 /etc/rsync.password

systemctl start rsyncd

三,240上配置rsync

echo "backup@123" >/etc/rsync.password

chmod 600 /etc/rsync.password

rsync -avz /etc/hostname [email protected]::backup --password-file=/etc/rsync.password

四,240上编写脚本

vim /server/scripts/ftp240.sh

!/bin/bash

Backup_dir="/data/ftp240"
IP_info=$(hostname -I)

find $Backup_dir -type f -name +90|xargs rm 2>/dev/null
find \(Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >\)Backup_dir/$IP_info/finger.txt
rsync --aqrtopg --delete $Backup_dir/ [email protected]::backup --password-file=/etc/rsync.password

五,241上编写脚本

vim /server/scripts/ftp241.sh

!bin/bash

check backup data ,md5sum -c根据已生成的md5值,对文件进行校验,MD5文件与待验证的文件在同一个目录中

find /data/ftp240_bak -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt

send check mail

mail -s "check backup info for $(date +%F -d -"1day") data" [email protected] </tmp/check.txt

六,240上设置定时任务
crontab -e

backup data

0 1 * * * /bin/bash /server/scripts/ftp240.sh &>/dev/null

七,241设置定时任务

crontab -e

check backup data

0 9 * * * /bin/bash /server/scripts/ftp241.sh &>/dev/null

服务端的定时任务时间会比客户端稍晚一些,为的是客户端有充足的时间将待备份文件传输完

八,241邮件发送实现

配置163企业邮箱

编写linux服务邮件相关配置文件

yum install mailx

vim /etc/mail.rc

在最后一行新增如下内容:
set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=123456 //授权码
set smtp-auth=login
重启服务加载文件:

systemctl restart postfix.service

第三步 发送邮件测试

[root@backup~]# echo "邮件发送测试"|mail -s "邮件测试" [email protected]
[root@backup~]# mail -s "邮件测试" [email protected] </etc/hosts

猜你喜欢

转载自www.cnblogs.com/nsthink-666/p/13174204.html