cumulus.git
16 years agoEnsure the "name:" key shows up first in metadata output.
Michael Vrable [Wed, 28 Nov 2007 23:12:59 +0000 (15:12 -0800)]
Ensure the "name:" key shows up first in metadata output.

This isn't necessary, but is nice for readability.

16 years agoPartially revert metadata format changes in 6c94114148c4.
Michael Vrable [Wed, 28 Nov 2007 22:22:39 +0000 (14:22 -0800)]
Partially revert metadata format changes in 6c94114148c4.

On second thought, the renaming of the "name:" field to "path:" isn't worth
the trouble of making the change since there isn't much benefit and
updating tools to deal with either format will be more complex.  The other
changes can be left since they are smaller and easier to support.

Revert this now, before any releases are made with the change in effect.

16 years agoDrop the old statcache implementation.
Michael Vrable [Wed, 28 Nov 2007 22:18:29 +0000 (14:18 -0800)]
Drop the old statcache implementation.

The statcache is now replaced with the unified local metadata log, which is
used to aid in reusing unchanged parts of the metadata log in snapshots,
but additionally contains all the information needed to determine if a file
is unchanged.

16 years agoInitial implementation of metadata log sharing.
Michael Vrable [Wed, 21 Nov 2007 23:02:54 +0000 (15:02 -0800)]
Initial implementation of metadata log sharing.

Allow metadata written to segments to be reused between snapshots.  Keep
track of what metadata was written out on the client, and when identicial
metadata would be written on a subsequent backup, instead emit a reference
to the old metadata.

This needs more testing and verification.  There also needs to be a
mechanism for performing the equivalent of segment cleaning for metadata,
so that the metadata log does not become excessively fragmented over time.

16 years agoBugfix for splitting the metadata log in the new metadata code.
Michael Vrable [Tue, 20 Nov 2007 03:01:52 +0000 (19:01 -0800)]
Bugfix for splitting the metadata log in the new metadata code.

16 years agoWrite out new-style statcache data.
Michael Vrable [Tue, 20 Nov 2007 00:27:51 +0000 (16:27 -0800)]
Write out new-style statcache data.

Write out statcache-style data from the metadata logging module of lbs.
This will eventually replace the old statcache implementation, but is not
complete.  This new statcache data is not yet read in or used elsewhere.

In the new format, the data in the statcache file has the same format as
the data in the metadata log itself.  Each stanza with file information is
prefixed with a @@reference line that gives a reference to the location of
the metadata.  If the metadata has not changed, this will allow metadata
log data to be re-used between snapshots.

16 years agoDrop the use of indirect blocks for storing pointers to data.
Michael Vrable [Mon, 19 Nov 2007 17:57:42 +0000 (09:57 -0800)]
Drop the use of indirect blocks for storing pointers to data.

Now store the entire list of blocks that contain each file's contents
inline in the metadata log, even when that list is large.  Previously, the
list was split out into a separate object when it contained more than 8
entries.  These indirect blocks may still be useful, but they also
complicate the metadata/statcache rewrite, so for the moment disable them.
They may be reintroduced later.

16 years agoInitial refactoring of metadata logging.
Michael Vrable [Fri, 16 Nov 2007 06:29:19 +0000 (22:29 -0800)]
Initial refactoring of metadata logging.

Move the writing of entries in the metadata log to a separate class in a
separate file (MetadataWriter in metadata.cc).  This is the first step of
the changes, which moves the existing code but does not significantly
change it.  It is preparation for more significant changes to metadata
writing.

16 years agoChanges to the metadata log format.
Michael Vrable [Thu, 15 Nov 2007 23:38:59 +0000 (15:38 -0800)]
Changes to the metadata log format.

A small collection of changes to make the snapshot format a little more
rational (I hope).  The intent is to also more or less merge the formats of
the metadata log and statcache.  There will likely be other changes in the
future in the course of working on metadata scalability.  The format is not
yet finalized!

WARNING: These changes will require new tools to read the generated backup
snapshots.  The version number in the format has been updated.  This
changeset does not include the necessary changes to the snapshot-parsing
code.

16 years agoNEWS updates for 0.5.1 release (minor changes only).
Michael Vrable [Wed, 14 Nov 2007 04:30:54 +0000 (20:30 -0800)]
NEWS updates for 0.5.1 release (minor changes only).

16 years agoProvide a sample tool, contrib/parity-gen, for RAID-like parity sets.
Michael Vrable [Thu, 8 Nov 2007 22:07:32 +0000 (14:07 -0800)]
Provide a sample tool, contrib/parity-gen, for RAID-like parity sets.

parity-gen will use the par2 command to generate redundant data files, to
be stored with backup segments, that will allow segments to recover even if
some of the data is lost or damaged.  When given a directory, it will
incrementally update parity sets to reflect changes made to the directory
since the last run.

This tool is still under development, and shouldn't be completely trusted
yet.

16 years agoCheck LBS format version when reading snapshots in the tools.
Michael Vrable [Wed, 7 Nov 2007 22:25:37 +0000 (14:25 -0800)]
Check LBS format version when reading snapshots in the tools.

Have the lbs-util command check the version of a snapshot when it is read,
and signal an error if the version is newer than what is supported, so that
silent failures do not occur if the format is changed in the future.

16 years agolbs-util: Add a command for dumping a flattened metadata log file.
Michael Vrable [Tue, 30 Oct 2007 20:43:29 +0000 (13:43 -0700)]
lbs-util: Add a command for dumping a flattened metadata log file.

16 years agoMinor documemtation update.
Michael Vrable [Mon, 29 Oct 2007 18:43:59 +0000 (11:43 -0700)]
Minor documemtation update.

16 years agoLBS v0.5 release.
Michael Vrable [Tue, 16 Oct 2007 21:00:57 +0000 (14:00 -0700)]
LBS v0.5 release.

16 years agoFix mismatched new/delete calls.
Michael Vrable [Tue, 16 Oct 2007 20:47:34 +0000 (13:47 -0700)]
Fix mismatched new/delete calls.

Caught by Valgrind: memory was being allocated with new[] but freed with
delete.  Use delete[] instead.

16 years agoMake extraction of segments in lbs.py even more quiet.
Michael Vrable [Tue, 2 Oct 2007 19:00:28 +0000 (12:00 -0700)]
Make extraction of segments in lbs.py even more quiet.

16 years agoAdd a restore-snapshot command to lbs-util.
Michael Vrable [Tue, 2 Oct 2007 18:54:37 +0000 (11:54 -0700)]
Add a restore-snapshot command to lbs-util.

This is still in development, and not fully tested yet.  This is meant to
mostly replace restore.pl, and will eventually have more features (it can
already restore without needing all segments unpacked first).

The restore.pl script won't go away, though, since it is still useful to
include as a small, self-contained bare-bones restore program.

16 years agoAdd "prune database" command to lbs-util.
Michael Vrable [Tue, 25 Sep 2007 22:04:51 +0000 (15:04 -0700)]
Add "prune database" command to lbs-util.

This acts like clean, but doesn't perform the step of marking old segments
as expired.

16 years agoFile reorganization: move non-essential binaries to contrib/.
Michael Vrable [Thu, 20 Sep 2007 23:26:21 +0000 (16:26 -0700)]
File reorganization: move non-essential binaries to contrib/.

The top-level directory is now mostly for the main lbs binary, and the
lbs-util script.  Other scripts, which are not necessary for backups (but
helpful) can be found in contrib.

16 years agoWhen cleaning the cache of objects, don't be so verbose.
Michael Vrable [Mon, 17 Sep 2007 04:25:15 +0000 (21:25 -0700)]
When cleaning the cache of objects, don't be so verbose.

Change the command for cleaning from "rm -rv", dropping the "-v".

16 years agoEnhance object-checksums command.
Michael Vrable [Sat, 15 Sep 2007 05:04:20 +0000 (22:04 -0700)]
Enhance object-checksums command.

If no segments are specified, dump object checksums for all segments.
Additionally, prompt for a password (to decrypt segments) when needed.

16 years agoMove most documentation into a doc/ subdirectory.
Michael Vrable [Thu, 13 Sep 2007 20:18:19 +0000 (13:18 -0700)]
Move most documentation into a doc/ subdirectory.

16 years agoRemove cleandb.sql SQL script since this functionality is now in lbs-util.
Michael Vrable [Wed, 12 Sep 2007 19:26:29 +0000 (12:26 -0700)]
Remove cleandb.sql SQL script since this functionality is now in lbs-util.

16 years agoRename lbs-util.py to lbs-util.
Michael Vrable [Wed, 12 Sep 2007 18:01:07 +0000 (11:01 -0700)]
Rename lbs-util.py to lbs-util.

The Python implementation is now the standard utility program for working
with LBS archives.  Drop the ".py" suffix.  It replaces the old lbs-util
program, which was implemented in Perl.

16 years agoDelete the Perl LBS module and the Perl-based lbs-util script.
Michael Vrable [Wed, 12 Sep 2007 17:59:39 +0000 (10:59 -0700)]
Delete the Perl LBS module and the Perl-based lbs-util script.

16 years agoExpanded Python module for accessing LBS snapshots, and lbs-util.py.
Michael Vrable [Tue, 11 Sep 2007 17:38:13 +0000 (10:38 -0700)]
Expanded Python module for accessing LBS snapshots, and lbs-util.py.

Expand the lbs Python module with code for reading from LBS archives.  This
includes decoding segments and parsing snapshot descriptors and metadata
logs.

Expand the lbs-util.py tool so that it has most of the functionality of
lbs-util (Perl implementation).  The Perl code should now be considered
deprecated, and will be removed at some point in the future.

The Python code still needs some cleaning up.

16 years agoSuppress error messages from Makefile when git-describe is not available.
Michael Vrable [Sun, 9 Sep 2007 00:36:43 +0000 (17:36 -0700)]
Suppress error messages from Makefile when git-describe is not available.

16 years agoREADME spelling corrections.
Michael Vrable [Sun, 9 Sep 2007 00:32:32 +0000 (17:32 -0700)]
README spelling corrections.

16 years agoNEWS file updates in preparation for v0.4 release.
Michael Vrable [Fri, 24 Aug 2007 18:03:51 +0000 (11:03 -0700)]
NEWS file updates in preparation for v0.4 release.

16 years agoPreview of a new Python-based management tool; includes segment cleaning.
Michael Vrable [Fri, 24 Aug 2007 17:56:15 +0000 (10:56 -0700)]
Preview of a new Python-based management tool; includes segment cleaning.

This adds a Python-based lbs-util program which can perform automatic
segment cleaning.  This hasn't been entirely worked out yet, so it may yet
be a little buggy, and the policies implemented can certainly be improved.
Expect future improvements in this area, and don't yet rely on it too
heavily.

16 years agoDocumentation improvements.
Michael Vrable [Fri, 24 Aug 2007 17:24:09 +0000 (10:24 -0700)]
Documentation improvements.

Highlights are a README file with instructions for getting started, and
description of some implementation details, starting with the purpose and
format of the local database.

16 years agoPlace expired and repacked objects into segments based on database.
Michael Vrable [Thu, 23 Aug 2007 18:23:28 +0000 (11:23 -0700)]
Place expired and repacked objects into segments based on database.

The local database can store an integer with each expired object that can
be used to group objects together based on age or other factors.  Update
the lbs snapshot utility to place objects into segments based on this
value.

16 years agoImplement --signature-filter for signing backup snapshots.
Michael Vrable [Tue, 21 Aug 2007 00:38:20 +0000 (17:38 -0700)]
Implement --signature-filter for signing backup snapshots.

If supplied, the argument to --signature-filter will be a program through
which the text for the root snapshot descriptor is filtered.  This filter
should act much like "gpg --clearsign": produce a nearly-identical text
file, with perhaps a few lines at the start or end containing the
signature, but which can be treated as an ordinary segment descriptor by
ignoring this leading and trailing data.

16 years agolbs-util now supports reading encrypted segments (with lbs-filter-gpg).
Michael Vrable [Fri, 17 Aug 2007 19:38:03 +0000 (12:38 -0700)]
lbs-util now supports reading encrypted segments (with lbs-filter-gpg).

Change the default to encrypted segments rather than compressed with bzip2.
The default of the lbs program has not been changed; it is still necessary
to specify the correct options there to generate encrypted backups.

16 years agoUpdate NEWS file.
Michael Vrable [Fri, 17 Aug 2007 18:52:45 +0000 (11:52 -0700)]
Update NEWS file.

16 years agoBug fix for the rewritten spawn_filter function.
Michael Vrable [Fri, 17 Aug 2007 15:08:11 +0000 (08:08 -0700)]
Bug fix for the rewritten spawn_filter function.

We were accidentally using the wrong variable (filter_pid instead of pid)
when looking at the result of a fork call, with the result that both
processes thought they were the parent.

16 years agoSwitch to stdio-based I/O for writing descriptor file.
Michael Vrable [Fri, 17 Aug 2007 04:38:25 +0000 (21:38 -0700)]
Switch to stdio-based I/O for writing descriptor file.

This should be a little bit easier to hook into filtering code (we can open
the output file, spawn the filter, and then fdopen the resulting
descriptor), which will be used when implementing signing of the descriptor
files.

16 years agoCleanup of the tar-store code.
Michael Vrable [Thu, 16 Aug 2007 22:53:29 +0000 (15:53 -0700)]
Cleanup of the tar-store code.

  - Make spawn_filter generic, not part of Tarfile, so that it can be used
    by other parts of the code.  (Specifically, it should be used later
    when writing out a segment descriptor, so that the descriptor can be
    filtered through gpg for signing.)
  - Drop internal_write_object.  It had only one caller, so simply inline
    the code.

16 years agolbs-filter-gpg should run gpg in batch mode.
Michael Vrable [Thu, 16 Aug 2007 22:12:40 +0000 (15:12 -0700)]
lbs-filter-gpg should run gpg in batch mode.

Supply the --batch option to gpg so that it can run without a terminal.

16 years agoWrite an example script for invoking gpg to encrypt backup segments.
Michael Vrable [Thu, 16 Aug 2007 21:19:13 +0000 (14:19 -0700)]
Write an example script for invoking gpg to encrypt backup segments.

This script acts as a filter with options for encrypting, decrypting, and
signing data.  Signing uses --clearsign, and will eventually be appropriate
for signing the snapshot descriptor files.

16 years agoInclude version number in usage message.
Michael Vrable [Fri, 10 Aug 2007 18:18:49 +0000 (11:18 -0700)]
Include version number in usage message.

16 years agoUpdate NEWS for 0.3 release.
Michael Vrable [Fri, 10 Aug 2007 18:13:17 +0000 (11:13 -0700)]
Update NEWS for 0.3 release.

16 years agoPreview of a new lbs-util command for snapshot maintenance.
Michael Vrable [Fri, 10 Aug 2007 18:04:57 +0000 (11:04 -0700)]
Preview of a new lbs-util command for snapshot maintenance.

This introduces a new Perl module (LBS.pm) which is an interface for
reading LBS snapshots, and a small command which uses it (lbs-util).  Few
commands are implemented yet, but more should follow.

16 years agoInclude segment checksums as "Checksums" not "Checksum-File" in descriptor.
Michael Vrable [Fri, 10 Aug 2007 17:59:33 +0000 (10:59 -0700)]
Include segment checksums as "Checksums" not "Checksum-File" in descriptor.

Avoid the use of a dash in a key name in the descriptor file, since it is
not well-tesetd with the various tools.

16 years agoMinor database schema fix.
Michael Vrable [Fri, 10 Aug 2007 17:23:51 +0000 (10:23 -0700)]
Minor database schema fix.

When constructing the segment_info view, we can no longer do a natural join
on the block_index and segments tables, since the segments table recently
acquired a checksum column.  Now explicitly join on the segmentid column
only, which is the desired behavior (and what a natural join used to do).

