¾È³çÇϼ¼¿ä^^
»êÀÌ´Ô ¾Æ·¡ ½ºÅ©¸³Æ®Á» ºÁÁÖ¼¼¿ä..
¾Æ·¡´ë·Î ÄÄÆÄÀÏÇؼ ¹é¾÷½ºÅ©¸³Æ®¸¦ µ¹¸®´Âµ¥..
³¯Â¥º°·Î ¹é¾÷ÀÌ µÇÁö ¾Ê°í óÀ½¿¡ »ý¼ºÇÑ Æú´õ¸¸ °è¼Ó ã¾Æ »ý¼º½ÃµµÇÏ´Ù°¡ ½ÇÆÐÇÕ´Ï´Ù.
¿¹¸¦µé¸é 2003³â 09¿ù 23ÀÏ¿¡ ¹é¾÷µÈ Æú´õ°¡ ÀÖ´Ù¸é...
±× ´ÙÀ½³¯ºÎÅÏ °è¼Ó 2003-09-23 Æú´õ¸¸ »ý¼ºÇÏ·Á°í ÇÏÁÒ.
µµ´ëü ÀÌÀ¯°¡ ¹»±î¿ä...
Áö±ÝÀº Å©·ÐÀ¸·Î ¹é¾÷½Ã°£ 5ºÐÀü¿¡ Àü³¯ Æú´õ¸¦ »èÁ¦ÇØÁÖ´Â ¹æ½ÄÀ¸·Î µ¹¸®°í Àְŵç¿ä..
ÈÄ¿ì¿ò.. ºÒÆíÇϱä Çϳ׿ä....
¾Æ·¡´Â ¼Ò½º ÀÔ´Ï´Ù.
ÆÄÀϵµ ¸µÅ©½ÃÄÑ µÎ°Ú½À´Ï´Ù.
http://www.inet1004.net/backup.c
------------------------------------------------------------------------------------
--------
#include <stdio.h>
#include <time.h>
#include <dirent.h>
#include <string.h>
/*---------------- »ç¿ëÀÚ°¡ °íÃÄ¾ß ÇÒ ºÎºÐ
-------------------------------------------------
*/
const char *BACKUP_DIR = "/backup"; //¹é¾÷ÆÄÀÏÀÌ ÀúÀåµÉ
Æú´õÀ» Àý´ë°æ·Î·Î ÁöÁ¤ÇØ
ÁÝ´Ï´Ù.
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);
// ¿À´ÃÀÏÀÚ¸¦ ÃʷΠȯ»êÇÏ¿© ÀúÀåÇÑ´Ù.
// today_second
today_second = SFmktime(0,0,0,today->tm_mon +
1,today->tm_mday,today-
>tm_year + 1900);
printf("=================================================================\n&quo
t;);
printf(" %d-%d-%d ÀÏÀÚ ¹é¾÷½ºÅ©¸³Æ® ÀÛµ¿
Á¤º¸ÀÔ´Ï´Ù.\n",today-
>tm_year+1900,today->tm_mon+1,today->tm_mday);
printf("=================================================================\n&quo
t;);
//printf("%d\n",today_second);
// ¿ì¼± ¹é¾÷ÇÒ µð·ºÅ丮³»¿¡ ÀÖ´Â Æú´õÀÇ À̸§À» ºÒ·¯ directory ¿¡
ÀúÀåÇÑ´Ù.
directory = opendir(BACKUP_DIR);
//¹è¿ÀÌ Á¾·áµÉ¶§±îÁö ·çÇÁ¸¦ µ¹¸°´Ù. µð·ºÅ丮¸íÀ» dir_info ±¸Á¶Ã¼¿¡
ÀúÀåÇÑ´Ù.
while((dir_info = readdir(directory)) != NULL){
// ¸¸¾à µð·ºÅ丮 À̸§ÀÌ . or .. or logs ¶ó¸é ³Ñ¾î°£´Ù.
if(strcmp(".",dir_info->d_name) == 0 ||
strcmp("..",dir_info->d_name) == 0 ||
strcmp("logs",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 cvfpz %s/%02d-%02d-%02d/usr.local.tar.gz /usr/local/
>> /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 cvfpz %s/%02d-%02d-%02d/etc.tar.gz /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 cvfpz %s/%02d-%02d-%02d/var.tar.gz /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);
sprintf(cmds,"tar cvfpz %s/%02d-%02d-%02d/db.tar.gz /db >>
/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 cvfpz %s/%02d-%02d-%02d/sys.tar.gz /sys >>
/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){
// ¸¸¾à µð·ºÅ丮 À̸§ÀÌ . or .. or logs ¶ó¸é ³Ñ¾î°£´Ù.
if(strcmp(".",dir_info->d_name) == 0 ||
strcmp("..",dir_info->d_name) == 0 || strcmp
("logs",dir_info->d_name) == 0){
continue;
}
sprintf(cmds,"tar cvfpz %s/%02d-%02d-%02d/home/%s.tar.gz %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 0600 %s/%02d-%02d-%02d",BACKUP_DIR,today-
>tm_year+1900,today->tm_mon+1,today->tm_mday);
system(cmds);
system("echo \"¹é¾÷¿Ï·á\"
>> /var/log/backup.log");
}
|