环境介绍域名系统:Bind
邮件系统:Sendmail(SMTP)+Dovecot(POP3/IMAP)
缺陷管理:BugZilla
版本控制:Subversion(证书验证)
1.软件安装配置1.1 DNS DNS是邮件系统的一个部分,想要使用邮件系统,必须在DNS中配置邮件记录。 1.1.1 软件包检查Code------------------------------------------------------------------------------------- [root@scmbug etc]# rpm -qa | grep bind ypbind-1.19-8.el5 bind-libs-9.3.4-6.P1.el5 bind-utils-9.3.4-6.P1.el5 bind-9.3.4-6.P1.el5 bind-chroot-9.3.4-6.P1.el5 [root@scmbug etc]# rpm -qa | grep caching caching-nameserver-9.3.4-6.P1.el5 -------------------------------------------------------------------------------------------- 1.1.2 DNS配置编辑DNS主配置文件named.caching-nameserver.conf [root@scmbug etc]# vi/var/named/chroot/etc/named.caching-nameserver.conf options { forwarders { 202.106.46.151;202.106.0.20; }; #未知区域解析服务器 listen-on port 53 { 192.168.101.233; }; #监听端口 directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; query-source port 53; allow-query { any; }; #允许查询 }; logging { channeldefault_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; #允许范围 match-destinations { any; }; #允许范围 recursion yes; include"/etc/named.rfc1912.zones"; }; 编辑DNS主配置文件named.rfc1912.zones [root@scmbug etc]# vi/var/named/chroot/etc/named.rfc1912.zones 添加如下内容 zone "uis.com" IN { typemaster; file"uis.com.zone"; }; zone "101.168.192.in-addr.arpa" IN { typemaster; file"uis.com.local"; }; 复制解析文件模版 cp /var/named/chroot/var/named/localhost.zone/var/named/chroot/var/named/uis.com.zone –p cp /var/named/chroot/var/named/named.local/var/named/chroot/var/named/uis.com.local –p 编辑解析文件 [root@scmbug etc]# vi/var/named/chroot/var/named/uis.com.zone (正向) $TTL 86400 @ IN SOA scmbug.uis.com. root.uis.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D) ; minimum IN NS scmbug.uis.com. IN MX 10 scmbug.uis.com. IN A 192.168.101.233 scmbug IN A 192.168.101.233 pop INA 192.168.101.233 smtp INA 192.168.101.233 [root@scmbug etc]# vi/var/named/chroot/var/named/uis.com.local (反向) $TTL 86400 @ IN SOA scmbug.uis.com. root.uis.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS scmbug.uis.com. 233 IN PTR uis.com. 233 IN PTR scmbug.uis.com. 233 IN PTR pop.uis.com. 233 IN PTR smtp.uis.com. 设置开机自动启动DNS服务 [root@scmbug etc]# chkconfig --level 35named on 测试DNS服务器 [root@scmbug ~]# nslookup > set type=a > scmbug Server: 192.168.101.233 Address: 192.168.101.233#53 Name: scmbug.uis.com Address: 192.168.101.233 > set type=ptr > 192.168.101.233 Server: 192.168.101.233 Address: 192.168.101.233#53 233.101.168.192.in-addr.arpa name = uis.com. 233.101.168.192.in-addr.arpa name = scmbug.uis.com. > set type=mx > uis.com Server: 192.168.101.233 Address: 192.168.101.233#53 uis.com mail exchanger = 10 scmbug.uis.com. > exit 2.邮件系统搭建2.1 软件包检查[root@scmbug ~]# rpm -qa | grep sendmail sendmail-8.13.8-2.el5 sendmail-cf-8.13.8-2.el5 [root@scmbug ~]# rpm -qa | grep dovecot dovecot-1.0-1.2.rc15.el5 2.2 服务配置2.2.2 Sendmail 修改监听地址 [root@scmbug ~]# vi /etc/mail/sendmail.mc DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA')dnl(DEL) DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA')dnl (ADD) 生成配置文件 [root@scmbug ~]# m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf 修改邮件后缀 [root@scmbug ~]# vi /etc/mail/local-host-names # local-host-names - include all aliases for yourmachine here. uis.com 修改可转发服务列表 [root@scmbug ~]# vi /etc/mail/access # Check the /usr/share/doc/sendmail/README.cf filefor a description # of the format of this file. (search for access_dbin that file) # The /usr/share/doc/sendmail/README.cf is part ofthe sendmail-doc # package. # # by default we allow relaying from localhost... Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY scmbug.uis.com REALY 生效可转发列表 [root@scmbug ~]# cd /etc/mail/; make access.db ; cd - 重新启动服务/开机自动启动服务 [root@scmbug ~]# chkconfig --level 35 sendmail on [root@scmbug ~]# /etc/init.d/sendmail restart Shutting down sm-client: [ OK ] Shutting down sendmail: [ OK ] Starting sendmail: [ OK ] Starting sm-client: [ OK ] 检查是否监听端口 [root@scmbug ~]# netstat -ant | grep 25 tcp 0 0 192.168.101.233:25 0.0.0.0:* LISTEN 2.2.2 Dovecot [root@scmbug ~]# vi /etc/dovecot.conf protocols = pop3 #支持协议 listen = #监听IP [root@scmbug ~]# /etc/init.d/dovecot restart Stopping Dovecot Imap: [ OK ] Starting Dovecot Imap: [ OK ] [root@scmbug ~]# chkconfig --level 35 dovecot on 创建邮件帐号脚本 #!/bin/sh echo " lease input mailaccount which youwant:" read MAILACCOUNT echo " lease input Password:" read PASSWD echo "User MAILACCOUNT/Password PASSWD" echo "Contune?[y/n]" read CHOS case $CHOS in y|Y) /usr/sbin/useradd $MAILACCOUNT /bin/echo $PASSWD | /usr/bin/passwd --stdin $USER ;; n|N) echo"bye" ;; *) echo"Just suport Y or N..." esac 3 创建证书系统3.1软件包检查与安装Openssl#证书系统 [root@scmbug ~]# rpm -qa | grep openssl openssl-0.9.8b-8.3.el5_0.2 openssl-devel-0.9.8b-8.3.el5_0.2 [root@scmbug ssl.ca]# rpm -qa | grep mod_ssl mod_ssl-2.2.3-11.el5.centos ssl.ca#帮助我们快速建立CA的工具 [root@scmbug ~]# mv ssl.ca-0.1 ssl.ca ; mv ssl.ca/etc/httpd/conf/ 3.2 创建CA系统ssl.crt#建立证书及钥匙存放的目录 [root@scmbug ssl.ca]# mkdir /etc/httpd/conf/ssl.crt 创建根证书/根证书密钥/自签名根证书 [root@scmbug ssl.ca]# ./new-root-ca.sh 创建服务器证书/服务器密钥 [root@scmbug ssl.ca]# ./new-server-cert.sh server [root@scmbug ssl.ca]# ./sign-server-cert.sh server 创建用户证书/用户密钥 [root@scmbug ssl.ca]# ./new-user-cert.sh uis 格式化用户密钥以便可以在Windows中使用 [root@scmbug ssl.ca]# ./p12.sh uis 3.3 配置CA系统修改ssl.conf配置文件 [root@scmbug ssl.ca]# vi /etc/httpd/conf.d/ssl.conf SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca.crt SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt SSLCertificateKeyFile/etc/httpd/conf/ssl.crt/server.key SSLCACertificatePath /etc/httpd/conf/ssl.crt/ SSLVerifyClient require #强制要求客户端证书 SSLVerifyDepth 1 从服务器拷贝ca.crt和uis.p12 双击ca.crt就可以添加我们的证书系统为信任证书系统 重新启动apache服务就可以测试证书系统了。 4.2 MySQL配置[root@scmbug ssl.ca]# /etc/init.d/mysqld start Initializing MySQL database: [ OK ] Starting MySQL: [ OK ] [root@scmbug ssl.ca]# mysqladmin -u root password'feoneon' [root@scmbug ssl.ca]# mysql -u root -p mysql> create database bugs -> ; Query OK, 1 row affected (0.00 sec) mysql> show databases -> ; +--------------------+ | Database | +--------------------+ | information_schema | | bugs | | mysql | | test | +--------------------+ 4 rows in set (0.01 sec) mysql> grant all on bugs.* to scmdbuser@localhostidentified by 'scmdbpasswd'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye 修改上传限制 [root@scmbug ~]# vi /etc/my.cnf [mysqld] # Allow packets up to 1M max_allowed_packet=1M 修改填写最小单词 [mysqld] # Allow small words in full-textindexes ft_min_word_len=2 允许附件表增长到4G mysql> use $bugs_db mysql> ALTER TABLE attachments AVG_ROW_LENGTH=1000000,MAX_ROWS=20000; 5.Bug管理系统5.1软件包检查/安装[root@scmbug ssl.ca]# rpm -qa | grep http httpd-2.2.3-11.el5.centos [root@scmbug ssl.ca]# rpm -qa | grep mysql-server mysql-server-5.0.22-2.1.0.1 [root@scmbug ssl.ca]# rpm -qa | grep mod_auth_mysql mod_auth_mysql-3.0.0-3.1 yum install gd gd-devel freetype php-gdImageMagick-perl –y 5.2 Bugzilla软件包支持NCFTP [root@scmbug ~]# tar jxf ncftp-3.2.1-src.tar.bz2 [root@scmbug ~]# cd ncftp-3.2.1 [root@scmbug ncftp-3.2.1]#ls [root@scmbug ncftp-3.2.1]#./configure ; make ;make install [root@scmbug ncftp-3.2.1]#cd ~ Bugzilla [root@scmbug ~]# tar zxf bugzilla-3.0.4.tar.gz [root@scmbug ~]# mv bugzilla-3.0.4/var/www/html/bugs [root@scmbug ~]# cd /var/www/html/bugs/ [root@scmbug bugs]# ./checksetup.pl –modulescheck [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Email::Send"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Template"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Email::MIME::Modifier"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Date::Format"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"GD::Graph"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Template: lugin::GD::Image"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Email::Reply"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"HTML::Scrubber"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"XML::Twig"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"MIME: arser"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install"Chart::Base"' [root@scmbug bugs]# /usr/bin/perl -MCPAN -e 'install" atchReader"' [root@scmbug bugs]# vi localconfig $db_user = 'scmdbuser'; $db_pass = 'scmdbpasswd'; [root@scmbug bugs]# ./checksetup.pl 5.3 Apache对Bugzilla的支持[root@scmbug bugs]# vi /etc/httpd/conf/httpd.conf #添加如下描述 <Directory /var/www/html/bugs> AddHandler cgi-script .cgi Options +Indexes +ExecCGI DirectoryIndex index.cgi AllowOverride Limit </Directory> 5.4 Bugzilla简单配置Parameters: RequiredSettings: Ssl: always AdministrativePolicies: Allowmailchange: off UserAuthentication Createemailregexp: @uis.com Attachments Allow_attach_url: on Maxlocalattachment: 100 BugChange Policies: Commentoncreate: on Commentonaccept: on Commentonconfirm: on Commentonresolve: on Commentonreassign: on Commentonreassignbycomponent: on Commentonreopen: on Commentonclose: on Commentonduplicate: on BugFields: Useclassification: on Showallproducts: on Usestatuswhiteboard: on Usebugaliases: on GroupSecurity Makeproductgroups on Useentrygroupdefault on Email: Mail_deliver_method SMTP Smtpserver 192.168.101.233 QueryDefaults specific_search_allow_empty_words: on UserMatching: Usemenuforusers: on 6.版本控制系统Subversion6.1检查软件包安装(Apache+mysql+svn)[root@scmbug ssl.ca]# rpm -qa | grep subversion subversion-1.4.2-2.el5 [root@scmbug ssl.ca]# rpm -qa | grep mod_dav_svn mod_dav_svn-1.4.2-2.el5 6.2服务配置6.2.1 Apache对Subversion的支持[root@scmbug bugs]# vi /etc/httpd/conf/httpd.conf <Location /svn> DAV svn #SVNPath /repository/test SVNParentPath /repository AuthzSVNAccessFile /repository/auth/authz AuthName "RTS InfoTech SVN .." AuthType Basic SSLRequireSSL AuthMYSQLEnable on AuthMySQLUser scmdbuser AuthMySQLPassword scmdbpasswd AuthMySQLDB bugs AuthMySQLUserTable profiles AuthMySQLNameField login_nameF AuthMySQLPasswordField cryptpassword require valid-user </Location> [root@scmbug bugs]# /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@scmbug bugs]# chkconfig --level 35 httpd on 6.2.2 配置SVN初始化repository. [root@rep ~]# mkdir repository [root@rep ~]# svnadmin create /repository/test [root@rep ~]# chown apache.apache repository/ -R [root@rep /]# mkdir /repository/auth [root@rep /]# cp /repository/test/conf/authz/repository/auth/ -p 附录1. iptables防火墙安全策略iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -p all -jACCEPT iptables -A INPUT -s 192.168.2.222 -d 192.168.2.222-p all -j ACCEPT iptables -I INPUT -m state --state RELATED,ESTABLISHED-j ACCEPT iptables -A INPUT -s 192.168.2.0/24 –p tcp –dport2222 –j ACCEPT iptables -A INPUT -s 192.168.2.0/24 –p udp –dport2222 –j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport 25-j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p udp --dport 25-j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p udp --dport110 -j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport110 -j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport 53-j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p udp --dport 53-j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p udp --dport443 -j ACCEPT iptables -A INPUT -s 192.168.2.0/24 -p tcp --dport443 -j ACCEPT 附录2.服务器脚本Server.sh#!/bin/sh #Description #===========================Define==================== LOGFILE=/repository/.backup/LOG BAKPATH=/repository/.backup/ MYDATE=`date +%d/%m/%Y` THIS_HOST=`hostname -s` USER=`whoami` #===================================================== while : do tput clear cat << RAIN ________________________________________________________________ User USER Host THIS_HOST Date MYDATE ---------------------------------------------------------------- 1. List all repositorys on server 2. Add new repository toSubversion 3. Backup Repostiroy 4. Backup Database 5. View authentication file 6. Modify authenticaion file(SVN) 7. View Log file 8. Maintenance system H. Help screen Q. Exit Menu ________________________________________________________________ RTS RAIN echo -e -n "\t\tYour Choice[1,2,3,4,5,6,7,H,Q]:" readCHOICE case$CHOICE in 1)#list repositorys echo"" echo"" echo"Repository List:" ls/repository/ | grep -v "test" | grep -v lost+found echo"" echo"" ;; 2)#add new repository echo"" echo"" echo "Adding Repository to Subversion..." echo -n" lease input ProjectName:" readPROJECTNAME echo -n"Create Project "$PROJECTNAME"?[y/n] " readSTATUSCHOICE case$STATUSCHOICE in y|Y|yes) mkdir /repository/$PROJECTNAME /usr/bin/svnadmin create /repository/$PROJECTNAME echo "[general]" > /repository/$PROJECTNAME/conf/svnserve.conf echo "anon-access = none" >>/repository/$PROJECTNAME/conf/svnserve.conf echo "auth-access = write" >>/repository/$PROJECTNAME/conf/svnserve.conf echo "realm = $PROJECTNAME" >> /repository/$PROJECTNAME/conf/svnserve.conf chmod 770 /repository/$PROJECTNAME/ -R chown root.apache /repository/$PROJECTNAME/ -R echo "Complete..." ;; n|N|no) echo "Bye....." ;; *) echo " lease input Y or N" ;; esac ;; 3)#backup repository echo"" echo"" echo"Repositorys List:" echo`ls /repository/ | grep -v test | grep -v lost+found` echo"Choice the Repository which you want o backup.." readBAKREPNAME NewFile="$BAKPATH""$BAKREPNAME"-bak.tar.gz echo"-------------------------------------------" >> $LOGFILE echo`(date +"%y-%m-%d %H:%M:%S")` | tee -a $LOGFILE echo "Starting backuprepository($BAKREPNAME)....." | tee -a $LOGFILE echo"--------------------------" | tee -a $LOGFILE if [ -f$NewFile ] then rm -f $NewFile >> $LOGFILE 2>&1 echo "[NewFile] elete Old File Success!" | tee -a $LOGFILE /usr/bin/svnadmin hotcopy /repository/$BAKREPNAME"$BAKPATH""$BAKREPNAME" cd $BAKPATH ; tar zcvf "$NewFile" "$BAKREPNAME" |tee -a $LOGFILE ;cd - > /dev/null 2>&1 else /usr/bin/svnadmin hotcopy/repository/$BAKREPNAME "$BAKPATH""$BAKREPNAME" cd $BAKPATH ; tar zcvf "$NewFile" "$BAKREPNAME" |tee -a $LOGFILE ;cd - > /dev/null 2>&1 fi # cd "$BAKPATH" rm -rf "$BAKPATH""$BAKREPNAME" #cd - > /dev/null 2>&1 echo"" echo"" echo -n"Would you want to copy this file to remote storage?[y/n]" readANS case$ANS in y|Y) echo " lease make sure the remoute storage was power on!..." echo " ress Enter to continue......" read FROG mount -t cifs -o username=administrator,password=feoneon//192.168.101.5/ServerBackup /mnt if [ -f /mnt/Sign ] then cp "$NewFile" /mnt/ -rf-v umount /mnt echo "Remote Coyp Done" else exit; echo "Remote Copy Failed!Can't mount remote storage" fi echo "Job Done!" rm "$NewFile" -f > /dev/null 2>&1 ;; n|N) echo "Bye" ;; *) echo "unknow command!" ;; esac ;; 4)#backup database #Thisscript can be automatic to backup our mysql database. #Powered by Rain.Li #------------Define----------------------------- HOST=localhost MYSQLNEWFILE=$BAKPATH/Mysql-DB-bak.tar.gz MYSQLTEMPFILE=$BAKPATH/bak.sql USERNAME=scmbuguser PASSWD=scmbugpasswd #------------------------WorkStarting(scmbug)---------------------------------------- echo"$TIMESUFFIXNEW" >> $LOGFILE echo"-------------------------------------" >> $LOGFILE echo`date +%H:%M:%S` >> $LOGFILE echo"Start Backup the MySQL Database" | tee -a $LOGFILE if [ -f$MYSQLNEWFILE ] then rm -f $MYSQLNEWFILE >> $LOGFILE 2>&1 echo "[Mysql-DB-bak.tar.gz] elete Old File Success!" | tee -a $LOGFILE else echo "[Mysql-DB-bak.tar.gz]:No Old Backup File!" | tee -a $LOGFILE fi /usr/bin/mysqldump -h $HOST -u$USERNAME -p$PASSWD --database scmbug >$MYSQLTEMPFILE tarzcvf $MYSQLNEWFILE $MYSQLTEMPFILE rm$MYSQLTEMPFILE -f echo"[Mysql-DB-bak-$TIMESUFFIXNEW.tar.gz]:Backup Success!" | tee -a $LOGFILE echo"MySQL databases backup over......" | tee -a $LOGFILE echo"-------------------------------------" >> $LOGFILE echo"" echo"" echo -n"Would you want to copy this file to remote storage?[y/n]" readANS case$ANS in y|Y) echo " lease make sure theremoute storage was power on!..." echo " ress Enter to continue......" read FROG mount -t cifs -o username=administrator,password=feoneon//192.168.101.5/ServerBackup /mnt if [ -f /mnt/Sign ] then cp "$MYSQLNEWFILE" /mnt/ -rf -v umount /mnt echo "Remote Coyp Done" else exit; echo "Remote Copy Failed!Can't mount remote storage" fi echo "Job Done!" rm "$MYSQLNEWFILE" -f > /dev/null 2>&1 ;; n|N) echo "Bye" ;; *) echo "unknow command!" ;; esac ;; 5)#view authentication file cat/repository/.auth/authz.conf | more ;; 6)#modify autthentication file vi/repository/.auth/authz.conf ;; 7)#view log file cat$LOGFILE | more ;; 8)#maintenance system echo"Building......." echo"Building......." echo"Building......." ;; H|h) echo"This is the help screen,noting here yet to help you!" ;; Q|q) echo"Bye~" exit0 ;; *)echo -e "\t\t Unknown user response!" ;; esac echo -e-n "\t\tHit the return key to continue." readDUMMY done "backup-sys.sh"#!/bin/sh #Description #This script can be automatic to backup ourrepository. # #------------------Public------------------- BAKPATH=/repository/.backup/ SYSTEMPDIR="$BAKPATH"SYSTEMP LOG="$BAKPATH"LOG TIMESUFFIXNEW=`date +%y%m%d` TIMESUFFIXOLD=`date +%y%m%d --date='3 days ago'` FILE1=/repository/.auth/authz.conf FILE2=/var/www/html/bugs/ #------------------Public------------------- #--------------------System ConfigurationFile(Server)------------------------------- echo "-------------------------------------">> $LOG echo `date +%H:%M:%S` >> $LOG echo "Start backup the ServerSysFiles........." >> $LOG if [ -f"$BAKPATH"sysfile-bak-$TIMESUFFIXOLD.tar.gz ] then rm"$BAKPATH"sysfile-bak-$TIMESUFFIXOLD.tar.gz -f 2>&1 echo"["$BAKPATH"sysfile-bak-$TIMESUFFIXOLD.tar.gz] elete Old FileSuccess" >> $LOG else echo"["$BAKPATH"sysfile-bak-$TIMESUFFIXOLD.tar.gz]:No oldfile!" >> $LOG fi if [ -f"$BAKPATH"sysfile-bak-$TIMESUFFIXNEW.tar.gz ] then echo"[sysfile-bak-$TIMESUFFIXNEW.tar.gz]:The Backup file exists,Can'tBackup!" >> $LOG else mkdir$SYSTEMPDIR cp$FILE1 $SYSTEMPDIR -r -p cp$FILE2 $SYSTEMPDIR -r -p cp/root/ServScript/* $SYSTEMPDIR -r -p tarzcvf "$BAKPATH"sysfile-bak-$TIMESUFFIXNEW.tar.gz $SYSTEMPDIR echo"[sysfile-bak-$TIMESUFFIXNEW.tar.gz]:File Backup Success!" >>$LOG rm$SYSTEMPDIR -rf 2>&1 fi echo "Server SysFiles backup done.......">> $LOG echo "-------------------------------------">> $LOG backup-mysql.sh#!/bin/sh #Description #This script can be automatic to backup our mysqldatabase. #Powered by Rain.Li #------------Define----------------------------- BAKPATH=/repository/.backup LOGFILE=/repository/.backup/LOG TIMESUFFIXNEW=`date +%y%m%d` TIMESUFFIXOLD=`date +%y%m%d --date='3 days ago'` HOST=localhost MYSQLNEWFILE=$BAKPATH/Mysql-DB-bak-$TIMESUFFIXNEW.tar.gz MYSQLOLDFILE=$BAKPATH/Mysql-DB-bak-$TIMESUFFIXOLD.tar.gz MYSQLTEMPFILE=$BAKPATH/bak.sql USERNAME=scmbuguser PASSWD=scmbugpasswd #------------------------WorkStarting(scmbug)---------------------------------------- echo "$TIMESUFFIXNEW" >> $LOGFILE echo"-------------------------------------" >> $LOGFILE echo `date +%H:%M:%S` >> $LOGFILE echo "Start Backup the MySQL Database" >>$LOGFILE if [ -f $SMYSQLOLDFILE ] then rm -f$MYSQLOLDFILE >> $LOGFILE 2>&1 echo"[Mysql-DB-bak-$TIMESUFFIXOLD.tar.gz] elete Old File Success!">> $LOGFILE else echo"[Mysql-DB-bak-$TIMESUFFIXOLD.tar.gz]:No Old Backup File!" >> $LOGFILE fi if [ -f $MYSQLNEWFILE ] then echo"[Mysql-DB-bak-$TIMESUFFIXNEW.tar.gz]:The backup file is exists,Can'tbackup!" >> $LOGFILE else /usr/bin/mysqldump -h $HOST -u$USERNAME -p$PASSWD --database scmbug >$MYSQLTEMPFILE tar zcvf$MYSQLNEWFILE $MYSQLTEMPFILE rm$MYSQLTEMPFILE -f echo"[Mysql-DB-bak-$TIMESUFFIXNEW.tar.gz]:Backup Success!" >>$LOGFILE echo"MySQL databases backup over......" >> $LOGFILE echo"-------------------------------------" >> $LOGFILE fi echo " " echo " " backup-rep.sh#!/bin/sh #Description #This script can automatic to backup our repository. # #------------------Public------------------- LOGFILE=/repository/.backup/LOG BAKPATH=/repository/.backup/ TIMESUFFIXNEW=`date +%y%m%d` TIMESUFFIXOLD=`date +%y%m%d --date='3 days ago'` #------------------Public------------------- #-----------------Backup theRepository------------------------------- NEWFILE1="$BAKPATH"Repository-bak-$TIMESUFFIXNEW.tar.gz OLDFILE1="$BAKPATH"Repository-bak-$TIMESUFFIXOLD.tar.gz REPTEMPDIR="$BAKPATH"REPTEMP echo"----------------------------------------------------------------">> $LOGFILE echo "$TIMESUFFIXNEW" >> $LOGFILE echo"-------------------------------------" >> $LOGFILE echo `date +%H:%M:%S` >> $LOGFILE echo "Start Backup the Repository" >>$LOGFILE if [ -f $OLDFILE1 ] then rm -f$OLDFILE1 >> $LOGFILE 2>&1 echo"[Repository-bak-$TIMESUFFIXOLD.tar.gz] elete Old File Success!">> $LOGFILE else echo"[Repository-bak-$TIMESUFFIXOLD.tar.gz]:No Old Backup File!" >>$LOGFILE fi if [ -f $NEWFILE1 ] then echo"[Repository-bak-$TIMESUFFIXNEW.tar.gz]:The backup file is exists,Can'tbackup!" >> $LOGFILE else for Iin `ls -a /repository` do if [ "$I" = "lost+found" ] || [ "$I" ="test" ] || [ "$I" = ".." ] || [ "$I" ="." ] || [ "$I" = ".backup" ] then echo "$I need notbackup!" else mkdir $REPTEMPDIR2>&1 /usr/bin/svnadmin hotcopy/repository/$I $REPTEMPDIR/$I echo "Hot copy$I" >> $LOGFILE fi done tarzcvf $NEWFILE1 $REPTEMPDIR echo"[Repository-bak-$TIMESUFFIXNEW.tar.gz]:Backup Success!" >>$LOGFILE rm$REPTEMPDIR -rf 2>&1 echo"Repository backup over......" >> $LOGFILE echo"-------------------------------------" >> $LOGFILE fi backup-remote.sh#!/bin/sh mount -t cifs -o username=administrator,password=feoneon//192.168.101.5/ServerBackup /mnt if [ -f /mnt/Sign ] then cp /repository/.backup/* /mnt/ -rf -v >>/repository/.backup/LOG umount /mnt echo "Remote Coyp Done" >>/repository/.backup/LOG else exit; echo "Remote Copy Failed!" >>/repository/.backup/LOG fi echo "Job Done!" >>/repository/.backup/LOG
|