16 years agoNEWS updates.
Michael Vrable [Fri, 10 Aug 2007 03:41:37 +0000 (20:41 -0700)]
NEWS updates.

16 years agoWrite out a .sha1sums file with checksums for segments in this snapshot.
Michael Vrable [Fri, 10 Aug 2007 03:36:51 +0000 (20:36 -0700)]
Write out a .sha1sums file with checksums for segments in this snapshot.

Some segments might be left out; we only write out lines for those segments
that we know a checksum for.  These checksums are stored in the local
database (so we can find checksums for old segments), but entries might be
missing.

16 years agoImprove reporting of database errors.
Michael Vrable [Fri, 10 Aug 2007 02:23:35 +0000 (19:23 -0700)]
Improve reporting of database errors.

16 years agoCompute checksums of segments and store them in the local database.
Michael Vrable [Fri, 10 Aug 2007 02:23:20 +0000 (19:23 -0700)]
Compute checksums of segments and store them in the local database.

When a segment is fully written out, compute a checksum of the file
actually written (post-filtering).  Store this in the local database so
that it will be possible to write out, at the end of a backup, a file
containing the checksums of all segments used for the snapshot (including
old ones not written out in this execution).

16 years agoFix a double-close of a file descriptor.
Michael Vrable [Fri, 10 Aug 2007 02:20:30 +0000 (19:20 -0700)]
Fix a double-close of a file descriptor.

When a file is dumped, the file descriptor is opened by scanfile(), so that
is the function which should close it (not dump_inode()).

16 years agoExtract the version number from NEWS if git-describe is not available.
Michael Vrable [Wed, 8 Aug 2007 23:41:06 +0000 (16:41 -0700)]
Extract the version number from NEWS if git-describe is not available.

This should allow building from tarballs (not the git version), and still
correctly fill in the version number (so it can be incorporated into
generated files).

If git-describe does not return a value, the first word from the NEWS file
is taken as the version number.

16 years agoAdd a NEWS file summarizing changes in each release.
Michael Vrable [Wed, 8 Aug 2007 19:09:31 +0000 (12:09 -0700)]
Add a NEWS file summarizing changes in each release.

16 years agoDo not include link/inode information for directories.
Michael Vrable [Wed, 8 Aug 2007 17:26:05 +0000 (10:26 -0700)]
Do not include link/inode information for directories.

Directories cannot be hard-linked, so do not bother to include a link count
and inode information for directories in a snapshot.

16 years agoInclude link counts and inode numbers in metadata dumps.
Michael Vrable [Wed, 8 Aug 2007 17:00:00 +0000 (10:00 -0700)]
Include link counts and inode numbers in metadata dumps.

When the link count on a file is greater than one, include the link count
and a representation of the inode number (actually, inode number and
device).  This will provide all information which should be needed for
detecting hard links at restore time.  The backup program itself does not
identify hard-linked files and treat them any differently--since storage
for identical files can be shared, the storing a hard-linked file multiple
times should still be relatively efficient.

16 years agoDrop dependence on libtar.
Michael Vrable [Tue, 7 Aug 2007 20:57:02 +0000 (13:57 -0700)]
Drop dependence on libtar.

Implement everything we need to write TAR files ourself; this isn't too
difficult since we are only ever writing regular files with fixed-length
filenames (so need to worry about long file names).  In fact, doing it
directly is really no more complicated than using libtar.

16 years agoUpdate the format documentation to describe the current backup format.
Michael Vrable [Mon, 6 Aug 2007 21:02:23 +0000 (14:02 -0700)]
Update the format documentation to describe the current backup format.

The old documentation referred to the old binary backup format, and was
incomplete at that.  Rewrite it to discuss the current format, including a
discussion of segment/object storage, object references, the format of the
metadata listing, and the root backup descriptor.

The documentation can be improved, and some parts are certainly a bit
spotty, but this gives a good quick overview of the entire format.

16 years agoPrint a help message if no paths are specified to back up.
Michael Vrable [Fri, 3 Aug 2007 05:14:37 +0000 (22:14 -0700)]
Print a help message if no paths are specified to back up.

