Re: Truncated archive/backup reparation

Scott Ritchie <[email protected]> Fri, 14 Mar 2025 14:01:43 +0000
Newsgroups gmane.comp.sysutils.backup.dar.support
Message-ID <CAO1VBV0cC_+cCBvwwqR=0Ge+81qr8b+u41Y6G3BffWnS61n7KA@mail.gmail.com>
--===============6512515770673628571==
Content-Type: multipart/alternative; boundary="0000000000008d87f706304de17f"

--0000000000008d87f706304de17f
Content-Type: text/plain; charset="UTF-8"

Hi Denis,

I suspect you are right, that using the -E and -F options would afford me
the flexibility I'm looking for. In the end however, I have decided to go
with a simpler but more manual approach of terminating dar manually every
for TB while it is not in the paused state, effectively splitting the full
backup into multiple incremental backups.

For posterity, in case someone else encounters the issues, basically I've
been tasked with creating backups of my department's datasets which are
currently stored on a HPC system. The backup system is done via creating
backup files on a "research cold store" (
https://docs.hpc.cam.ac.uk/storage/rcs/best-practice.html) which is then
backed up to tape behind the scenes by the HPC admin team. The HPC team
have asked me to bake in pauses into the dar backup creation process, as
the rate of data transfer to the research cold store disk cache is
exceeding the rate of data transfer from the disk cache to tape. The amount
of data I'm backing up is also such that the overall transfer time is
exceeding the interval between routine HPC node reboots.

In the process of learning dar, I ran into two scenarios where dar does not
cleanly exit (i.e. delayed termination does not take place): (1) when par2
is terminated, and (2) when dar is terminated while in the paused state
waiting for user confirmation to continue. In both cases, dar gets stuck
waiting for user input, both requiring an initial <ESC> input to confirm
that either the par2 command should not be rerun, or in the pause state,
that we do not want to continue, then a sequence of 2-3 enter keystrokes on
subsequent prompts until dar cleanly goes through the process of delayed
termination.

My thought process in the previous email was that perhaps in the wrapper
bash script I'd written I could intercept  the shutdown signals sent system
wide on node reboot, and then programmatically provide the sequence of
desired keystrokes in case dar was currently in the waiting state between
slices. I found the bash trap command for intercepting signals, and thought
I might be able to programmatically write to the dar process stdin file
connection (i.e. writing to /proc/<pid>/fd/0), however, after quite a bit
of trial and error and googling, I learnt that this was not possible
without root access, requiring the IOCTL facilities to push to the stdin
buffer, rather than simply piping text to /proc/<pid>/fd/0. In case anyone
else finds this thread at a later date and wants to go down this rabbit
hole, see
https://unix.stackexchange.com/questions/385771/writing-to-stdin-of-a-process


This brings me back to my opening paragraph - I suspect the correct
solution to my problem would be using the -E option to write some more
flexible code between slices that does what I wanted, but instead I opted
for the simpler approach of just running the backup and manually
terminating the dar process on a regular basis in such a way that it
cleanly exits with delayed termination. Partly because this would also have
the added advantage of checkpointing the backup process so that only a
small part of the backup would need to be redone if there was a power
failure or other problem leading to a truncated archive, which also
alleviates the need to wait for the stable release of version 2.8.0.

Best,

Scott

On Fri, 14 Mar 2025 at 05:00, Denis Corbin <[email protected]> wrote:

> On 13/03/2025 14:36, Scott Ritchie wrote:
> > Hi Denis,
>
> Hi Scott,
>
> thanks for reporting this error, I will investigate this ASAP.
>
> About the signal impact on dar: when dar is waiting for an answer from
> the user, libdar is suspending within a blocking read() system call
> while signals are blocked. I must see the impact of not blocking INT and
> TERM signals in that context... as this has probably been done that way
> for some reasons, some decades ago...
>
> In the meanwhile, while I have not all the constraints regarding the
> backup objective you have, so far when dar/libdar users had to automate
> a backup process, the use scripts with -E, -F, -~ options used in
> conjunction with -Q was enough to address all needs, eventually wrapping
> also dar in a customized script (Some user shared their experiences
> which I have kept with their agreement in the doc/samples directory of
> the source package, for illustration).
>
> Why, in your context, do you need to have dar pausing between slices (-p
> option)?
>
> Regards,
> Denis
>
> >
> > Thanks so much for all the advice and for implementing/patching so
> > quickly. I appreciate that it will take some time for these to be rolled
> > out into the stable releases.
> >
> > RE: the -Q option, after seeing that -Q is not compatible with -p, I've
> > been playing around with the possibility of trapping the SIGTERM signal
> > in my the bash script I've written to run dar with a view towards
> > programmatically providing the sequence of ESC/ENTER commands required
> > to respond to the user input prompts to lead to a clean delayed
> > termination.
> >
> > In doing so I managed to trigger the following exception which the dar
> > command has asked me to report:
> >
> > Aborting program. An error occurred while calling libdar: Cannot write
> > down the archive: user_interaction::inherited_pause should not throw an
> > exception toward libdar
> > ###############################################
> > #   NOT CAUGHT EXCEPTION,                     #
> > #                         E X I T I N G !     #
> > #                                             #
> > ###############################################
> >   THANKS TO REPORT THE PREVIOUS OUTPUT TO MAINTAINER
> >   GIVING A DESCRIPTION OF THE CIRCUMSTANCES.
> >   IF POSSIBLE TRY TO PRODUCE THIS ERROR, A
> >   SCENARIO THAT CAN REPRODUCE IT WOULD HELP MUCH
> >   IN SOLVING THIS PROBLEM.                THANKS
> >
> > I think this uncaught exception can be reliably reproduced by calling
> > dar asynchronously from a bash script and then killing the script:
> >
> > ```
> > #/bin/bash
> >
> > # Catch interrupt signals and cleanup
> > function cleanup {
> >     # do stuff
> >     exit 1
> > }
> > trap cleanup SIGHUP SIGINT SIGQUIT SIGTERM SIGUSR1
> >
> > # Run dar asynchronously and wait for the response, so we can use trap
> > dar -c path/to/backup -s 10GB &
> > wait
> > ```
> >
> > Execute above script, then kill -15 the the process running the bash
> > script without killing the running dar process.
> >
> > Hopefully this provides helpful insight into one of the possible ways
> > this scenario can be triggered.
> >
> > Best,
> >
> > Scott
> >
> > On Wed, 12 Mar 2025 at 23:18, Denis Corbin <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >     On 12/03/2025 16:32, Scott Ritchie wrote:
> >      > Thanks Dennis,
> >
> >     Hi Scott
> >
> >     As said, you have a fix in 2.7.17.RC2 for the repairing of a sliced
> >     backup in git with tag v2.7.17.RC2 and now in addition a package
> here:
> >
> >     https://dar.edrusb.org/dar.linux.free.fr/Interim_releases <https://
> >     dar.edrusb.org/dar.linux.free.fr/Interim_releases>
> >
> >     I currently run the non-regression tests on that code, which takes
> >     several days, so be patient before the release 2.7.17.
> >
> >     I could add the possibility to create an isolated a catalog from a
> >     truncated backup, but this requires the -affs feature that is only
> >     available in the 2.8.0 dev branch (= git master branch), so I have
> >     added
> >     this new feature there it will be released with 2.8.0, in a few
> months.
> >     Also added a FAQ on the possible way to manage a truncated backup,
> ---
> >     OK this is not a Frequently Asked question as nobody ever asked on
> that
> >     feature :) ---- but that was the easiest place to add this short
> >     documentation.
> >
> >      >
> >      > RE: archive truncation, another thing that I've come across is the
> >      > behaviour of dar when sent the SIGTERM (or similar) signals.
> >     Normally
> >      > this leads to delayed termination including appending the catalog
> >     to the
> >      > end of the archive; however, this is not the case if dar is sent
> the
> >      > SIGTERM signal while paused between slices dar continues to wait
> for
> >      > user input. Would it be possible to override this so that if dar
> >     is sent
> >      > a SIGTERM signal while waiting for user input it instead
> >     continues with
> >      > the intended delayed termination so that the archive doesn't end
> >     up in a
> >      > truncated state (e.g. if the process is killed due to non-
> >     response to
> >      > the SIGTERM signal)? Also worth noting that the same behaviour
> >     occurs
> >      > when dar is interrupted while waiting for par2 to finish running
> >     between
> >      > slices.
> >
> >     AFAIR, the process is suspending on a system call when it waits for
> >     user
> >     to answer... To address this type of use case, where you want to
> >     automate a process, there is the -Q option that has been added. Maybe
> >     this will address you need better than having the dar questions to
> >     answer manually.
> >
> >      >
> >      > The backup I am trying to create (100s of Tb) is unfortunately
> >     going to
> >      > take quite a long time to run, longer than the routinely scheduled
> >      > reboot periods of the cluster I am working on, so am trying to
> code
> >      > around the scenario where a reboot signal is sent while par2 is
> >     running
> >      > on a slice or during a period when dar2 is otherwise paused
> (which I
> >      > have been asked to schedule in every few TBs).
> >
> >     You could also split the data to backup in several smaller backups
> (one
> >     per top directory or something in that taste that makes sense) and
> >     gather then into a single dar_manager database. You can then choose
> >     different rotation frequency and retention period between these
> smaller
> >     backups and have a single point of access through dar_manager.
> >
> >      >
> >      > Best,
> >      >
> >      > Scott
> >
> >     Cheers,
> >     Denis
> >
> >
>
>

--0000000000008d87f706304de17f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Denis,<br><br>I suspect you are right, that using the -=
E and -F options would afford me the flexibility I&#39;m looking for. In th=
e end however, I have decided to go with a simpler but more manual approach=
 of terminating dar manually every for TB while it is not in the paused sta=
te, effectively splitting the full backup into multiple incremental backups=
.<div><br></div><div>For posterity, in case someone else encounters the iss=
ues, basically I&#39;ve been tasked with creating backups of my=C2=A0depart=
ment&#39;s datasets which are currently stored on a HPC system. The backup =
system is done via creating backup files on a &quot;research cold store&quo=
t; (<a href=3D"https://docs.hpc.cam.ac.uk/storage/rcs/best-practice.html">h=
ttps://docs.hpc.cam.ac.uk/storage/rcs/best-practice.html</a>) which is then=
 backed up to tape behind the scenes by the HPC admin team. The HPC team ha=
ve asked me to bake in pauses into the dar backup creation process, as the =
rate of data transfer to the research cold store disk cache is exceeding th=
e rate of data transfer from the disk cache to tape. The amount of data I&#=
39;m backing up is also such that the overall transfer time is exceeding th=
e interval between routine HPC node reboots.</div><div><br></div><div>In th=
e process of learning dar, I ran into two scenarios where dar does not clea=
nly exit (i.e. delayed termination does not take place): (1) when par2 is t=
erminated, and (2) when dar is terminated while in the paused state waiting=
 for user confirmation to continue. In both cases, dar gets stuck waiting f=
or user input, both requiring an initial &lt;ESC&gt; input to confirm that =
either the par2 command should not be rerun, or in the pause state, that we=
 do not want to continue, then a sequence of 2-3 enter keystrokes on subseq=
uent prompts until dar cleanly goes through the process of delayed terminat=
ion.=C2=A0<br><br>My thought process in the previous email was that perhaps=
 in the wrapper bash script I&#39;d written I could intercept=C2=A0 the shu=
tdown signals sent system wide on node reboot, and then programmatically pr=
ovide the sequence of desired keystrokes in case dar was currently in the w=
aiting state between slices. I found the bash trap command for intercepting=
 signals, and thought I might be able to programmatically write to the dar =
process stdin file connection (i.e. writing to /proc/&lt;pid&gt;/fd/0), how=
ever, after quite a bit of trial and error and googling, I learnt that this=
 was not possible without root access, requiring the IOCTL facilities to pu=
sh to the stdin buffer, rather than simply piping text to /proc/&lt;pid&gt;=
/fd/0. In case anyone else finds this thread at a later date and wants to g=
o down this rabbit hole, see=C2=A0<a href=3D"https://unix.stackexchange.com=
/questions/385771/writing-to-stdin-of-a-process">https://unix.stackexchange=
.com/questions/385771/writing-to-stdin-of-a-process</a>=C2=A0</div><div><br=
></div><div>This brings me back to my opening paragraph - I suspect the cor=
rect solution to my problem would be using the -E option to write some more=
 flexible code between slices that does what I wanted, but instead I opted =
for the simpler approach of just running the backup and manually terminatin=
g the dar process on a regular basis in such a way that it cleanly exits wi=
th delayed termination. Partly because this would also have the added advan=
tage of checkpointing the backup process so that only a small part of the b=
ackup would need to be redone if there was a power failure or other problem=
 leading to a truncated archive, which also alleviates the need to wait for=
 the stable release of version 2.8.0.</div><div><br></div><div>Best,</div><=
div><br></div><div>Scott</div></div><br><div class=3D"gmail_quote gmail_quo=
te_container"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, 14 Mar 2025 at =
05:00, Denis Corbin &lt;<a href=3D"mailto:[email protected]">dar.linux@free=
.fr</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e=
x">On 13/03/2025 14:36, Scott Ritchie wrote:<br>
&gt; Hi Denis,<br>
<br>
Hi Scott,<br>
<br>
thanks for reporting this error, I will investigate this ASAP.<br>
<br>
About the signal impact on dar: when dar is waiting for an answer from <br>
the user, libdar is suspending within a blocking read() system call <br>
while signals are blocked. I must see the impact of not blocking INT and <b=
r>
TERM signals in that context... as this has probably been done that way <br=
>
for some reasons, some decades ago...<br>
<br>
In the meanwhile, while I have not all the constraints regarding the <br>
backup objective you have, so far when dar/libdar users had to automate <br=
>
a backup process, the use scripts with -E, -F, -~ options used in <br>
conjunction with -Q was enough to address all needs, eventually wrapping <b=
r>
also dar in a customized script (Some user shared their experiences <br>
which I have kept with their agreement in the doc/samples directory of <br>
the source package, for illustration).<br>
<br>
Why, in your context, do you need to have dar pausing between slices (-p <b=
r>
option)?<br>
<br>
Regards,<br>
Denis<br>
<br>
&gt; <br>
&gt; Thanks so much for all the advice and for implementing/patching so <br=
>
&gt; quickly. I appreciate that it will take some time for these to be roll=
ed <br>
&gt; out into the stable releases.<br>
&gt; <br>
&gt; RE: the -Q option, after seeing that -Q is not compatible with -p, I&#=
39;ve <br>
&gt; been playing around with the possibility of trapping the SIGTERM signa=
l <br>
&gt; in my the bash script I&#39;ve written to run dar with a view towards =
<br>
&gt; programmatically providing the sequence of ESC/ENTER commands required=
 <br>
&gt; to respond to the user input prompts to lead to a clean delayed <br>
&gt; termination.<br>
&gt; <br>
&gt; In doing so I managed to trigger the following exception which the dar=
 <br>
&gt; command has asked me to report:<br>
&gt; <br>
&gt; Aborting program. An error occurred while calling libdar: Cannot write=
 <br>
&gt; down the archive: user_interaction::inherited_pause should not throw a=
n <br>
&gt; exception toward libdar<br>
&gt; ###############################################<br>
&gt; # =C2=A0 NOT CAUGHT EXCEPTION, =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #<br>
&gt; # =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 E X I T I N G ! =C2=A0 =C2=A0 #<br>
&gt; # =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 #<br>
&gt; ###############################################<br>
&gt;=C2=A0 =C2=A0THANKS TO REPORT THE PREVIOUS OUTPUT TO MAINTAINER<br>
&gt;=C2=A0 =C2=A0GIVING A DESCRIPTION OF THE CIRCUMSTANCES.<br>
&gt;=C2=A0 =C2=A0IF POSSIBLE TRY TO PRODUCE THIS ERROR, A<br>
&gt;=C2=A0 =C2=A0SCENARIO THAT CAN REPRODUCE IT WOULD HELP MUCH<br>
&gt;=C2=A0 =C2=A0IN SOLVING THIS PROBLEM. =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0THANKS<br>
&gt; <br>
&gt; I think this uncaught exception can be reliably reproduced by calling =
<br>
&gt; dar asynchronously from a bash script and then killing the script:<br>
&gt; <br>
&gt; ```<br>
&gt; #/bin/bash<br>
&gt; <br>
&gt; # Catch interrupt signals and cleanup<br>
&gt; function cleanup {<br>
&gt;=C2=A0 =C2=A0 =C2=A0# do stuff<br>
&gt;=C2=A0 =C2=A0 =C2=A0exit 1<br>
&gt; }<br>
&gt; trap cleanup SIGHUP SIGINT SIGQUIT SIGTERM SIGUSR1<br>
&gt; <br>
&gt; # Run dar asynchronously and wait for the response, so we can use trap=
<br>
&gt; dar -c path/to/backup -s 10GB &amp;<br>
&gt; wait<br>
&gt; ```<br>
&gt; <br>
&gt; Execute above script, then kill -15 the the process running the bash <=
br>
&gt; script without killing the running dar process.<br>
&gt; <br>
&gt; Hopefully this provides helpful insight into one of the possible ways =
<br>
&gt; this scenario can be triggered.<br>
&gt; <br>
&gt; Best,<br>
&gt; <br>
&gt; Scott<br>
&gt; <br>
&gt; On Wed, 12 Mar 2025 at 23:18, Denis Corbin &lt;<a href=3D"mailto:dar.l=
[email protected]" target=3D"_blank">[email protected]</a> <br>
&gt; &lt;mailto:<a href=3D"mailto:[email protected]" target=3D"_blank">dar.=
[email protected]</a>&gt;&gt; wrote:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0On 12/03/2025 16:32, Scott Ritchie wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; Thanks Dennis,<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0Hi Scott<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0As said, you have a fix in 2.7.17.RC2 for the repai=
ring of a sliced<br>
&gt;=C2=A0 =C2=A0 =C2=A0backup in git with tag v2.7.17.RC2 and now in addit=
ion a package here:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0<a href=3D"https://dar.edrusb.org/dar.linux.free.fr=
/Interim_releases" rel=3D"noreferrer" target=3D"_blank">https://dar.edrusb.=
org/dar.linux.free.fr/Interim_releases</a> &lt;https://<br>
&gt;=C2=A0 =C2=A0 =C2=A0<a href=3D"http://dar.edrusb.org/dar.linux.free.fr/=
Interim_releases" rel=3D"noreferrer" target=3D"_blank">dar.edrusb.org/dar.l=
inux.free.fr/Interim_releases</a>&gt;<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0I currently run the non-regression tests on that co=
de, which takes<br>
&gt;=C2=A0 =C2=A0 =C2=A0several days, so be patient before the release 2.7.=
17.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0I could add the possibility to create an isolated a=
 catalog from a<br>
&gt;=C2=A0 =C2=A0 =C2=A0truncated backup, but this requires the -affs featu=
re that is only<br>
&gt;=C2=A0 =C2=A0 =C2=A0available in the 2.8.0 dev branch (=3D git master b=
ranch), so I have<br>
&gt;=C2=A0 =C2=A0 =C2=A0added<br>
&gt;=C2=A0 =C2=A0 =C2=A0this new feature there it will be released with 2.8=
.0, in a few months.<br>
&gt;=C2=A0 =C2=A0 =C2=A0Also added a FAQ on the possible way to manage a tr=
uncated backup, ---<br>
&gt;=C2=A0 =C2=A0 =C2=A0OK this is not a Frequently Asked question as nobod=
y ever asked on that<br>
&gt;=C2=A0 =C2=A0 =C2=A0feature :) ---- but that was the easiest place to a=
dd this short<br>
&gt;=C2=A0 =C2=A0 =C2=A0documentation.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; RE: archive truncation, another=C2=A0thing th=
at I&#39;ve come across is the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; behaviour of dar when sent the SIGTERM (or si=
milar) signals.<br>
&gt;=C2=A0 =C2=A0 =C2=A0Normally<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; this leads to delayed termination including a=
ppending the catalog<br>
&gt;=C2=A0 =C2=A0 =C2=A0to the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; end of the archive; however, this is not the =
case if dar is sent the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; SIGTERM signal while paused between slices=C2=
=A0dar continues to wait for<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; user input. Would it be possible to override =
this so that if dar<br>
&gt;=C2=A0 =C2=A0 =C2=A0is sent<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; a SIGTERM signal while waiting for user input=
 it instead<br>
