[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Does --newer work for -x?



On 12/30/16 15:53, Scott Wheeler wrote:
On Dec 31, 2016, at 00:29, Graham Percival <gperciva@tarsnap.com> wrote:
On Sat, Dec 31, 2016 at 12:19:09AM +0100, Scott Wheeler wrote:
bela: /tmp/foo> sudo tarsnap -xvf test --newer "Jan 1, 2016"

--newer is only specified for working with -c:

Ah, odd, missed that when scanning the docs.  Most options that aren't supported in a given mode return an error.  Since tarsnap does do some conditional processing (even if erroneously) and neither prints an error nor exits with a non-zero status, I kept playing with it.

Hmm, the code which checks options for validity thinks they're ok in [cxt] modes (bsdtar.c):
        if (bsdtar->newer_ctime_sec || bsdtar->newer_ctime_nsec)
                only_mode(bsdtar, "--newer", "cxt");
        if (bsdtar->newer_mtime_sec || bsdtar->newer_mtime_nsec)
                only_mode(bsdtar, "--newer-mtime", "cxt");

and that seems be be what the code does (read.c):
                /*
                 * Exclude entries that are too old.
                 */
                st = archive_entry_stat(entry);
                if (bsdtar->newer_ctime_sec > 0) {
                        if (st->st_ctime < bsdtar->newer_ctime_sec)
                                continue; /* Too old, skip it. */
                        if (st->st_ctime == bsdtar->newer_ctime_sec
                            && ARCHIVE_STAT_CTIME_NANOS(st)
                            <= bsdtar->newer_ctime_nsec)
                                continue; /* Too old, skip it. */
                }

So I think the man page is wrong here.

As for the precise formats accepted... this is some very historical
date/time parsing code, so I'd assume that "201601010000" would be
parsed as the start of January 1, 2016 (see `touch -t`).  Looking at
the code, it's clear that a variety of other formats can be parsed;
but I don't think the exact set is documented anywhere...

(BTW, for your exact use case I think the --keep-newer option might
do what you want much far less aggravation?)

--
Colin Percival
Security Officer Emeritus, FreeBSD | The power to serve
Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid