Use 'mount' instead of checking for directory existence to determine if the 
filesystem is mounted and return the corresponding exit status? (if 
backuppc has created the directory structure on the main drive instead of 
a mounted one, it's safe to remove inside the script. Use 'rm' on each 
level working your way up, NOT 'rm -rf' on the parent, if you're paranoid 
or don't fully trust your script.)

Or am I misunderstanding the problem?

Cheers, Stephen
--
Stephen Joyce
Systems Administrator                                            P A N I C
Physics & Astronomy Department                         Physics & Astronomy
University of North Carolina at Chapel Hill         Network Infrastructure
voice: (919) 962-7214                                        and Computing
fax: (919) 962-0480                               http://www.panic.unc.edu

  Some people make the world turn and others just watch it spin.
    -- Jimmy Buffet

On Thu, 20 Sep 2007, Kimball Larsen wrote:

> Ok, I've done a bunch more research into this, and discovered the problem:
>
> backuppc creates the target directories for the backup destination BEFORE it 
> calls BackupPC_dump, so my pre conditions are always returning true, because 
> BackupPC just created the necessary file structure.
>
> So, I'm looking for either a) where is the check that decides to create the 
> file structure before doing a dump or b) how to re-arrange my setup so that 
> backupPC just fails if the destination for the backup does not exist.
>
> Again, here's my setup:
>
> /Volumes/Honker <-- this is an external hard drive that is only mounted 
> periodically.  When it is not mounted, /Volumes does NOT have a "Honker" 
> directory.
>
>
> here's with my external drive disconnected:
> MainEngineering:/Volumes root# pwd
> /Volumes
> MainEngineering:/Volumes root# ls -la
> total 8
> drwxrwxrwt    3 root  admin   102 Sep 20 14:57 .
> drwxr-xr-x   31 root  wheel  1156 Sep 18 12:21 ..
> lrwxr-xr-x    1 root  admin     1 Sep 18 12:21 Guido -> /
> MainEngineering:/Volumes root#
>
>
> and again with it connected:
> MainEngineering:/Volumes root# ls -la
> total 8
> drwxrwxrwt    4 root     admin     136 Sep 20 14:58 .
> drwxr-xr-x   31 root     wheel    1156 Sep 18 12:21 ..
> lrwxr-xr-x    1 root     admin       1 Sep 18 12:21 Guido -> /
> drwxr-xr-x    8 unknown  unknown   374 Sep 20 14:45 Honker
> MainEngineering:/Volumes root#
>
>
> The problem is that if a Honker directory exists in /Volumes, then when I 
> attach the drive, it mounts as Honker-1, so my backups don't get to the right 
> file system.
>
> Help!
>
> -- Kimball
> On Sep 20, 2007, at 1:24 PM, Kimball Larsen wrote:
>
>> (Sorry for the re-post - I realized I forgot to put on a subject last time)
>> 
>> Hokay, I'm stuck.  I give.  I need help.
>> 
>> The documentation for UserCmdCheckStatus says:
>>
>>    "Whether the exit status of each PreUserCmd and PostUserCmd is checked.
>>
>>    "If set and the Dump/Restore/Archive Pre/Post UserCmd returns a non-zero 
>> exit status then the dump/restore/archive is aborted. To maintain backward 
>> compatibility (where the exit status in early versions was always ignored), 
>> this flag defaults to 0.
>>
>>    "If this flag is set and the Dump/Restore/Archive PreUserCmd fails then 
>> the matching Dump/Restore/Archive PostUserCmd is not executed. If 
>> DumpPreShareCmd returns a non-exit status, then DumpPostShareCmd is not 
>> executed, but the DumpPostUserCmd is still run (since DumpPreUserCmd must 
>> have previously succeeded).
>>
>>    "An example of a DumpPreUserCmd that might fail is a script that 
>> snapshots or dumps a database which fails because of some database error."
>> 
>> 
>> Simple enough - so I wrote a script to verify that the location to which I 
>> am about to try to backup actually exists (I'm backing up to a removable 
>> drive that does get removed, from time to time, and I only want the backups 
>> to run when the drive is attached).  Then I set this script to the value 
>> for the various Pre conditions:
>> 
>> $Conf{DumpPreUserCmd} = '$sshPath -q -x -l kimball $host 
>> /usr/local/bin/checkHonker';
>> $Conf{DumpPostUserCmd} = undef;
>> $Conf{DumpPreShareCmd} = '$sshPath -q -x -l kimball $host 
>> /usr/local/bin/checkHonker';
>> $Conf{DumpPostShareCmd} = undef;
>> $Conf{RestorePreUserCmd} = '$sshPath -q -x -l kimball $host 
>> /usr/local/bin/checkHonker';
>> $Conf{RestorePostUserCmd} = undef;
>> $Conf{ArchivePreUserCmd} = '$sshPath -q -x -l kimball $host 
>> /usr/local/bin/checkHonker';
>> $Conf{ArchivePostUserCmd} = undef;
>> 
>> and I set it to check the status of the user commands:
>> 
>> $Conf{UserCmdCheckStatus} = 1;
>> 
>> But it still runs the backup (and writes over my mount point for my 
>> external drive)
>> 
>> I've verified that the script returns a non-zero when the drive is not 
>> present:
>> 
>> sillyHost:~ backuppc$ /usr/bin/ssh -q -x -l kimball 192.168.0.21 
>> /usr/local/bin/checkHonker
>> Checking for Honker
>> Honker NOT mounted
>> sillyHost:~ backuppc $ echo $?
>> 1
>> 
>> 
>> What am I missing?
>> 
>> -- Kimball
>> 
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2005.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________
>> BackupPC-users mailing list
>> BackupPC-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/backuppc-users
>> http://backuppc.sourceforge.net/
>
>
>
> -- 
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/backuppc-users
http://backuppc.sourceforge.net/

Reply via email to