]>
git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.cms/src/org/argeo/slc/backup/vfs/PostgreSqlBackup.java
1 package org
.argeo
.slc
.backup
.vfs
;
3 import org
.apache
.commons
.vfs2
.FileObject
;
5 /** Backups a PostgreSQL database using pg_dump. */
6 public class PostgreSqlBackup
extends OsCallBackup
{
8 * PostgreSQL password environment variable (see
9 * http://stackoverflow.com/questions
10 * /2893954/how-to-pass-in-password-to-pg-dump)
12 protected final static String PGPASSWORD
= "PGPASSWORD";
14 private String pgDumpLocation
= "/usr/bin/pg_dump";
16 private String dbUser
;
17 private String dbPassword
;
18 private String dbName
;
20 public PostgreSqlBackup() {
24 public PostgreSqlBackup(String dbUser
, String dbPassword
, String dbName
) {
26 this.dbPassword
= dbPassword
;
33 // disable compression since pg_dump is used with -Fc option
36 if (getName() == null)
37 setName(dbName
+ ".pgdump");
42 public void writeBackup(FileObject targetFo
) {
43 if (getCommand() == null) {
44 getEnvironment().put(PGPASSWORD
, dbPassword
);
45 setCommand(pgDumpLocation
+ " -Fc" + " -U ${dbUser} ${dbName}");
47 getVariables().put("dbUser", dbUser
);
48 getVariables().put("dbPassword", dbPassword
);
49 getVariables().put("dbName", dbName
);
51 super.writeBackup(targetFo
);
54 public void setDbUser(String dbUser
) {
58 public void setDbPassword(String dbPassword
) {
59 this.dbPassword
= dbPassword
;
62 public void setDbName(String dbName
) {
66 public void setPgDumpLocation(String mysqldumpLocation
) {
67 this.pgDumpLocation
= mysqldumpLocation
;