&gt;=C2=A0 =C2=A0 =C2=A0continues with<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; the intended delayed termination so that the =
archive doesn&#39;t end<br>
&gt;=C2=A0 =C2=A0 =C2=A0up in a<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; truncated state (e.g. if the process is kille=
d due to non-<br>
&gt;=C2=A0 =C2=A0 =C2=A0response to<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; the SIGTERM signal)? Also worth noting that t=
he same behaviour<br>
&gt;=C2=A0 =C2=A0 =C2=A0occurs<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; when dar is interrupted while waiting for par=
2 to finish running<br>
&gt;=C2=A0 =C2=A0 =C2=A0between<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; slices.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0AFAIR, the process is suspending on a system call w=
hen it waits for<br>
&gt;=C2=A0 =C2=A0 =C2=A0user<br>
&gt;=C2=A0 =C2=A0 =C2=A0to answer... To address this type of use case, wher=
e you want to<br>
&gt;=C2=A0 =C2=A0 =C2=A0automate a process, there is the -Q option that has=
 been added. Maybe<br>
&gt;=C2=A0 =C2=A0 =C2=A0this will address you need better than having the d=
ar questions to<br>
&gt;=C2=A0 =C2=A0 =C2=A0answer manually.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; The backup I am trying to create (100s of Tb)=
 is unfortunately<br>
