Removed my oh-so-clever "shadowdir" and "shadowfile" concepts for
the directory to be examined for potential deduplication. Instead
we call them subject directories and subject files, because they
are subject to our process.
Now creates a temporary file, removed on exit, as our temporary
access and modification time holder. When replacing a file with a
hard link, we first copy the atime/mtime of its directory to the
temporary file. THEN we perform the link. After the link, we
restore the original atime/mtime of the enclosing directory from
the temporary file. This is useful for backups, where we do not
want the directories to have newer timestamps (timestamps matching
the date/time that we run deduplication, because creating the link
counts as a modification of the directory).
While creating hard links, check if they're already linked first.
This saves SUBSTANTIAL time in Time Machine directories where many
files are already hard links.
Also, be clearer when running about what exactly it is we're doing
with each file.
This initial commit includes a directory deduplicator (for thinning out
Time Machine snapshots) and an automatic tool to detect and apply the
necessary metadata for a successful tmutil inherit (needed when you
want to use a backup drive with a new computer, for example).