# Description MySQL Backup
# Ver 1.0
# Define some variables
my $BACKUP_DIR= "/data"; # 指定备份路径
my $DATA_DIR = "$BACKUP_DIR/data";
my $BACKUP_LOG = "$BACKUP_DIR/backup.log";
my $DB_USER = " "; # 数据库用户名
my $DB_PASS = " "; # 数据库密码
open(LOGFILE,">> $BACKUP_LOG");
print LOGFILE (`date +'%Y-%m-%d %H:%M:%S'`);
print LOGFILE ("--------------------------\n");
chomp($CURRENT_DATE); # clear "\n"
# stat()函数返回一个数组,下面是数组各个元素的含义:
# 0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
# 1 ino 索引节号 总是0
# 2 mode 文件的方式 无
# 3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
# 4 uid 文件所有者的用户ID(UID)总是0
# 5 gid 文件所有者的组ID(GID)总是0
# 6 rdev 特殊文件信息 驱动器号(重复)
# 7 size 文件大小(以字节计)文件大小(以字节计)
# 8 atime 上次访问的时间 上次访问的时间
# 9 mtime 上次修改的时间 上次修改的时间
# 10 ctime Inode修改时间 文件的创建时间
# 11 blksz 磁盘块的大小 总是0
# 12 blocks 文件中的块的数量 总是0
# 例子:
# 获取某个文件的创建时间和最后一次修改时间,
# my @array = stat("a.html");
# print "$array[9]\n"; # 输出a.html文件上次修改的时间
if (! -e "$DATA_DIR/$db"){
mkdir("$DATA_DIR/$db");
}
print LOGFILE ("Backup $db successfully!\n"); #将备份操作写入日志
my @db_file = <$DATA_DIR/$db/*.*>; # <$DATA_DIR/$db/*.*> 表示匹配该目录下*.*模式的文件
foreach my $db_file (@db_file){
my @f_info = stat($db_file); # array,9 meant mtime
if (time() - $f_info[9] > (60*60*12*5)){ # 60*60*60*5 表示5天的总秒数
unlink $db_file; #删除文件
print LOGFILE ("Delete OldFile $db_file successfully!\n"); #将删除操作写入日志
}
}
}
close(LOGFILE);