Rather than defaulting to backing up the current directory, always require
that a path be specified.  If no paths are specified, print the usage
message and exit.

Also, fix a crash that previously occurred when no paths were specified.

16 years agoUpdate .gitignore: explicitly ignore .o files.
Michael Vrable [Thu, 2 Aug 2007 23:32:07 +0000 (16:32 -0700)]
Update .gitignore: explicitly ignore .o files.

16 years agoProvide a more detailed indication of file status when backing up.
Michael Vrable [Fri, 27 Jul 2007 18:58:17 +0000 (11:58 -0700)]
Provide a more detailed indication of file status when backing up.

Indicate whether a file is new, or whether we managed to find the old data
in other segments, or whether data is being copied because we are cleaning
segments, etc.

16 years agoURI-escape the '@' character.
Michael Vrable [Fri, 27 Jul 2007 01:01:01 +0000 (18:01 -0700)]
URI-escape the '@' character.

Ensure that the '@' character is escaped in strings.  This isn't necessary
now, but in the future this might be useful so that indirect references are
never ambiguous.  (If a "@" appears, it's an indirect reference; if a
literal "@" is needed, it is escaped.)

16 years agoInclude scheme name in statcache file, so localdb directory can be shared.
Michael Vrable [Fri, 20 Jul 2007 21:10:33 +0000 (14:10 -0700)]
Include scheme name in statcache file, so localdb directory can be shared.

16 years agoAdd support for octal, hexadecimal in restore.pl script.
Michael Vrable [Fri, 20 Jul 2007 18:27:13 +0000 (11:27 -0700)]
Add support for octal, hexadecimal in restore.pl script.

16 years agoDo not warn when fewer than two arguments are provided.
Michael Vrable [Fri, 20 Jul 2007 17:39:59 +0000 (10:39 -0700)]
Do not warn when fewer than two arguments are provided.

It used to be that a source and destination had to be provided as the last
two arguments.  The use of the --dest= option now makes that not true, so
don't print a usage message and exit when only a single source is provided.

16 years agoUpdate the descriptor format string to "v0.2".
Michael Vrable [Fri, 20 Jul 2007 17:20:58 +0000 (10:20 -0700)]
Update the descriptor format string to "v0.2".

The introduction of octal probably makes this fair.

16 years agoReally fix the umask problem.
Michael Vrable [Fri, 20 Jul 2007 17:17:18 +0000 (10:17 -0700)]
Really fix the umask problem.

The fix in bf947741ac8f65e74d594a1e14e94d90320b403e didn't entirely work.
This should be better.

16 years agoAdd support for octal and hexadecimal output in dumps.
Michael Vrable [Fri, 20 Jul 2007 17:05:06 +0000 (10:05 -0700)]
Add support for octal and hexadecimal output in dumps.

Switch to using octal for file modesin metadata listings, since this is
more readable.

16 years agoRename --name to --scheme, and store the scheme name in the local database.
Michael Vrable [Fri, 20 Jul 2007 16:59:32 +0000 (09:59 -0700)]
Rename --name to --scheme, and store the scheme name in the local database.

16 years agoAdd a --name command-line option for naming snapshots.
Michael Vrable [Thu, 19 Jul 2007 22:43:55 +0000 (15:43 -0700)]
Add a --name command-line option for naming snapshots.

This feature is meant to support storing several separate sets of snapshots
in the same directory--for example, snapshots of multiple computers, or
snapshots of different sets of directories.  These snapshots can be deleted
independently.  The snapshots will be permitted to share segments.

A name is simply applied for management convience, to help in
distinguishing the different sets of backups.  The string specified with
--name is included both in the snapshot descriptor filename and as a
"Name:" field within that descriptor.

16 years agoRespect umask when creating backup files.
Michael Vrable [Thu, 19 Jul 2007 16:42:38 +0000 (09:42 -0700)]
Respect umask when creating backup files.

Previously backup files were created with permissions of 0600 before the
umask was subtracted.  Set it to 0666 now; the user can adjust the
permissions to make them more restrictive by changing the umask or
permissions in the parent directories.

