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
|
|
|