&gt;=C2=A0 =C2=A0 =C2=A0going to<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; take quite a long time to run, longer than th=
e routinely scheduled<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; reboot periods of the cluster I am working on=
, so am trying to code<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; around the scenario where a reboot signal is =
sent while par2 is<br>
&gt;=C2=A0 =C2=A0 =C2=A0running<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; on a slice or during a period when dar2 is ot=
herwise paused (which I<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; have been asked to schedule in every few TBs)=
.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0You could also split the data to backup in several =
smaller backups (one<br>
&gt;=C2=A0 =C2=A0 =C2=A0per top directory or something in that taste that m=
akes sense) and<br>
&gt;=C2=A0 =C2=A0 =C2=A0gather then into a single dar_manager database. You=
 can then choose<br>
&gt;=C2=A0 =C2=A0 =C2=A0different rotation frequency and retention period b=
etween these smaller<br>
&gt;=C2=A0 =C2=A0 =C2=A0backups and have a single point of access through d=
ar_manager.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; Best,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 &gt; Scott<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0Cheers,<br>
&gt;=C2=A0 =C2=A0 =C2=A0Denis<br>
&gt; <br>
&gt; <br>
<br>
</blockquote></div>

--0000000000008d87f706304de17f--


--===============6512515770673628571==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============6512515770673628571==--