shell脚本备份服务并上传

cat redis.sh
#!/bin/bash
#--------------------------------------------------  
#Created:2015-04-29
#Author:jimmygong
#Mail:[email protected]
#Function:backup redis && ftp
#Version:1.0
#--------------------------------------------------
if [[ `id -u` -ne 0 ]]
then
    echo "sctipts need root"
    exit 1
fi
set -o nounset
localip=`ifconfig eth0|awk ‘/inet addr:/‘|awk -F: ‘{print $2}‘|awk -F" " ‘{print $1}‘`
currdate=`date +%Y%m%d`
redisdir="/var/lib/redis"
redisfile="dump.rdb"
redisport="6379"
rediscmd="/usr/bin/redis-cli"
redisbackupdir="/opt/redisbackup/${currdate}"
redisbackuplog="/opt/redisbackuplog/"
targz="${localip}.${redisfile}.tar.gz"
ftphost="10.1.10.133"
ftpport="21"
ftpuser="ftpup"
ftppass="ftpup"
[[ -d ${redisbackupdir} ]] || mkdir -p ${redisbackupdir}
[[ -e /usr/bin/nmap ]] || apt-get -y install nmap --force-yes > /dev/null 2>&1
echosucc () 
{
    echo "Ok"
}
echofail () 
{
    echo "Fail"
    exit 1
}
function echoresult () 
{
    if [[ $? == ‘0‘ ]]
    then
        echosucc
    else
        echofail
    fi
}
function exportlog ()
{
    [[ -d ${redisbackuplog} ]] || mkdir -p ${redisbackuplog}
    logfile=${redisbackuplog}/${currdate}.${localip}.log
    exec > ${logfile} 2>&1
} 
function bgsave () 
{
    echo -n "Bgsave:"
    ${rediscmd} -h ${localip} -p ${redisport} bgsave > /dev/null 2>&1
    echoresult
}
function backup () 
{
    echo -n "Targz:"
    cd ${redisdir} && cp ${redisdir}/${redisfile} ${redisbackupdir}
    cd ${redisbackupdir} && tar czf ${targz} ${redisfile} && rm -f ${redisbackupdir}/${redisfile}
    echoresult
}
function ftpcheck () 
{
    echo -n "FtpServer:"
    nmaphost=`nmap ${ftphost} -p ${ftpport}|grep "open"|wc -l`
    [[ ${nmaphost} -eq 1 ]] && echo "Ok"
}
function ftpcmd () 
{
    file=$1
    ftp -in<<EOF
    open ${ftphost}
    user ${ftpuser} ${ftppass}
    cd 11
    mkdir ${currdate}
    cd ${currdate}
    mkdir ${localip}
    cd ${localip}
    mput ${file}
    quit
EOF
}
function ftpputfile () 
{
    ftpcheck
    echo -n "FtpFile:"
    cd ${redisbackupdir}
    for i in `ls`
    do
        ftpcmd $i
    done
    echoresult
}
function delete () 
{
    echo -n "Delete:"
    cd ${redisbackupdir} && find -name "*.tar.gz" -mtime +30|xargs -i {} rm -f
    echoresult
}
function ftpputlog () 
{
    cd ${redisbackuplog}
    ftp -in<<EOF
    open ${ftphost}
    user ${ftpuser} ${ftppass}
    cd 11
    mkdir log
    cd log
    mput ${currdate}*.log
    quit
EOF
}

exportlog
bgsave
backup
ftpputfile
delete
ftpputlog
exit 0
=============================说明=============================================
bash redis.sh
执行结果
ll /opt/redisbackup/20150429/
-rw-r--r-- 1 root root 148 2015-04-29 23:20 10.1.10.133.dump.rdb.tar.gz
ll /opt/redisbackuplog/
-rw-r--r-- 1 root root 53 2015-04-29 23:20 20150429.10.1.10.133.log
cat /opt/redisbackuplog/20150429.10.1.10.133.log 
Bgsave:Ok
Targz:Ok
FtpServer:Ok
FtpFile:Ok
Delete:Ok

ftp那边
ll /opt/backup/11/20150429/10.1.10.133/
total 4
-rw------- 1 ftpup ftpup 148 2015-04-29 23:20 10.1.10.133.dump.rdb.tar.gz
ll /opt/backup/11/
20150429/ log/      
cat /opt/backup/11/log/20150429.10.1.10.133.log 
Bgsave:Ok
Targz:Ok
FtpServer:Ok
FtpFile:Ok
Delete:Ok

redis-cli -h 10.1.10.133 -p 6379
redis 10.1.10.133:6379>bgsave
Background saving started
在后台异步(Asynchronously)保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,
原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
http://redisdoc.com/   #redis命令参考

