Fix directory creation for scheduled backups, and create as the right owner
authorJamie Cameron <jcameron@webmin.com>
Sun, 6 Mar 2011 01:31:43 +0000 (17:31 -0800)
committerJamie Cameron <jcameron@webmin.com>
Sun, 6 Mar 2011 01:31:43 +0000 (17:31 -0800)
postgresql/backup.cgi
postgresql/backup.pl
postgresql/postgresql-lib.pl

index 24687ca..193f80a 100755 (executable)
@@ -105,7 +105,7 @@ if (!$in{'save'}) {
                        }
                if ($in{'all'}) {
                        $dir = &date_subs($in{'path'});
-                       &make_dir($dir, 0755) if ($in{'mkdir'});
+                       &make_backup_dir($dir) if ($in{'mkdir'});
                        $path = $dir."/".$db.".".$suf;
                        }
                else {
index 6fa93af..71ee70a 100755 (executable)
@@ -32,10 +32,13 @@ foreach $db (@dbs) {
                next;
                }
        $format = $config{'backup_format_'.$sf};
+       $mkdir = $config{'backup_mkdir_'.$sf};
        $suf = $format eq "p" ? "sql" :
               $format eq "t" ? "tar" : "post";
        if ($all) {
-               $file = &date_subs("$config{'backup_'}/$db.$suf");
+               $dir = &date_subs($config{'backup_'});
+               $file = "$dir/$db.$suf";
+               &make_backup_dir($dir) if ($mkdir);
                }
        else {
                $file = &date_subs($config{'backup_'.$db});
index 1893975..554c297 100755 (executable)
@@ -754,6 +754,19 @@ if ($cmd) {
 return 1;
 }
 
+# make_backup_dir(directory)
+# Create a directory that PostgreSQL can backup into
+sub make_backup_dir
+{
+local ($dir) = @_;
+if (!-d $dir) {
+       &make_dir($dir, 0755);
+       if ($postgres_sameunix && defined(getpwnam($postgres_login))) {
+               &set_ownership_permissions($postgres_login, undef, undef, $dir);
+               }
+       }
+}
+
 sub quote_table
 {
 local @tn = split(/\./, $_[0]);