免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2588 | 回复: 1
打印 上一主题 下一主题

【求助】Perl压缩文件诡异事件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-30 17:33 |只看该作者 |倒序浏览
本帖最后由 不死草 于 2016-01-05 09:09 编辑

使用同一段代码,压缩相同类型的文件(SQL Serer 备份文件),一个数据库文件可以正常压缩解压;另外一个可以压缩,但是不能正常解压,解压缩报错“不支持的压缩算法”;
区别在于是两个不同数据库的文件;使用代码压缩后,不能正常手动解压的那个文件,如果是使用手动压缩,再手动解压是没问题的。
所以,请问大家有没有碰到过类似的问题。
  1. use strict;
  2. use File::Copy;

  3. my ($basedir, $bakDir) = @ARGV;

  4. #direct the base URL
  5. chdir $basedir;

  6. #Get current month and the last month info
  7. my $curMonth = gettime("yyyymm");
  8. my $lastMonth = $curMonth - 1;
  9. my $currentime = gettime("yyyy-mm-dd hh:mi:ss");
  10. print "0.0) Start DB Ziping on $currentime...\n";
  11. #get all sub folders
  12. my @dirs = glob("*.bak");

  13. #get the latest 2 months attach files' URL
  14. #my @dirs = ($lastMonth,$curMonth);

  15. #Zip and backup the files
  16. for my $i (0..$#dirs){
  17.         if(-e @dirs[$i]){
  18.          my $zipFilename = $bakDir.@dirs[$i]."\.zip";
  19.          my $j = $i + 1;
  20.          if(-e $zipFilename){}
  21.          else{
  22.        print "$j.1) Create DB Zip File ",@dirs[$i],"\.zip...\n";
  23.        zipTree(@dirs[$i],$zipFilename);
  24.            my $currentime =  gettime("yyyy-mm-dd hh:mi:ss");
  25.        print "$j.2) Finished the DB Zip File ",@dirs[$i],"\.zip on $currentime\n";
  26.          }
  27.    }
  28. }
  29. #-------------------------------------------------------------------------------------------------
  30. #-------------------------------------------------------------------------------------------------
  31. sub zipTree{
  32.         use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
  33.         #define var
  34.   my ($basedir,$filename) = @_;
  35.   #create zip object
  36.   my $zip = Archive::Zip->new();
  37.   # add all readable files and directories below .
  38.   $zip->addTree($basedir);
  39.   # and write them into a file
  40.   $zip->writeToFileNamed($filename);
  41. }

  42. sub readFilenames{
  43.    my $dir=$_ ;       
  44.    opendir ( DIR, $dir ) || die "Error in opening dir $dir\n";
  45.    while( (my $filename = readdir(DIR))){
  46.      print("$filename\n");
  47.     }
  48.    closedir(DIR);
  49. }

  50. sub gettime {
  51.     $_ = shift;
  52.     my $t = shift;
  53.     (!$t) and ($t = time);
  54.     my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t);
  55.     $year += 1900;
  56.     my $yy = substr $year,2,2;
  57.     $mon++;
  58.     s/yyyy/$year/gi;
  59.     s/yy/$yy/gi;
  60.     if ($mon < 10)  { s/mm/0$mon/gi;  } else { s/mm/$mon/gi; }
  61.     if ($mday < 10) { s/dd/0$mday/gi; } else { s/dd/$mday/gi; }
  62.     if ($hour < 10) { s/hh/0$hour/gi; } else { s/hh/$hour/gi; }
  63.     if ($min < 10)  { s/mi/0$min/gi;  } else { s/mi/$min/gi; }
  64.     if ($sec < 10)  { s/ss/0$sec/gi;  } else { s/ss/$sec/gi; }

  65.     $_;
  66. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2016-01-29 17:49 |只看该作者
都没有人碰到过吗?自己顶一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP