diff --git a/.gitignore b/.gitignore index 0de8ad2..e1e5180 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ bin dist .env coverage.txt +.idea/ diff --git a/pkg/dbdump/mysql/mysql.go b/pkg/dbdump/mysql/mysql.go index fbd82bb..9653425 100644 --- a/pkg/dbdump/mysql/mysql.go +++ b/pkg/dbdump/mysql/mysql.go @@ -74,9 +74,16 @@ func (d Dump) Exec(ctx context.Context) error { // Use a pipe to gzip the output gzipCmd := exec.CommandContext(ctx, "gzip") gzipCmd.Stdin, _ = cmd.StdoutPipe() - gzipCmd.Stdout = os.Stdout gzipCmd.Stderr = os.Stderr + f, err := os.Create(d.DumpName) + if err != nil { + return fmt.Errorf("failed to create dump output file: %w", err) + } + + defer f.Close() + gzipCmd.Stdout = f + trace(cmd) if err := cmd.Start(); err != nil { return fmt.Errorf("failed to start mysqldump: %w", err) diff --git a/pkg/dbdump/postgres/postgres.go b/pkg/dbdump/postgres/postgres.go index e6800c9..d990ac0 100644 --- a/pkg/dbdump/postgres/postgres.go +++ b/pkg/dbdump/postgres/postgres.go @@ -75,9 +75,16 @@ func (d Dump) Exec(ctx context.Context) error { // Use a pipe to gzip the output gzipCmd := exec.CommandContext(ctx, "gzip") gzipCmd.Stdin, _ = cmd.StdoutPipe() - gzipCmd.Stdout = os.Stdout gzipCmd.Stderr = os.Stderr + f, err := os.Create(d.DumpName) + if err != nil { + return fmt.Errorf("failed to create dump output file: %w", err) + } + + defer f.Close() + gzipCmd.Stdout = f + trace(cmd) if err := cmd.Start(); err != nil { return fmt.Errorf("failed to start pg_dump: %w", err)