Tag Archives: shell

看到一份挺不错的备份脚本

2011.02.27 , unix, 系统监控 , No Comments , 172 views

 

#!/bin/bash

#需要修改的地方从这里开始

WEB_DATA=/home/wwwroot                          #要备份的网站数据

nginx_DATA=/usr/local/nginx/conf                #要备份的NGINX配置文件

PHP_Config=/usr/local/php/etc                   #要备份的PHP配置文件

Ftp=/usr/local/pureftpd                         #要备份的PURE-FTPD

Folder=/home/bak                                #备份文件的存放文件夹

Config=/etc/init.d/                             #要备份的服务文件

ppp=/etc/ppp                                    #要备份的PPP(pptp)账号数据

date=$(date +"%Y%m%d")                          #今日时间

MYSQL_UserName=root                             #mysql账号

MYSQL_PassWord=password                         #mysql密码

DB_Name1=test1                                  #数据库1

DB_Name2=test2                                  #数据库2

DB_Name3=test3                                  #数据库3

DB_Name4=test4                                  #数据库4 默认是四个数据库,按自己情况增加减少

#需要修改的地方从这里结束

 

#手动备份删除今日数据

rm -fr /$Folder/$date.tar.gz   

 

#删除3天前的数据

rm -fr /$Folder/$(date -d -3day +"%Y%m%d").tar.gz   

 

#创建今天的备份目录

mkdir -p /$Folder/$date                              

 

#压缩网站数据

cd $WEB_DATA

tar zcf /$Folder/$date/web.tar.gz ./*           

 

#备份并压缩Mysql数据库

 

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name1 > /$Folder/$date/$DB_Name1-$(date +"%Y%m%d").sql

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name2 > /$Folder/$date/$DB_Name2-$(date +"%Y%m%d").sql

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name3 > /$Folder/$date/$DB_Name3-$(date +"%Y%m%d").sql

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name4 > /$Folder/$date/$DB_Name4-$(date +"%Y%m%d").sql

 

cd $Folder

tar zcf /$Folder/$date/database-$(date +"%Y%m%d").tar.gz ./$date/*.sql

 

#备份NGINX配置文件

cd $nginx_DATA

tar zcf /$Folder/$date/nginx.tar.gz ./*

 

#备份PHP配置文件

cd $PHP_Config

tar zcf /$Folder/$date/php.tar.gz ./*

 

#压缩FTP Server文件

cd $Ftp

tar zcf /$Folder/$date/ftp.tar.gz ./*

 

#压缩服务文件

cd $Config

tar zcf /$Folder/$date/d.tar.gz ./nginx ./mysql ./php-fpm ./ftpd

 

#打包PPP配置以及PPTP拨号帐号

cd $ppp

tar zcf /$Folder/$date/ppp.tar.gz ./*

 

#备份SSHD配置文件

cp /etc/ssh/sshd_config /$Folder/$date

 

#备份crontab内容

crontab -l > /$Folder/$date/crontab_$date.txt

 

#压缩当天数据

cd /$Folder/

tar zcf /$Folder/$date.tar.gz ./$date/*

 

#删除当天备份文件夹

rm -fr /$Folder/$date

最牛的shell命令,一定有你不知道的

2011.02.19 , unix, 夜的点滴, 滴水穿石 , No Comments , 2,189 views

1.替换上一条命令中的一个短语

1
$ ^foo^bar^                //常用的是在ping的时候替换ip

又是另外一个事件引用符(event designator),可以把上一条命令当中的foo替换成bar。 在需要重复运行调试一道长长的命令,需要测试某个参数时候,用这个命令会比较实用;但多数人会首先选择按上箭头提出上道命令,再移动光标去修改某参数,这样更直观,但效率上就不够使用引用符高,而且在脚本中用这个方法可以简化很多。

2.快速备份一个文件

1
$ cp filename{,.bak}

这道命令把filename文件拷贝成filename.bak,大家应该在一些比较复杂的安装教程里面见过这样的用法。其原理就在于bash对大括号的展开操作,filename{,.bak}这一段会被展开成filename filename.bak再传给cp,于是就有了备份的命令了。

3.免密码ssh登录主机

1
$ ssh-copy-id remote-machine

这个命令把当前用户的公钥串写入到远程主机的~/.ssh/authorized_keys内,这样下次使用ssh登录的时候,远程主机就直接根据这串密钥完成身份校验,不再询问密码了。前提是你当前用户有生成了公钥,默认是没有的,先执行ssh-keygen试试吧!