IzzyMenu.com

Programming(Script,ASSM,Unix-C)

 ·Î±×ÀÎ  È¸¿ø°¡ÀÔ

[Script] Backup Script
ANTON  2009-06-28 04:36:59, Á¶È¸ : 169, Ãßõ : 51

±âÁ¸¿¡ ÆÞ·Î ¹é¾÷½ºÅ©¸³Æ®¸¦ ¸¸µé¾î ½è¾ú½À´Ï´Ù.

ÀÌ·¸°Ô »ý±ä°Å¿´Áö¿ä..


¼Ò½ºÄÚµå:

#!/usr/bin/perl


$remove_date = "2";
$backup_dir = "/2ndDisk";

# ³¯Â¥º¯¼ö ¸¸µé°í
($day, $month, $year) = (localtime)[3,4,5];
$year = $year+1900;
$month = $month+1;
$old_day = $day - $remove_date;
$date_dir = $year."-".$month."-".$day;
$old_date_dir = $year."-".$month."-".$old_day;

#print $date_dir;
#print $old_date_dir;
#exit 0;


#³¯Â¥¿¡ ¸Â´Â µð·ºÅ丮¸¦ ¸¸µç´Ù
#system("mount /dev/sdb1 /backups");
system("mkdir -p $backup_dir/$date_dir/home01");

#ÇØ´ç µð·ºÅ丮µéÀ» ¾ÐÃàÇؼ­ °¡Á®´Ù ³õ°í
system("tar cvfp $backup_dir/$date_dir/www.tar /www > /dev/null");
system("tar cvfp $backup_dir/$date_dir/var_named.tar /var/named > /dev/null");
system("tar cvfp $backup_dir/$date_dir/mysql_var.tar /usr/local/mysql/var > /dev/null");
system("tar cvfp $backup_dir/$date_dir/etc.tar /etc > /dev/null");

#»ç¿ëÀÚµð·ºÅ丮´Â °¢°¢ ¾ÐÃàÇÑ´Ù.
system("ls /home01 > /home01/list");
open(FILES,"/home01/list");
@array = <FILES>;
system("rm -f /home01/list");
foreach $f(@array){
        chomp($f);
        system("tar cvfp $backup_dir/$date_dir/home01/$f.tar /home01/$f");
}
system("chmod -R 770 $backup_dir");
system("rm -rf /2ndDisk/$old_date_dir");
system("echo \"rm -rf $backup_dir/$old_date_dir\" >> /var/log/backup.log");
#system("umount /dev/sdb1");





±Ùµ¥ ¾î´À¼ø°£¿£°¡ ¸Å´Þ ÃÊ°¡ µÇ¸é Áö³­´Þ »èÁ¦¾ÈµÈ ÆÄÀϵéÀ» Áö¿ì´Â°Ô ¾öû³­ ³ë°¡´Ù°¡ µÇ¾î¹ö·È½À´Ï´Ù..
³¯Â¥°è»êÇؼ­ Áö¿ì´Â°É ÇÁ·Î±×·¥À¸·Î Â¥·Á´Ï ÆÞÀ» Àß ÇÏÁö ¸øÇÏ´Â °ü°è·Î..^^;;

¿ª½Ã »ç¶÷Àº ÷ ¹è¿î ¾ð¾î°¡ °¡Àå ½¬¿î¸ð¾çÀÔ´Ï´Ù...

±×¸® Àß Â§°Ç ¾Æ´ÏÁö¸¸ C ·Î ´ÞÀÌ Áö³ªµµ ÀÚµ¿À¸·Î ¾Ë¾Æ¼­ Áö¿öÁÖ´Â ÇÁ·Î±×·¥À» ®½À´Ï´Ù.

ºÎºÐÀûÀ¸·Î Á¶±Ý¾¿¸¸ ¼öÁ¤Çؼ­ »ç¿ëÇÏ½Ã¸é µÉµí ÇÕ´Ï´Ù.

¼Ò½ºÄÚµå:
#include <stdio.h>
#include <time.h>
#include <dirent.h>
#include <string.h>

/*---------------- »ç¿ëÀÚ°¡ °íÃÄ¾ß ÇÒ ºÎºÐ  -------------------------------------------------*/

const char        *BACKUP_DIR        = "/backups";   //¹é¾÷ÆÄÀÏÀÌ ÀúÀåµÉ Æú´õÀ» Àý´ë°æ·Î·Î ÁöÁ¤ÇØ ÁÝ´Ï´Ù.
const char        *HOME_DIR        = "/home";          //¹é¾÷ÇÒ È¨Æú´õ¸¦ ÁöÁ¤ÇØ ÁÝ´Ï´Ù.
const int        EXPIRE_DAY        = 3;                     //¸çÄ¥ÀÌ Áö³ª¸é »èÁ¦ÇÒ°ÇÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.


