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