16 years agoReorganize filesystem traversal and dumping code.
Michael Vrable [Thu, 19 Jul 2007 04:13:20 +0000 (21:13 -0700)]
Reorganize filesystem traversal and dumping code.

Work to more cleanly separate the parts of the code that scan the
filesystem from the parts which actually generate dump data to the backup
snapshot.

16 years agoSlightly improve error-handling during backups.
Michael Vrable [Wed, 18 Jul 2007 22:09:32 +0000 (15:09 -0700)]
Slightly improve error-handling during backups.

16 years agoMakefile cleanups.
Michael Vrable [Wed, 18 Jul 2007 21:43:31 +0000 (14:43 -0700)]
Makefile cleanups.

16 years agoRename format.{cc,h} -> util.{cc,h}.
Michael Vrable [Wed, 18 Jul 2007 21:31:32 +0000 (14:31 -0700)]
Rename format.{cc,h} -> util.{cc,h}.

16 years agoExtract major/minor components of device numbers.
Michael Vrable [Wed, 18 Jul 2007 20:06:03 +0000 (13:06 -0700)]
Extract major/minor components of device numbers.

I hope these are the right macros and include files to use...

16 years agoDump the device number of character/block devices.
Michael Vrable [Wed, 18 Jul 2007 19:59:41 +0000 (12:59 -0700)]
Dump the device number of character/block devices.

16 years agoAuto-generate a version number for the program with git-describe.
Michael Vrable [Wed, 18 Jul 2007 19:03:46 +0000 (12:03 -0700)]
Auto-generate a version number for the program with git-describe.

If compiled from a git repository, embed the version number (output from
git-describe) into the resulting binary.  If this does not work for
whatever reason, the version string embedded is "Unknown".

16 years agoAdd string un-escaping, and fix the statcache reader to use it.
Michael Vrable [Tue, 17 Jul 2007 23:29:14 +0000 (16:29 -0700)]
Add string un-escaping, and fix the statcache reader to use it.

16 years agoRename the generated executable from "scandir" to "lbs".
Michael Vrable [Tue, 17 Jul 2007 21:35:09 +0000 (14:35 -0700)]
Rename the generated executable from "scandir" to "lbs".

16 years agoImplement a more complex inclusion/exclusion system for files.
Michael Vrable [Tue, 17 Jul 2007 20:51:29 +0000 (13:51 -0700)]
Implement a more complex inclusion/exclusion system for files.

Allow multiple paths to be specified for backups, to allow different parts
of the filesystem tree to be selected for backup in a single snapshot.

16 years agoFix a bug in statcache support for file sizes.
Michael Vrable [Sat, 14 Jul 2007 22:45:46 +0000 (15:45 -0700)]
Fix a bug in statcache support for file sizes.

This had the effect of renderig the statcache useless (all files would be
entirely read), but apart from the performance issue should have caused any
problems.

16 years agoWhen comparing a file against the stat cache, check size field too.
Michael Vrable [Thu, 12 Jul 2007 20:05:14 +0000 (13:05 -0700)]
When comparing a file against the stat cache, check size field too.

16 years agoDump statistics of data written at the end of a backup run.
Michael Vrable [Sat, 7 Jul 2007 21:02:56 +0000 (14:02 -0700)]
Dump statistics of data written at the end of a backup run.

16 years agoInclude file size in the stat cache (but do not check against it yet).
Michael Vrable [Thu, 5 Jul 2007 18:20:21 +0000 (11:20 -0700)]
Include file size in the stat cache (but do not check against it yet).

16 years agoRewrite object reference parser.
Michael Vrable [Wed, 4 Jul 2007 17:04:13 +0000 (10:04 -0700)]
Rewrite object reference parser.

This new version should handle all options, including checksums and object
ranges, though it hasn't been fully tested.

16 years agoOnly trust the results of a stat if two separate backups agree.
Michael Vrable [Thu, 28 Jun 2007 20:30:23 +0000 (13:30 -0700)]
Only trust the results of a stat if two separate backups agree.

This should eliminate races where stat information might not change if
there are two changes to a file within the same second--as long as two
backups are not taken less than a second apart.