因为需要测试脚本是否能正常备份 需要安装redis-server和ftp 
redis-server(centos6.6)epel源上就有
redis.x86_64 2.4.10-1.el6 @epel
redis-server(debian5.0.1)
wget mirror.wh-stuttgart.net/apt-mirror/packages.dotdeb.org/dists/wheezy/redis/binary-amd64/redis-server_2.6.14-1~dotdeb.1_amd64.deb
proftpd(debian5.0.1)
安装apt-get -y install proftpd

cat /etc/redis/redis.conf|egrep -v "^#|^$" |egrep "port|dbfilename|dir"
port 6379
dbfilename dump.rdb
dir /var/lib/redis

shell的内置命令命令exec
exec > ${logfile} 2>&1

cat /etc/debian_version 
5.0.1
时间: 2024-10-29 23:48:21

shell脚本备份服务并上传的相关文章

使用shell脚本备份redis并上传到ftp服务器

cat redis.sh #!/bin/bash #--------------------------------------------------   #Created:2015-04-29 #Author:jimmygong #Mail:[email protected] #Function:backup redis && ftp #Version:1.0 #-------------------------------------------------- if [[ `id -

linux计划任务自动备份并ftp上传脚本

#!/bin/sh # 备份 #bak_dir=`date +%C%y%m%d%H%M` ##文件命名规则可以是时间 backup_dir=/home/IPTV4.9 ##存储备份文件路径 mkdir -p $backup_dir Ip_addr=`ifconfig \`route |grep default |awk '{print $8}'\` |grep Bcast |awk -F: '{print $2}' |awk '{print $1}'` Host_name=`hostname`

Vbs脚本将本地文件上传到Azure存储账户

说到Azure相信大家都已经非常熟悉了,所以就不做多介绍了,我们都知道在Azure上有一个存储账户,在存储账户下可以可以创建容器,可以存放数据,近期公司呢为了达到数据的安全性,准备将本地的备份数据给Azure存储账户下备份一份: Azure提供了很多方法可以将本地的文件上传到Azure存储账户下,比如Powershell.Azcopy.存储文件管理工具,但是存储工具和powershell不支持断点续传,只有Azcopy支持断点续传,所以我们就用Azcopy进行数据的传输,在此说一下Azcopy也

oracle备份以及定时上传备份服务器

我把备份oracle以及上传备份服务器的脚本贴出来给你们做一下参考. [[email protected] ~]-cat expDB_DailyBackup.sh #---------------------------Set Parameter---------------------------------------- ENVFILE="/etc/profile" EXITCODE=0 uDate=`date +'%Y%m%d'` Week=`date +'%a'` dbBack

用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.添加wifi密码账户add_wifi_account: 2.wifi两种模式启动的脚本wifi_start: 3.帮助信息README_WIFI_START: 具体实现过程如下: 添加wifi密码账户add_wifi_account 1 #!/bin/sh 2 3 echo "Add Wifi Account ..." 4 5 if

网络编程 UDP协议 TCP局域网客户端与服务端上传下载电影示例

UDP协议 (了解) 称之为数据包协议. 特点: 1) 不需要建立链接. 2) 不需要知道对方是否收到. 3) 数据不安全 4) 传输速度快 5)能支持并发 6) 不会粘包 7) 无需先启动服务端再启动客户端 优点: - 传输速度快 - 能支持并发 - 不会粘包 缺点: - 数据不安全, 容易丢失 应用场景: 早期的QQ聊天室. # server端 import socket # socket.SOCK_DGRAM ---> UPD协议 server = socket.socket(type=s

linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)

#========================start shell 脚本============================ #!/bin/bash #定义备份数据库时使用的用户名和密码 db_user="root" db_passwd="111111" #定义FTP服务器地址.用户名.密码.目录 ftp_url=113.108.8.80 ftp_user=ftpuser ftp_passwd=111111 ftp_dir=/mysql_backup/xx

[Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk)

背景: 凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等.也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSS SDK来上传文件,简单方便. 步骤: 1.首先需要在阿里云注册账号,开通OSS服务,创建bucket,Bucket设置为私有读写. 2.将下面的脚本文件复制下来,保存为 .sh 脚本文件(例如:bac

shell脚本之不同系统上ftp交互使用

场景:当公司将有文件要自动将ubuntu系统的文件要上传到windows上面,或者windows上的文件要下载到ubuntu上面,尤其是像什么日志啊,编译结果啊,测试结果啊等等,做个备份或者做分析处理等. 下面是shell脚本模板: !/bin/bash #上传文件 ftp -v  -niv  <<EOF                                  #EOF附件没有空格,不然会报错 open  192.168.1.1