Do we want a periodic script for a zfs scrub?

Alexander Leidinger Alexander at Leidinger.net
Thu Jun 10 15:38:37 UTC 2010


Quoting Artem Belevich <fbsdlist at src.cx> (from Thu, 10 Jun 2010  
07:59:46 -0700):

>> Good idea! I even found a command line which does the calculation for the
>> number of days between "now" and the last run (not taking a leap year into
>> account, but an off-by-one day error here does not matter).
>
> You can get exactly one month difference by using -v option of 'date'
> command to figure out the time/date offset by arbitrary amount.
> Combined with +"%s" format to print number of seconds since Epoch and
> -r to specify the reference point in time it makes 'date' pretty
> useful in scripts.

What we have is the date of the last scrub (e.g. 2010-06-08.20:51:12),  
and what we want to know is if between the last scrub and now we  
passed a specific amount of days or not.

What I do is taking the year multiplied with 365 plus the day of the  
year. Both of this for the last date of the scrub and "now". The  
difference is the number of days between those two dates. This value I  
can use with -le or -ge for the test command.

This is only off by one once in a leap year when the leap-day is  
in-between the two dates (those people which want to scrub every 4  
years are off by two when both leap-days are in-between, but a scrub  
of every 4 years or more looks unreasonable to me, so I do not care  
much about this).

This is done in one line with two calls to date (once for the last  
scrub, once for "now") and a little bit of shell-buildin-arithmetic.  
If you have a more correct version which is not significantly more  
complex, feel free to share it here.

Bye,
Alexander.

-- 
  "Who would have though hell would really exist? And that it would be in New
Jersey?" -Leela
"Actually..." - Fry

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-fs mailing list