VPS自动备份到FTP的脚本

声明一下我示例的文件目录结构:我在/home下操作,自动脚本名称为backup.sh(放置于/home目录下),VPS本地本分目录为/home/backup

1)确保自己在home目录(若不是,运行:cd /home)

2)新建backup文件夹(命令:mkdir backup)

3)新建脚本backup.sh

vi backup.sh

复制以下代码(复制完后:wq!保存哦~):

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root #mysql用户名
MYSQL_PASS=123456 #mysql密码
FTP_USER=CAOPENG #ftp用户名
FTP_PASS=123456 #ftp密码
FTP_IP=ftp.CAOPENG.com #ftp地址
FTP_backup=backup #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/wwwroot #要备份的网站数据
#你要修改的地方从这里结束
#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -5day +”%Y%m%d”).tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

因为Email功能我认为比较鸡肋,所以我给去除了~

 4)测试脚本运行如何

sh backup.sh

5)给脚本添加权限

chmod +x backup.sh

6)添加每日自动运行命令(每天00:00自动运行)

crontab -e

00 00 * * * /home/backup.sh

LINUX VPS自动定时备份数据

一个网站最重要的东西就是数据,可想而知,一个你辛辛苦苦建立的网站因为数据丢失而得重新来过的心情.如果你不想体会这个心情,定时备份网站的数据就是最好的办法.

但人也有很忙的时候,有疏忽的时候,你总是有可能不能定时的备份数据.如果在你刚刚忘记备份的时候发生了丢失数据,那也是个大大杯具.

为了不让这种杯具发生.我们可以充分利用计算机的任务计划来帮我完成这个定时备份的任务.

在linux系统下,使用

crontab -e

命令就能调出系统任务计划

其使用方法和VI命令一样,按i开始输入命令,其格式为

* * * * * 要定时运行的命令或脚本

前面的五个星号依次代表 分钟 小时 日期 月份 星期 ,全部用阿拉伯数字表示.*号是通配符.这样说你可能不是很明白.举个例子,如果你前面填的是五个*号,那么就代表你这个任务计划是1分钟执行一次.第一个*号用1代替,就代表在每个小时的第一分钟执行一次(一小时执行一次),第二个*号填的是24的话,代表在24时执行任务计划(一天一次),依次类推,你可以很详细的定义任务计划执行的时候,次数,频率!

VPS备份网站数据的五种方案

一、SCP命令(两台Linux之间的备份)
如果你有两个Linux的VPS,只要求每天定时备份一台VPS的数据到另一个VPS,那么使用SSH下的SCP命令无疑是比较好的解决方案。scp是secure copy的缩写,顾名思义是指安全复制,SCP备份速度快且是加密传输,安全性高。

二、LFTP软件(FTP增量备份)
LFTP是一款非常著名的字符界面的文件传输工具。支持FTP、HTTP、FISH、SFTP、HTTPS和FTPS协议。LFTP软件作为备份工具,主要特点是能增量定时备份只有FTP管理权限的虚拟主机,能把VPS的数据备份到只有FTP的主机,也可以把只有FTP的主机备份到VPS。推荐需要增量备份VPS的网站数据但没有第二个VPS只有虚拟空间的时候使用。

三、rsync软件(数据同步|文件增量备份)
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync更多的被应用到数据同步,解决多台服务器负载时解决数据同步问题。而作为备份软件,也相当的出色,我们可以定时增量备份备份,稳定且效率高。

四、自动备份文件并发送到Gmail (适用G级数据的备份)
适用于没有FTP也没有多余的VPS的备份网站使用。只需要你的VPS支持发送邮件的功能即可。

五、使用系统自带的FTP客户端备份
跟LFTP备份有点类似,但没有LFTP功能那么强大,也没有增量备份功能,对于不要求增量备份,且网站数据不大的可以考虑,设置起来也很方便。
 

使用mysqldump定时自动备份数据库

使用mysqldump定时自动备份数据库

[root@www www]# vi backup-db.sh #!/bin/sh

/usr/local/mysql/bin/mysqldump -uroot -ppassword databasename > /web/www/db-backup/databasename$(date +"%Y%m%d").sql

rm /web/www/db-backup/databasename$(date -d -7day +"%Y%m%d").sql #上面语句删除7天前的备份

上述脚本中-u后接数据库用户名, –p后接数据库用户密码,databasename改成要备份的数据库名,也可以备份全部数据库将databasename修改为–all-databases,后面/web/www/db-backup/ 是备份的目录。

 

添加定时执行任务

[root@www ~]# crontab -e 59 23 * * * /root/backup-db.sh每天的23:59分会自动备份数据库,且生成的数据库压缩按日期命名

