Removed some output that previously appeared when dirdedupe was
run without the --execute flag. This output was intended to help
debug and verify atime/mtime preservation, and is no longer needed.
Someone unfamiliar with tmutils will not know the purpose or have
the big picture of what this project is intended for without a
brief introduction. We now provide that brief introduction in the
README.
Added a screenshot of a terminal session using dirdedupe.sh to
hard-link files while preserving the atime/mtime of the enclosing
directory of the newly-linked file.
Bash variable assignment requires the = operator to immediately
follow the variable name, otherwise it will result in a syntax
error. This commit fixes a syntax error of that nature that would
prevent the preservation of atime and mtime of the enclosing
directory of a file that was linked to an identical file.
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.
More clearly explain WHAT tmbless.sh accomplishes, and THEN
explain exactly HOW it does it...
Previously, we explained what we did mechanically, and THEN
explained the result of doing that, which is useless to non-
technical end-users.
Stored experimental in-development source files within the dev
subdirectory of the project, to make it easier for end-users to
know which shell scripts are ready for use.
Time Machine Importer will now determine the computer name of the
backup store and check it against the current computer name. If they
do not match, it will issue a prominent warning.
Previously used the language "attributes are now" to describe the
extended attributes matching a backup drive to a computer. However,
that is both overly erudite language and completely meaningless to
the average user. Replaced it with the more meaningful language:
"This backup drive is currently matched to the following computer:" and
"This backup drive has been matched to the current computer:", and
omitted the names of the extended attributes.
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).