1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/*-------------------------------------------------------*/
/* util/backupgem.c ( NTHU MapleBBS Ver 3.10 ) */
/*-------------------------------------------------------*/
/* target : 備份所有精華區資料 */
/* create : 01/10/19 */
/* update : / / */
/* author : itoc.bbs@bbs.tnfsh.tn.edu.tw */
/*-------------------------------------------------------*/
#include "bbs.h"
int
main()
{
struct dirent *de;
DIR *dirp;
char *ptr;
char bakpath[128], cmd[256];
time_t now;
struct tm *ptime;
if (chdir(BBSHOME "/gem") || !(dirp = opendir(".")))
exit(-1);
/* 建立備份路徑目錄 */
time(&now);
ptime = localtime(&now);
sprintf(bakpath, "%s/gem%02d%02d%02d", BAKPATH, ptime->tm_year % 100, ptime->tm_mon + 1, ptime->tm_mday);
mkdir(bakpath, 0755);
sprintf(cmd, "cp %s %s/", FN_DIR, bakpath);
system(cmd);
/* 把 0~9 @ A~V 分別壓縮成一個壓縮檔 */
while (de = readdir(dirp))
{
ptr = de->d_name;
/* 看板的精華區另外備份 */
if (!strcmp(ptr, "brd"))
continue;
if (ptr[0] > ' ' && ptr[0] != '.')
{
sprintf(cmd, "tar cfz %s/%s.tgz %s", bakpath, ptr, ptr);
system(cmd);
}
}
closedir(dirp);
/* 備份看板 */
if (chdir(BBSHOME "/gem/brd") || !(dirp = opendir(".")))
exit(-1);
/* 建立備份路徑目錄 */
sprintf(bakpath, "%s/brd", bakpath);
mkdir(bakpath, 0755);
/* 把各看板分別壓縮成一個壓縮檔 */
while (de = readdir(dirp))
{
ptr = de->d_name;
if (ptr[0] > ' ' && ptr[0] != '.')
{
sprintf(cmd, "tar cfz %s/%s.tgz %s", bakpath, ptr, ptr);
system(cmd);
}
}
closedir(dirp);
exit(0);
}
|