记载我的心路历程
  • 自动备份网站文件和数据库上传到FTP空间

    2012-04-16
    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/

    作者:now163 | 分类目录:Shell | 标签:
  • iptables开启ftp规则

    2011-08-21

    设置了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

    作者:now163 | 分类目录:Shell | 标签:
  • 用awk统计正在连接的ip

    2011-07-13

    方法一

    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
    作者:now163 | 分类目录:Shell | 标签:
  • Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量

    2011-04-19

    做计算机管理员,我们都必要了解一下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 »

    作者:now163 | 分类目录:Shell | 标签:
  • 特殊的shell变量

    2010-12-10

    特殊的shell变量:

    $0 获取当前执行的shell脚本的文件名
    $n 获取当前执行的shell脚本的第n个参数值,n=1..9
    $* 获取当前shell的所有参数 “$1 $2 $3 …注意与$#的区别
    $# 获取当前shell命令行中参数的总个数
    $$ 获取当前shell的进程号(PID)
    $! 执行上一个指令的PID
    $? 获取执行的上一个指令的返回值(0 为成功, 非零为失败)
    $@ 这个程序的所有参数 “$1″ “$2″ “$3″ “…” Read More »

    作者:now163 | 分类目录:Shell | 标签:
  • 《SED单行脚本快速参考》的awk实现

    2010-12-03

    sed和awk都是linux下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED单行脚本快速参考》这文章,用awk做了一遍~
    至于孰好孰坏,那真是很难评论了。一般来说,sed的命令会更短小一些,同时也更难读懂;而awk稍微长点,但是if、while这样的,逻辑性比较强,更加像“程序”。到底喜欢用哪个,就让各位看官自己决定吧!
    PS: 貌似这个配色,单行的代码多了以后,拖动的时候会有点眼花的感觉,将就下吧,呵呵。

    文本间隔:
    ——–

    # 在每一行后面增加一空行

    sed G
    awk '{printf("%s\n\n",$0)}'

    # 将原来的所有空行删除并在每一行后面增加一空行。
    # 这样在输出的文本中每一行后面将有且只有一空行。 Read More »

    作者:now163 | 分类目录:Shell | 标签: