-
自动备份网站文件和数据库上传到FTP空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
#!/bin/bash #你要修改的地方从这里开始 MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 MAIL_TO=cat@hostloc.com #数据库发送到的邮箱 FTP_USER=cat #ftp用户名 FTP_PASS=123456 #ftp密码 FTP_IP=imcat.in #ftp地址 FTP_backup=backup #ftp上存放备份文件的目录,这个要自己得ftp上面建的 WEB_DATA=/home/www #要备份的网站数据 #你要修改的地方从这里结束 #定义数据库的名字和旧数据库的名字 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 #发送数据库到Email,如果数据库压缩后太大,请注释这行 echo "主题:数据库备份" | mutt -a /home/backup/$DataBakName -s "内容:数据库备份" $MAIL_TO #压缩网站数据 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
给脚本添加执行权限:
chmod +x /root/AutoBackupToFtp.sh
利用系统crontab实现每天自动运行:
crontab -e
输入以下内容:
00 00 * * * /root/AutoBackupToFtp.sh
转载自:http://imcat.in/auto-backup-site-files-database-upload-ftp/
没有评论 -
iptables开启ftp规则
设置了iptables的禁止所有的端口,只容许可能访问了策略后大部分情况下会出现ftp不能正常访问的问题,因为ftp有主动和被动连接两种模式,少添加一些策略就会出问题。
首先要加载ftp模块modprobe ip_conntrack_ftp modprobe ip_nat_ftp
然后加载策略
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I INPUT -p tcp --dport 21 -j ACCEPT iptables -I OUTPUT -p tcp --dport 21 -j ACCEPT
要是不想每次都加载模块的话 那就要修改/etc/sysconfig/iptables-config
添加ip_conntrack_ftp ip_nat_ftp 2个模块 保存退出就ok了
本文出自 “mcshell学习博客” 博客,请务必保留此出处http://mcshell.blog.51cto.com/803455/396125
-
用awk统计正在连接的ip
方法一
1
netstat -antp | awk -F"[ :]+" '/80/{a[$6]}END{for(i in a)print i|"sort -n"}'
方法二
1 2
netstat -antp | grep 80 | awk '{print $5}' | cut -d":" -f1 | sort -n | awk -F'.' '!a[$NF]++' netstat -antp | grep 80 | awk '{print $5}' | cut -d":" -f1 | sort -n | awk -F'.' '!a[$NF]++' | wc -l
-
Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量
做计算机管理员,我们都必要了解一下netstat这个命令,它是一个查看网络连接状态的工具,在windows下也默认有这个工具。
Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WAIT连接 如何统计web服务器的访问量 如果查看nginx的访问流量?下面我们来看看它主要的用法和详解!
(netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr
1.netstat命令详解
其实我常用的是 netstat -tnl | grep 443 (查看443端口是否被占用),如果有当前是root用户,我喜欢用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID)。 Read More » -
特殊的shell变量
特殊的shell变量:
$0 获取当前执行的shell脚本的文件名
$n 获取当前执行的shell脚本的第n个参数值,n=1..9
$* 获取当前shell的所有参数 “$1 $2 $3 …注意与$#的区别
$# 获取当前shell命令行中参数的总个数
$$ 获取当前shell的进程号(PID)
$! 执行上一个指令的PID
$? 获取执行的上一个指令的返回值(0 为成功, 非零为失败)
$@ 这个程序的所有参数 “$1″ “$2″ “$3″ “…” Read More » -
《SED单行脚本快速参考》的awk实现
sed和awk都是linux下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED单行脚本快速参考》这文章,用awk做了一遍~
至于孰好孰坏,那真是很难评论了。一般来说,sed的命令会更短小一些,同时也更难读懂;而awk稍微长点,但是if、while这样的,逻辑性比较强,更加像“程序”。到底喜欢用哪个,就让各位看官自己决定吧!
PS: 貌似这个配色,单行的代码多了以后,拖动的时候会有点眼花的感觉,将就下吧,呵呵。文本间隔:
——–# 在每一行后面增加一空行
sed Gawk '{printf("%s\n\n",$0)}'
# 将原来的所有空行删除并在每一行后面增加一空行。
# 这样在输出的文本中每一行后面将有且只有一空行。 Read More »
