最近要把服务器托管到电信机房,所以要对数据库进行备份,同时要把备份ftp上传到公司指定服务器。
一、先安装ftp服务
1、查询是否安装vsftpd: rpm -qa |grep vsftpd
(rpm的安装:apt-get install rpm)
或者查询当前ftp进程:ps -ef|grep vsftpd 或者 ps -ef|grep ftp
2、如果没有就安装yum install vsftpd
3、安装完后看ftp安装目录:ps -ef|grep ftp
发现我的配置文件默认:/etc/vsftpd/vsftpd.conf
4、vsftpd服务器的启动、停止、重启、状态
service vsftpd start 或./etc/init.d/vsftpd start
service vsftpd stop 或./etc/init.d/vsftpd stop
service vsftpd restart 或./etc/init.d/vsftpd restart
service vsftpd status 或./etc/init.d/vsftpd status
5、测试[root@localhost mysql_data]# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
6、修改ftp默认密码:passwd ftp
7、下载一个8uftp工具登录看看是否可以正常登录
8、设置开机启动:chkconfig vsftpd on
9、修改默认配置,禁止匿名用户登录,允许ftp上传文件打开。
vi /etc/vsftpd/vsftpd.conf
把 anonymous_enable=YES 修改为anonymous_enable=NO ,注意不是注释掉,要改成NO才可以,注释掉默认是yes。
把write_enable=YES //允许上传
service vsftpd restart 重启一下服务
10、用8ufp上传文件试试,如果不行,那就是SELinux安全设置有问题
sestatus -b| grep ftp
allow_ftpd_anon_write off
allow_ftpd_full_access off
allow_ftpd_use_cifs off
allow_ftpd_use_nfs off
ftp_home_dir off
ftpd_connect_db off
ftpd_use_fusefs off
ftpd_use_passive_mode off
httpd_enable_ftp_server off
tftp_anon_write off
tftp_use_cifs off
tftp_use_nfs off
设置allow_ftpd_full_access 为打开setsebool -P allow_ftpd_full_access on
再查询一遍,如果为打开的情况:service vsftpd restart 重启服务再试试是否可以上传。
ftp上传文件553 Could not create file. 问题,setsebool 命令使用和参考
http://www.ithov.com/linux/130713.shtml
http://blog.chinaunix.net/uid-26727991-id-3235275.html
ftp安装和使用参考
http://blog.itpub.net/22578826/viewspace-763780/
http://www.cnblogs.com/hnrainll/archive/2011/02/16/1956538.html
http://blog.chinaunix.net/uid-23365147-id-2427229.html
二、下面是定时备份数据库和ftp上传备份数据库脚本,默认保留7天备份数据
1、创建保存备份文件的目录:/home/mysql_data
cd /home #进入目录
mkdir mysql_data #创建目录
2、创建备份脚本文件:/home/mysql_data/mysql_databak.sh
3、修改文件属性,使其可执行
chmod +x /home/mysql_data/mysql_databak.sh
4、修改/etc/crontab
vi /etc/crontab #在下面添加,每天凌晨0点26分自动执行脚本
26 * * * * root /home/mysql_data/mysql_databak.sh
配置每周一到周五每天10点1分执行:1 10 * * 1-5
5、重启定时任务:service crond restart
================脚本开始======================
#!/bin/sh
#DUMP=/usr/bin/mysqldump #mysqldump备份程序执行路径
OUT_DIR=/home/mysql_data #备份文件存放路径
LINUX_USER=root #系统用户名
DB_NAME=mydb #要备份的数据库名字
DB_USER=root #数据库用户名
DB_PASS=123456 #密码
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
cd $OUT_DIR #进入备份存放目录
DATE=`date +%Y_%m_%d` #获取当前系统时间
HourMin=`date +%H%M` #获取当前系统时间时分
OUT_SQL="mydb_dump$DATE" #备份数据库的文件名
TAR_SQL="mydb_dump$DATE.tar.gz" #最终保存的数据库备份文件名
#$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #备份
#上面那条是别人备份用的语句,我平常用的是下面的,/usr/local/mysql/bin/mysqldump为mysql安装目录,必须写对路径
/usr/local/mysql/bin/mysqldump -u$DB_USER -p$DB_PASS -R --single-transaction --add-drop-database --databases $DB_NAME > $OUT_SQL
tar -zcvf $TAR_SQL $OUT_SQL #压缩为.tar.gz格式
rm $OUT_SQL #删除最原始为压缩的备份文件
#chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL #更改备份数据库文件的所有者
chown $LINUX_USER:$LINUX_USER $TAR_SQL #更改备份数据库文件的所有者
find $OUT_DIR -name "mydb_dump*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件(注意:{} \;中间有空格)
deldate=` date -d -7day +%Y_%m_%d ` #删除ftp服务器空间7天前的备份
#fpt 登录 ,如果要单独测试下面的ftp脚本是否正常,需要去掉<<! 字符。同时如果端口号不是21要指定新端口2121:ftp -v -n 192.168.1.1 2121
ftp -v -n 192.168.1.1<<!
user ftp 123456
binary #设置二进制传输
cd mysql_data #进入ftp目录
lcd /home/mysql_data #列出本地目录
prompt
mput mydb_dump$DATE.tar.gz #上传目录中的文件
mdelete mydb_dump$deldate.tar.gz #删除ftp空间7天前的备份
close
bye !
==================脚本结束==================
ftp登录写法还有下面的,两种都试过,可以用。
ftp -n<<!
open 192.168.1.1 21
user ftp 123456
binary #设置二进制传输
ftp -n<<!
-n 不受.netrc文件的影响(ftp默认为读取.netrc文件中的设定)
<< 是使用即时文件重定向输入,<<后面可以跟任何字符,但是ftp命令结束后,要成对出现,即一个开始一个结束。
!是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。(你也可以不用“!”,比如使用一对“INPUT_TEXT”也是可以的)
即时文件是UNIX输入重定向的一种技术,本来输入重定向要求从文件中读取内容,但即时文件可以把程序所需输入内容的
内容直接写出来,就是你在上面例子中看到的那样。
参考:http://www.2cto.com/database/201305/208680.html
=========================================
三、定时任务
1、检查定时任务是否安装或启动中service crond status (本人机器) ,有些好像是用service cron status
2、查看系统启动时加载的服务列表里面是有chkconfig --list相关的服务chkconfig --list crond
3、没有就安装
重启crond服务的时候出现:crond: unrecognized service.
貌似没有装crond,于是找到crond的安装方法。亲测可行
安装crontab
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs
说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
用以下的方法启动、关闭这个cron服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
加入开机自动启动:
chkconfig –level 35 crond on
参考:http://www.ha97.com/910.html