pack-2.6.6.pl
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/usr/bin/perl
  2. use strict;
  3. use Archive::Tar;
  4. my $subdir;
  5. my $file;
  6. my $archive_name;
  7. my $version = "2.6.6";
  8. my $build_dir = "/work/db/upgrade/db-2.6.6/build_unix";
  9. my $db_dump_path = "$build_dir/db_dump";
  10. my $pwd = `pwd`;
  11. $| = 1;
  12. chomp( $pwd );
  13. opendir( DIR, $version . "le" ) || die;
  14. while( $subdir = readdir( DIR ) )
  15. {
  16. if( $subdir !~ m{^..?$} )
  17. {
  18. opendir( SUBDIR, $version . "le/$subdir" ) || die;
  19. while( $file = readdir( SUBDIR ) )
  20. {
  21. if( $file !~ m{^..?$} )
  22. {
  23. print "[" . localtime() . "] " . "$subdir $file", "n";
  24. eval
  25. {
  26.                                         my $data;
  27.                                         my $archive;
  28. system( "mkdir", "-p", "$version/$subdir" );
  29. $file =~ m{(.*).};
  30. $archive_name = "$1";
  31. $archive_name =~ s{Test}{test};
  32. $archive = Archive::Tar->new();
  33. $archive->add_data( "$archive_name-le.db",
  34. read_file( $version . "le/$subdir/$file" ) );
  35. # $archive->add_data( "$archive_name-be.db",
  36. # read_file( $version . "be/$subdir/$file" ) );
  37. $archive->add_data( "$archive_name.dump",
  38. db_dump( "$pwd/$version" . "le/$subdir/$file" ) );
  39. $data = tcl_dump( "$pwd/$version" . "le/$subdir/$file" );
  40. $archive->add_data( "$archive_name.tcldump", $data );
  41. $archive->write( "$version/$subdir/$archive_name.tar.gz", 9 );
  42. };
  43. if( $@ )
  44. {
  45. print( "Could not process $file: $@n" );
  46. }
  47. }
  48. }
  49. }
  50. }
  51. sub read_file
  52. {
  53. my ($file) = @_;
  54. my $data;
  55. open( FILE, "<$file" ) || die;
  56. read( FILE, $data, -s $file );
  57. close( file );
  58. return $data;
  59. }
  60. sub db_dump
  61. {
  62. my ($file) = @_;
  63. #print $file, "n";
  64. unlink( "temp.dump" );
  65. system( "sh", "-c", "$db_dump_path $file >temp.dump" ) && die;
  66. if( -e "temp.dump" )
  67. {
  68. return read_file( "temp.dump" );
  69. }
  70. else
  71. {
  72. die "db_dump failure: $filen";
  73. }
  74. }
  75. sub tcl_dump
  76. {
  77. my ($file) = @_;
  78.         my $up_dump_args = "";
  79.         if ($file =~ /test012/) {
  80.                $up_dump_args .= "1";
  81.         }
  82. unlink( "temp.dump" );
  83. open( TCL, "|$build_dir/dbtest" );
  84. print TCL <<END;
  85. cd $build_dir
  86. source ../test/test.tcl
  87. upgrade_dump $file $pwd/temp.dump $up_dump_args
  88. END
  89. close( TCL );
  90. if( -e "temp.dump" )
  91. {
  92. return read_file( "temp.dump" );
  93. }
  94. else
  95. {
  96. die "TCL dump failure: $filen";
  97. }
  98. }