On Thu, 2008-01-03 at 14:19 -0800, Barton C Massey wrote:

> It looks like dirvish-expire has no qualms about removing
> the most recent image in a vault.  This seems to me to be a
> bad idea.  
        
<snip>
        
> Any chance someone could fix this so that dirvish-expire
> will leave the most recent bits alone, at least as an
> option?
> 
>     Bart Massey
        
At the risk of getting flamed for cutting & pasting from my own
post from last summer,  does this help ? :
        
On Sat, 2007-08-25 at 16:44 -0500, Tony wrote:
> By design, dirvish-expire will not delete your most recent backup
image
> if it is the only image left in the vault, regardless of whether the
> image is ready to expire or not.
> 
> However,  if there are older images in the vault (perhaps set to never
> expire) and your most recent backup is past its expiry date then
> dirvish-expire will delete it !  This can leave you without a recent
> backup.
> 
> Normally this might not happen but I have a system that I only backup
> once a week - retaining the backups for a month.  Recently I ran into
an
> issue where I was travelling and the system was turned off.
Eventually,
> dirvish-expire started deleting my recent backups and I was left with
> only a really old image.
> 
> I suppose it should be possible to modify dirvish-expire to not delete
> the most current backup regardless of its expiry date.  However, I
took
> another route, as I use Daniel Petcher's technique of having a post
> execution script to maintain symbolic links to the two more recent
> backups (search the wiki for details).   I thus modified
dirvish-expire
> to look for those links and if found,  to ignore the expiry dates for
> those archives.
> 
> Here's the diff file of what I did to dirvish-expire.pl :
> 
> 161c161,180
> <     $$Options{quiet} or printf "%-15s %-15s %-16.16s  %s\n",
> ---
> > 
> > ## 20070825 - don't allow backups tagged current or recent to be
> expired
> >     
> >     $recent = readlink( substr($$expire{path},0,-8)."recent") ;
> >     $current = readlink( substr($$expire{path},0,-8)."current") ;
> >     if (($recent eq $$expire{path}."/tree") || ($current eq
> $$expire{path}."/tree"))
> >     {
> >             $$Options{quiet} or printf "%-15s %-15s %-16.16s  %s <-
ignored
> (recent or current)\n",
> >                     $$expire{vault} . ':' .  $$expire{branch},
> >                     $$expire{image},
> >                     $created,
> >                     $expired;
> > 
> >             next;
> >     }
> >     
> > ## 20070825 - don't allow backups tagged current or recent to be
> expired
> > 
> > 
> >     $$Options{quiet} or printf "%-15s %-15s %-16.16s  %s \n",
> 
> 
> I realize this solves an obscure issue but it might help somebody. 
> 
> Note : the use of substr to truncate the vault address is a bit of a
> hack (it assumes the backups are always stored in 8 digit yyyymmdd
> subdirectories).  I have a version that uses 
>       $path =~ s/\/[A-Za-z0-9]+$/\/tree/ ;
> to do the same thing more generically but the resulting code is
actually
> a little harder to read IMHO.
> 
> Tony
>  
        
        

_______________________________________________
Dirvish mailing list
[email protected]
http://www.dirvish.org/mailman/listinfo/dirvish

Reply via email to