I've used the following method before to check if a filesystem is mounted:

1) put a hidden file in the mounted filesystem, for instance .goodfile.txt

2) put something like this in a script:
        if [ -f /path/to/filesystem/.goodfile.txt ]
        then
        echo "filesystem is mounted properly"

You could also check if .goodfile.txt is *not* there with:
        if [ ! -f /path/to/filesystem/.goodfile.txt ]

-Rob

Stephen Joyce wrote:
> 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/

-------------------------------------------------------------------------
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