16 years agoSort-of-working statcache implementation.
Michael Vrable [Thu, 28 Jun 2007 00:10:11 +0000 (17:10 -0700)]
Sort-of-working statcache implementation.

This will use stat information to determine when a file doesn't need to
be read again.  There are still some bits left to be implemented; in
particular, parsing of references needs to be fixed, since at the moment
checksums and ranges aren't supported, and any files using them will
have block lists corrupted by the stat cache.  (Fortunately, nothing
uses those reference forms yet for file contents.)

16 years agoWrite the backup descriptor as the very last step in a backup.
Michael Vrable [Wed, 27 Jun 2007 20:20:39 +0000 (13:20 -0700)]
Write the backup descriptor as the very last step in a backup.

For consistency, we should make sure that all segments and other data
needed to reconstruct a backup are written before we write out the
backup descriptor file itself.

16 years agoTry an alternate segment cleaning ordering.
Michael Vrable [Thu, 21 Jun 2007 18:02:09 +0000 (11:02 -0700)]
Try an alternate segment cleaning ordering.

This one gives more weight to expiring nearly-empty segments.

16 years agoAdd a simple script for garbage collecting old segments.
Michael Vrable [Tue, 19 Jun 2007 17:46:20 +0000 (10:46 -0700)]
Add a simple script for garbage collecting old segments.

16 years agoPreserve the "timestamp" database field when expiring segments.
Michael Vrable [Tue, 19 Jun 2007 02:10:57 +0000 (19:10 -0700)]
Preserve the "timestamp" database field when expiring segments.

When segments are repacked, we would like to keep the original timestamp
for the old objects which are written into new segments.  These changes
should now propagate that timestamp value.

16 years agoMinor formatting fix when outputting the statcache file.
Michael Vrable [Tue, 19 Jun 2007 00:45:55 +0000 (17:45 -0700)]
Minor formatting fix when outputting the statcache file.

16 years agoPartial commit of statcache support.
Michael Vrable [Mon, 18 Jun 2007 20:15:05 +0000 (13:15 -0700)]
Partial commit of statcache support.

This will cache the results of stat calls from previous backups, so that
future backups do not need to read the files in their entirety if no data
has changed.

16 years agoRename descriptor files.
Michael Vrable [Sat, 16 Jun 2007 02:31:51 +0000 (19:31 -0700)]
Rename descriptor files.

Prefix them with "snapshot-", so they will sort after all segment files.

16 years agoWait to write the backup description until a backup is finished.
Michael Vrable [Sat, 16 Jun 2007 02:29:54 +0000 (19:29 -0700)]
Wait to write the backup description until a backup is finished.

16 years agoUpdate database schema with views for choosing segments to clean.
Michael Vrable [Fri, 15 Jun 2007 04:29:41 +0000 (21:29 -0700)]
Update database schema with views for choosing segments to clean.

Create a couple of database views, one for gathering summary statistics
about segments in use, and one for ranking segments to be cleaned and
rewritten, based on utilization and the age of the data contained in it.

16 years agoFix --localdb= option.
Michael Vrable [Wed, 13 Jun 2007 16:32:49 +0000 (09:32 -0700)]
Fix --localdb= option.

16 years agoFactor code to prepare SQLite statements into a separate function.
Michael Vrable [Wed, 13 Jun 2007 02:58:02 +0000 (19:58 -0700)]
Factor code to prepare SQLite statements into a separate function.

This cuts down on a little code duplication and also makes it easy to
include SQL statements in inline strings when they are prepared.

Also, switch to the older sqlite3_prepare interface (not _prepare_v2) since
the new interface is still a bit too new to be commonly available.

16 years agoFix typo.
Michael Vrable [Tue, 12 Jun 2007 17:49:13 +0000 (10:49 -0700)]
Fix typo.

16 years agoMake segment compression/encryption filter to command-line-selectable.
Michael Vrable [Mon, 11 Jun 2007 21:45:12 +0000 (14:45 -0700)]
Make segment compression/encryption filter to command-line-selectable.