以上备份的信息,备份完了就赶快把备份下载到本地,毕竟,备份的数据都在VPS,不在身边。

 

VPS计划任务实现每天定时异地备份

针对那些在Godaddy买过域名有免费空间的盆友, 我们备份vps的原理就是利用shell脚本备份网站以及数据库,然后通过ftp脚本吧备份文件上传到GODADDY的免费空间,简单吧。

那我就直接上脚本了 下面这个是备份网站和数据库的脚本:

#!/bin/bash
#set -x
time=`date +%Y%m%d`
#下面是备份MySql
[ ! -e /backup/sqltmp ] && mkdir -p /backup/sqltmp #创建临时备份mysql目录
[ ! -e /backup/backsql ] && mkdir -p /backup/backsql #创建mysql备份的存放目录
cd /backup/sqltmp
sql=`mysqlshow -u用户名 -p密码 |grep -v + | grep -Ev “Data|information|mysql|test” | awk {‘print $2′}` #查询mysql数据库里出系统数据以外的网站数据库,这里可以根据需要修改
for sqlname in $sql
do
mysqldump -u用户名 -p密码 $sqlname > $sqlname.sql
done
tar zcvf backsql.$time.tar.gz *.sql
rm -rf *.sql
mv * ../backsql/.
cd ..
rm -rf sqltmp
#下面是备份网站
[ ! -e /backup/webtmp ] && mkdir -p /backup/webtmp #创建临时备份web文件目录
[ ! -e /backup/backweb ] && mkdir -p /backup/backweb #创建web文件备份的存放目录
cd /backup/webtmp
tar zcvf backweb.$time.tar.gz /home/*
mv * ../backweb/.
cd ..
rm -rf webtmp

下面这个是上传到通过ftp把备份网站上传到godaddy空间上的脚本:

#!/bin/bash
backsql=`cd /backup/backsql;ls -r backsql* | head -1` #因为每天都备份文件取最新的那个
backweb=`cd /backup/backweb;ls -r backweb* | head -1`
ftp -n<<EOF
open ip #这里写godaddy空间的ip
user ftp用户名 ftp密码
binary
cd /back/ #备份文件要存放的ftp上的路径
lcd /backup/backsql/ #备份mysql文件本地存放路径
prompt
mput $backsql
lcd /backup/backweb/ #备份web文件本地存放路径
mput $backweb
close
bye
EOF

然后把这两个脚本做个crontab计划任务就实现每天定时异地备份了,而且省时省力省钱~

[[email protected] ~]# crontab -e
01 0 * * * /root/backup.sh
0 5 * * * /root/ftp.sh

DDoS deflate – Linux下防御/减轻DDOS攻击

前言

互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事。在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽。今天要说的就是一款能够自动屏蔽DDOS攻击者IP的软件:DDoS deflate。

DDoS deflate介绍

DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.

DDoS deflate官方网站:http://deflate.medialayer.com/

如何确认是否受到DDOS攻击?

执行:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

执行后,将会显示服务器上所有的每个IP多少个连接数。

以下是我自己用VPS测试的结果:

li88-99:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1 114.226.9.132
1 174.129.237.157
1 58.60.118.142
1 Address
1 servers)
2 118.26.131.78
3 123.125.1.202
3 220.248.43.119
4 117.36.231.253
4 119.162.46.124
6 219.140.232.128
8 220.181.61.31    VPS侦探 http://www.vpser.net/
2311 67.215.242.196

每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。

1、安装DDoS deflate

wget http://www.inetbase.com/scripts/ddos/install.sh //下载DDoS deflate chmod 0700 install.sh //添加权限 ./install.sh //执行

2、配置DDoS deflate

下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:

##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"  //IP地址白名单
CRON="/etc/cron.d/ddos.cron"    //定时执行程序
APF="/etc/apf/apf"
IPT="/sbin/iptables"

##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
#####          option so that the new frequency takes effect
FREQ=1   //检查时间间隔,默认1分钟

##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150     //最大连接数,超过这个数IP就会被屏蔽,一般默认即可

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1        //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。

##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1   //是否屏蔽IP,默认即可

##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root"   //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可

##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600    //禁用IP时间,默认600秒,可根据情况调整

用户可根据给默认配置文件加上的注释提示内容,修改配置文件。

 

 

3.如何卸载

  wget http://www.inetbase.com/scripts/ddos/uninstall.ddos

  chmod 0700 uninstall.ddos

  ./uninstall.ddos

CAO PENG DOT COM | 看邦主文摘来CAOPENG.NET | 学编程之邦去CAOPENG.ORG | 搜索引擎XML地图1 2 | WMV to DVD | remove drm from wmv | DVD Creator | 虚拟现实