/*------------------------------------------------------------------------------------------*/

/*        php ÀÇ mktime °ú °°Àº ÀÏÀ» ÇÏ´Â Æã¼Ç.      */
time_t SFmktime(int hour, int minute, int second, int month, int day, int year){
                struct tm *change_time;
                time_t this_time;
                time(&this_time);
                change_time = gmtime(&this_time);
                
                year = year - 1900;
                month = month - 1;

                change_time->tm_sec                = second;
                change_time->tm_min                = minute;
                change_time->tm_hour        = hour;
                change_time->tm_mday        = day;
                change_time->tm_mon                = month;
                change_time->tm_year        = year;
                //printf("%02d-%02d-%02d\n",change_time->tm_year + 1900,change_time->tm_mon +1,change_time->tm_mday);
                return mktime(change_time);

}

/* main  --------------------------------------------*/
int main(){
                //time_t now;
                time_t today_second; //¿À´ÃÀÇ ½Ã°£À» ÃÊ·Î ÀúÀå¹ÞÀ» º¯¼ö
                time_t pastday; // µð·ºÅ丮¸ñ·ÏÀ» ³¯Â¥·Î º¯È¯ÇÑ ÈÄ ÀúÀå¹ÞÀ» º¯¼ö, °è¼Ó ¹Ù²ñ
                struct tm *today;

                DIR *directory; // µð·ºÅ丮 ÀúÀå°ø°£.
                struct dirent *dir_info; //µð·ºÅ丮 À̸§À» ÀúÀåÇÒ ±¸Á¶Ã¼
                char *remove_dirname;
                char *create_dirname;
                char *cmds;
                
                char sep[] = "-"; // ³¯Â¥ ÀÚ¸¦ ±¸ºÐÀÚ.
                char *pp; // Àӽ÷ΠÀß·ÁÁø ³¯Â¥.
                int  i, expire_second;
                char *year, *month, *day;
                char days[11];

                // ¹é¾÷µð·ºÅ丮À̸§À» ÀúÀåÇÒ ¸Þ¸ð¸®¸¦ ÃʱâÈ­ ÇÑ´Ù.
                remove_dirname = (char*)malloc(40);
                create_dirname = (char*)malloc(40);
                cmds           = (char*)malloc(1024);
                // ½Ã°£ ±¸Á¶Ã¼¸¦ ÃʱâÈ­ ½ÃÅ°°í
                time(&today_second);
                today = gmtime(&today_second);

                /*((((((((((( Çϵåµå¶óÀÌºê ¸¶¿îÆ® , ³»½Ã½ºÅÛ¿¡¼­¸¸ ÇÊ¿äÇÔ ))))))))))))))))))) */
                //system("mount /dev/sdb1 /backups");
                
                // ¿À´ÃÀÏÀÚ¸¦ ÃʷΠȯ»êÇÏ¿© ÀúÀåÇÑ´Ù.
                // today_second
                today_second = SFmktime(0,0,0,today->tm_mon + 1,today->tm_mday,today->tm_year + 1900);
                printf("=================================================================\n");
                printf(" %d-%d-%d ÀÏÀÚ ¹é¾÷½ºÅ©¸³Æ® ÀÛµ¿ Á¤º¸ÀÔ´Ï´Ù.\n",today->tm_year+1900,today->tm_mon+1,today->tm_mday);
                printf("=================================================================\n");
                //printf("%d\n",today_second);

                // ¿ì¼± ¹é¾÷ÇÒ µð·ºÅ丮³»¿¡ ÀÖ´Â Æú´õÀÇ À̸§À» ºÒ·¯ directory ¿¡ ÀúÀåÇÑ´Ù.
                directory = opendir(BACKUP_DIR);
                
                //¹è¿­ÀÌ Á¾·áµÉ¶§±îÁö ·çÇÁ¸¦ µ¹¸°´Ù. µð·ºÅ丮¸íÀ» dir_info ±¸Á¶Ã¼¿¡ ÀúÀåÇÑ´Ù.
                while((dir_info = readdir(directory)) != NULL){
                        // ¸¸¾à µð·ºÅ丮 À̸§ÀÌ . ³ª .. À̶ó¸é ³Ñ¾î°£´Ù.
                        if(strcmp(".",dir_info->d_name) == 0 || strcmp("..",dir_info->d_name) == 0){
                                continue;
                        }
                        // µð·ºÅ丮¸íÀ» "-" ±¸ºÐÀÚ·Î À߶󳻼­ Ãʸ¦ »Ì¾Æ³½ÈÄ ¿À´ÃÀÇ ÃÊ¿Í ºñ±³ÇÑ´Ù.
                        strncpy(days,dir_info->d_name,11);
                        pp = strtok(days,sep);
                        i =0;
                        while( pp != NULL){
                                if(i == 0)year = pp;
                                if(i == 1)month = pp;
                                if(i == 2)day = pp;
                                pp = strtok(NULL,sep);
                                i++;
                        }
                        // ³¯Â¥ Çü½Ä¿¡ ¸ÂÁö ¾Ê´Â Æú´õ¸íÀÌ ³ª¿À¸é ´ÙÀ½ Æú´õÈ®ÀÎÀ¸·Î ³Ñ¾î°£´Ù.
                        if(atoi(year) == 0 || atoi(month) == 0 || atoi(day) == 0){
                                printf("¹é¾÷Çü½Ä¿¡ ¸ÂÁö¾Ê´Â Æú´õ¸í [%s] ÀÔ´Ï´Ù. ¹«½ÃÇÕ´Ï´Ù.\n",dir_info->d_name);
                                printf("-----------------------------------------------------\n");
                                continue;
                        }

                        printf("%02d-%02d-%02d ÀÏÀÚÀÇ Æú´õ°¡ Á¸ÀçÇÕ´Ï´Ù\n",atoi(year),atoi(month),atoi(day));
                        // µð·ºÅ丮ÀÇ ³¯Â¥¸¦ ÃÊ·Î º¯È¯ÇÏ¿© ÀúÀåµÊ.
                        pastday = SFmktime(0,0,0,atoi(month),atoi(day),atoi(year));
                        expire_second = 86400 * EXPIRE_DAY;

                        //printf("%d - %d = %d\n",today_second, pastday, today_second-pastday);
                        if((today_second - pastday) > expire_second){
                                
                                printf("»èÁ¦´ë»óÆú´õ:[%s]        %dÀÏ °æ°ú\n",dir_info->d_name,(today_second-pastday)/86400);                        
                                //»èÁ¦ÀÛ¾÷À» ÇÑ´Ù.
                                sprintf(remove_dirname,"%s/%s",BACKUP_DIR,dir_info->d_name);
                                printf(" %s ¸¦ »èÁ¦ÇÕ´Ï´Ù...\n",remove_dirname);
                                if(rmdir(remove_dirname)){
                                                printf("»èÁ¦½ÇÆÐ! ¿¡·¯¸Þ¼¼Áö¸¦ È®ÀÎÇÏ¿© ÁֽʽÿÀ\n");
                                                printf("-----------------------------------------------------\n");
                                                exit();
                                }
                                printf("-----------------------------------------------------\n");

                        }// end if
                }
        closedir(directory);
        
        // ºÒ·¯¿Â µð·ºÅ丮¸íÀ» ÇÑÁÙ¾¿ ÀúÀåÇÑ ÈÄ ³âµµ¿Í ¿ù ÀÏ·Î ³ª´©¾î ÀúÀåÇÑ´Ù.
        sprintf(create_dirname,"%s/%02d-%02d-%02d",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        printf("Æú´õ %s ¸¦ »ý¼ºÇÕ´Ï´Ù..\n",create_dirname);
        if(mkdir(create_dirname,0700)){
                printf("»ý¼º½ÇÆÐ! ¿¡·¯¸Þ¼¼Áö¸¦ È®ÀÎÇÏ¿©ÁֽʽÿÀ\n");
                exit();
        }
        //¹é¾÷Æú´õ ¸í·É ÀúÀå
        
        sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/web.tar /web >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        printf("%s\n",cmds);
        system(cmds);
        sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/mysql.tar /usr/local/mysql >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        printf("%s\n",cmds);
        system(cmds);
        sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/etc.tar /etc >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        printf("%s\n",cmds);
        system(cmds);
        sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/web.tar /var >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        printf("%s\n",cmds);
        system(cmds);
        
        //home Æú´õÀÇ ¸ñ·ÏÀ» ºÒ·¯¿Í ÀúÀåÇÑ´Ù.
        directory = opendir(HOME_DIR);
                
        //¹è¿­ÀÌ Á¾·áµÉ¶§±îÁö ·çÇÁ¸¦ µ¹¸°´Ù. µð·ºÅ丮¸íÀ» dir_info ±¸Á¶Ã¼¿¡ ÀúÀåÇÑ´Ù.
        sprintf(create_dirname,"%s/%02d-%02d-%02d/home",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        if(mkdir(create_dirname,0700)){
                printf("»ý¼º½ÇÆÐ! ¿¡·¯¸Þ¼¼Áö¸¦ È®ÀÎÇÏ¿©ÁֽʽÿÀ\n");
                exit();
        }
        while((dir_info = readdir(directory)) != NULL){
                // ¸¸¾à µð·ºÅ丮 À̸§ÀÌ . ³ª .. À̶ó¸é ³Ñ¾î°£´Ù.
                if(strcmp(".",dir_info->d_name) == 0 || strcmp("..",dir_info->d_name) == 0){
                        continue;
                }
                sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/home/%s.tar %s/%s >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday,dir_info->d_name,HOME_DIR,dir_info->d_name);
                printf("%s\n",cmds);
                system(cmds);
        }//end of while

        sprintf(cmds,"chmod -R 0750 %s/%02d-%02d-%02d",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
        system(cmds);
        //system("umount /dev/sdb1");
        system("echo \"¹é¾÷¿Ï·á\" >> /var/log/backup.log");
}





À§ÀÇ ¼Ò½º¸¦
Àοë:
#gcc -o backup backup.c  


·Î ÄÄÆÄÀÏ ÇÏ½Ã¸é »ý¼ºµÇ±¸¿ä.

crontab µî¿¡ °¡Àå »ç¿ëÀÚ°¡ ÀûÀº½Ã°£¿¡ ¿Ã·Á³õÀ¸¸é ÀÚµ¿À¸·Î ³¯Â¥º°·Î 2003-07-01 µîÀÇ À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù.
±×¸®°í »èÁ¦³¯Â¥°¡ ³ÑÀº Æú´õ´Â »èÁ¦¸¦ Çϴµ¥ ¸¸¾à Æú´õ¸íÀÌ ³¯Â¥Çü½ÄÀÌ ¾Æ´Ï¶ó¸é »èÁ¦ÇÏÁö ¾Ê°í ¹«½ÃÇÕ´Ï´Ù.
¸¸¿¡Çϳª Áß¿äÇÑ ÆÄÀÏÀÌ »èÁ¦µÉÁöµµ ¸ô¶ó¼­ Äڵ带 ³Ö¾î³ù½À´Ï´Ù.

½ÇÇàÇÁ·Î±×·¥ÀÇ ±ÇÇÑÀº 700 À¸·Î ÇØ ÁÖ¼¼¿ä. system Äڸǵ尡 ¸¹ÀÌ µé¾î°£ °ü°è·Î º¸¾È»ó¿¡ ¹®Á¦°¡ ÀÖÀ» ¼ÒÁö°¡ ÀÖ°í ¶Ç ·çÆ®ÀÌ¿Ü¿¡´Â »ç¿ëÇÒ ÀÏÀÌ ¾øÀ»Å×´Ï Æ۹̼ÇÀ» Ç®¾îÁÙ ÇÊ¿äµµ ¾ø±¸¿ä..

¹é¾÷ÇÒ ÀÚ·á´Â ¸¹°í ´ÞÀÌ Áö³ª¸é Áö¿öÁöÁö¾ÊÀº ÆÄÀϵéÀ» Áö¿ì´Â°Ô ÀÏÀ̽ŠºÐµé²²¼­´Â »ç¿ëÇØ º¸¼¼¿ä.
´Ü, Ã¥ÀÓÀº ÁöÁö ¾Ê½À´Ï´Ù..^^

±Ã±ÝÇÑ°Ô ÀÖÀ¸½Ã¸é ¿Ã·ÁÁֽñ¸¿ä..









±èÇõÁß

  »ç¿ëÀÚ°¡ °íÃľßÇÒ ºÎºÐ¸¸ °íÄ¡¸é Àú ¼Ò½º ±×´ë·Î ÄÄÆÄÀÏÇؼ­ »ç¿ëÇصµ ¾Æ¹«·± ¹®Á¦°¡ ¾ø³ª¿ä? 2003-07-22
01:04:40
  



¹Ú¼º°ï


  ÇöÀç Á¦°¡ »ç¿ëÁßÀÔ´Ï´Ù.


À½..¾ÆÁ÷±îÁö´Â ¾Æ¹«·± ¹®Á¦°¡ ¾ø±º¿ä...--

´Ü ÀÌ ºÎºÐ¿¡ ½Ã½ºÅÛ ¸í·É¿¡ ¾ÐÃàÇÒ ´ë»óÆú´õ´Â ÀÚ½ÅÀÇ °æ·Î·Î ¼öÁ¤ÇØ ÁÖ½Ã¸é µË´Ï´Ù.

sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/web.tar /web >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
printf("%s\n",cmds);
system(cmds);
sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/mysql.tar /usr/local/mysql >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
printf("%s\n",cmds);
system(cmds);
sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/etc.tar /etc >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
printf("%s\n",cmds);
system(cmds);
sprintf(cmds,"tar cvfp %s/%02d-%02d-%02d/web.tar /var >> /var/log/backup.log 2>> /var/log/backup.err.log",BACKUP_DIR,today->tm_year+1900,today->tm_mon+1,today->tm_mday);
printf("%s\n",cmds);
system(cmds); 2003-07-22
06:16:29
  



  ÃßõÇÏ±â   ¸ñ·Ïº¸±â

Copyright 1999-2024 Zeroboard / skin by zero