On 05/05/2013 20:31, Tanstaafl wrote: > On 2013-05-05 2:18 PM, Neil Bothwick <n...@digimed.co.uk> wrote:> On > Sun, 05 May 2013 14:07:50 -0400, Tanstaafl wrote: >>> /home/user/mypg_backups/2013/May/Sun/pg_all-13:54.gz: No such file or >>> directory >>> >>> So, it is expanding the variables properly, but apparently won't >>> automatically create the directories? Is there some kind of flag >>> I can add to the command to do that? > >> mkdir -p $BACKUP_DIR/$PGyy/$PGmm/$PGdd/ > > Thanks Neill... > > Tried changing the command in the script to: > >> /usr/bin/pg_dumpall -U $PGUSER -o | gzip > mkdir -p >> $BACKUP_DIR/$PGyy/$PGmm/$PGdd/pg_all-$PGtt.gz
That can never possibly work. Look at it carefully and see what it does: You pipe pg_dumpall to gzip and redirect that to a FILE called gzip. I hope you don't run that as root in /bin/! Anyway, what is the shell supposed to do with the -p $BACKUP.... ? What you want cannot be done in one step. You must do it this way (in pseudocode) if dir does not exist create dir write output to file in that dir In real bash test -d $BACKUP_DIR/$PGyy/$PGmm/$PGdd/ || mkdir -p $BACKUP_DIR/$PGyy/$PGmm/$PGdd/ /usr/bin/pg_dumpall -U $PGUSER -o -f $BACKUP_DIR/$PGyy/$PGmm/$PGdd/pg_all-$PGtt.gz I deliberately used the less common "test" command for readability rather than what you will usually find in practice "[[" > > and got this error: > > # ./ecat_pgdump.sh > gzip: invalid option -- 'p' > > Tried putting quotes around it like this: > >> /usr/bin/pg_dumpall -U $PGUSER -o | gzip > "mkdir -p >> $BACKUP_DIR/$PGyy/$PGmm/$PGdd/pg_all-$PGtt.gz" > > and got the original error with the added 'mkdir -p': > > # ./mypg_pgdumpall.sh > ./mypg_pgdumpall.sh: line 10: mkdir -p > /home/user/mypg_backups/2013/May/Sun/ecat-14:26.gz: No such file or > directory > > I'm guessing I just need to know where to put the quotes? No, you need to learn basic script techniques and how bash works wrt to redirection and piping. I recommend a rather famous tutorial - Bash Scripting Guide. Last I looked it was available on tldp.org, but Google knows all the places it is -- Alan McKinnon alan.mckin...@gmail.com