/[scripts]/trunk/pgsql-git-backup.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/pgsql-git-backup.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 84 - (hide annotations)
Thu Sep 11 19:59:52 2008 UTC (15 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 1341 byte(s)
undef dump variable to force recollection of memory for huge objects

1 dpavlin 82 #!/usr/bin/perl
2    
3     # split PostgreSQL dump into individual files for backup with git
4     #
5     # 09/11/08 20:10:39 CEST Dobrica Pavlinusic <dpavlin@rot13.org>
6    
7     use warnings;
8     use strict;
9    
10     use Getopt::Long;
11     my $git = '/tmp/pgsql-git-backup/';
12     my $verbose = 0;
13     my $database = '';
14    
15     my $usage = "Usage: $0 --database name < name-dump.sql\n";
16    
17     GetOptions(
18     'git=s' => \$git,
19     'database=s' => \$database,
20     'verbose+' => \$verbose,
21     ) or die $usage;
22    
23     die $usage unless $database;
24    
25     my $nr = 0;
26     my $name = $database;
27     my $d;
28    
29 dpavlin 83 sub git {
30     my $cmd = shift or die "no cmd?";
31     system($cmd) == 0 or die "$cmd FAILED $?";
32     }
33    
34 dpavlin 82 sub write_chunk {
35     my $path = sprintf("%s/%02d%s.sql", $database, $nr++, $name);
36     open(my $fh, '>', $path) or die "can't open file $path: $!";
37     print $fh $d;
38     close($fh);
39     warn ">> $path ", -s $path, "\n" if $verbose;
40 dpavlin 83 git "git-add '$path'";
41 dpavlin 82 }
42    
43     if ( ! -e $git ) {
44     mkdir $git or die "can't create $git: $!";
45 dpavlin 83 git 'git-init-db';
46 dpavlin 82 }
47    
48 dpavlin 83 chdir($git) or die "can't chdir $git: $!";
49    
50 dpavlin 82 if ( ! -e $database ) {
51     mkdir $database or die "can't create $database: $!";
52 dpavlin 83 # git "git-add '$database'";
53     # git "git-commit -m 'added $database directory' $database";
54 dpavlin 82 }
55    
56     while(<STDIN>) {
57     if (/-- Name: (.+?);/) {
58     write_chunk;
59     $name = " $1";
60     $name =~ s/\W+/ /g;
61 dpavlin 84 undef $d;
62 dpavlin 82 $d = '';
63     }
64     $d .= $_;
65     }
66    
67     write_chunk;
68    
69 dpavlin 83 git "git-commit -m '$database' '$database'";

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26