./sysutils/bup, Highly efficient file backup system based on the git packfile format

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 0.30.1, Package name: bup-0.30.1, Maintainer: gdt

bup is a program that backs things up. bup has a few advantages over other
backup software:

It uses a rolling checksum algorithm (similar to rsync) to split large files
into chunks. The most useful result of this is you can backup huge virtual
machine (VM) disk images, databases, and XML files incrementally, even though
they're typically all in one huge file, and not use tons of disk space for
multiple versions.

It uses the packfile format from git (the open source version control system),
so you can access the stored data even if you don't like bup's user interface.

Unlike git, it writes packfiles directly (instead of having a separate garbage
collection/repacking stage) so it's fast even with gratuitously huge amounts of
data. bup's improved index formats also allow you to track far more filenames
than git (millions) and keep track of far more objects (hundreds or thousands of

Data is "automagically" shared between incremental backups without having to
know which backup is based on which other one - even if the backups are made
from two different computers that don't even know about each other. You just
tell bup to back stuff up, and it saves only the minimum amount of data needed.

Required to run:
[archivers/par2] [lang/perl5] [devel/py-readline] [lang/python27] [www/py-tornado] [devel/git-base]

Required to build:
[net/rsync] [pkgtools/cwrappers]

Master sites:

SHA1: 01e1f4de6f2b12a1b0442f8e2750fe744f4c80f7
RMD160: 13ce7dc203fdea7f8dd66981d5bf71233d1f5cc7
Filesize: 425.523 KB

Version history: (Expand)

CVS history: (Expand)

   2020-06-16 23:12:53 by Greg Troxel | Files touched by this commit (1)
Log message:
sysutils/bup: Whitespace hygiene

As noticed by pkglint.  NFCI.
   2020-06-16 23:09:36 by Greg Troxel | Files touched by this commit (2) | Package updated
Log message:
sysutils/bup: Update to 0.30.1

(0.30.1 is a bug fix release)

Notable changes in 0.30.1 as compared to 0.30

May require attention

* Previous versions of bup might have saved filesystem directories
  with incorrect metadata, but the file contents should be fine.  This
  could have happened if bup encountered an error while trying to read
  the metadata for one of the files in a directory, or if bup were
  asked to save two different files with the same name to the same
  destination directory (e.g. via the strip/graft options).  In cases
  where this has happened bup may present either generic or incorrect
  metadata for some of the paths in the affected directory.

* The way `bup index --fake-valid` works has been made to match the
  documentation in the man page so that it can actually be used for
  the stated purpose (of avoiding 'boring' files.)


* bup should more accurately recognize git versions.  Previously, for
  example, it would reject relase candidates like "1.5.2-rc3"
  or (apparently) "1.5.2-rc3 (something ...)".

* When `BUP_ASSUME_GIT_VERSION_IS_FINE` is set to true, yes or 1 in
  the environment,  bup will assume the version of git that's
  available in the `PATH` is acceptable, and skip the version check.



Build system

* The automated tests have moved from FreeBSD 11.2 to 12.1.

* t/test-fuse should be more portable.  In particular, a compatibility
  issue with Fedora 31 has been fixed, and it should be less affected
  by local timezone variances.

* Some internal build dependencies have been fixed.

Thanks to (at least)

Aidan Hobson Sayers, Greg Troxel, Johannes Berg, Luca Carlon, Reinier
Maas, Rob Browning, and Wyatt Alt
   2019-11-23 22:25:12 by Greg Troxel | Files touched by this commit (2)
Log message:
sysutils/bup: Deal with sha1-named distfile better

Use a reasonable local name to deal with ${sha1}.tar.gz, instead of
DISTDIR.  Thanks to rillig@ for the hint.
   2019-11-21 18:34:06 by Greg Troxel | Files touched by this commit (1)
Log message:
sysutils/bup: Resolve man tarball fetching

Define EXTRACT_SUFX explicitly, so that it is set when setting

Thanks to tnn@ for explaining this and rillig@ for other hints.
   2019-11-21 17:19:05 by Greg Troxel | Files touched by this commit (2)
Log message:
sysutils/bup: Workarounds for dealing with haskell, github, github.mk

github.mk presumes that there is one distfile, but bup has two because
it uses pandoc which uses haskell.  Set variables that should result
in fetching both of them.  Because this does not work, I have put a
copy of the man tarball at MASTER_SITE_BACKUP.

(No PKGREVISION++ because if you had the distfiles before you'll get
the same binary package now.)
   2019-11-19 16:01:25 by Greg Troxel | Files touched by this commit (4) | Package updated
Log message:
sysutils/bup: Update to 0.30

packaging changes: switch to 0.30 man tarball

Notable changes in 0.30 as compared to 0.29.3

May require attention

* The minimum `git` version required is now 1.5.6.

* The `prune-older` command now keeps the most recent save in each
  period group (day, week, month, ...) rather than the oldest.

* `bup` now adds a zero-padded suffix to the names of saves with the
  same timestamp (e.g. 1970-01-01-214640-07) in order to avoid
  duplicates.  The sequence number currently represents the save's
  reversed position in default `git rev-list` order, so that given:


  In the normal case, the -10 save would be the next save made after
  -09 (and the -09 save would be the single parent commit for -10).

* `bup` is not currently compatible with Python 3 and will now refuse
  to run if the Python version is not 2 unless
  `BUP_ALLOW_UNEXPECTED_PYTHON_VERSION=true` is set in the environment
  (which can be useful for development and testing).

* `bup ls -s` now reports the tree hash for commits unless
  `--commit-hash` is also specified.


* `bup get` has been added.  This command allows the transfer or
  rewriting of data within and between repositories, local or remote.
  Among other things, it can be used to append remote saves to a local
  branch, which by extension supports merging repositories.  See
  `bup-get(1)` for further information, and please note, this is a new
  *EXPERIMENTAL* command that can (intentionally) modify your data in
  destructive ways.  It is potentially much more dangerous than most
  `bup` commands.  Treat with caution.

* `bup` can now restore directly from a remote repository via `bup
  restore -r host:path ...`.  See `bup-restore(1)` for more

* `bup ls` can now report information for remote repositories via `bup
  ls -r host:path ...`.  See `bup-ls(1)` for more information.

* `bup` should respect the git pack.packSizeLimit setting when writing
  packfiles, though at the moment it will only affect a remote
  repository when the option is set there directly.

* `bup save` now stores the size for all links and normal files.  For
  directories saved using this new format retrieving file sizes for
  larger files should be notably less expensive.  Among other things
  this may improve the performance of commands like `bup ls -l` or
  `find /some/fuse/dir -ls`.

* The VFS (Virtual File System) that underlies many operations, and
  provides the basis for commands like `restore`, `ls`, etc. has been
  rewritten in a way that makes remote repository access easier,
  should decrease the memory footprint in some cases (e.g. for bup
  fuse), and should make it easier to provide more selective caching.
  At the moment, data is just evicted at random once a threshold is

* A `--noop <--blobs|--tree>` option has been added to `bup split`
  which prints the resulting id without storing the data in the


* The way `bup` handles output from subprocesses (diagnostics,
  progress, etc.) has been adjusted in a way that should make it less
  likely that bup might continue running after the main process has
  exited, say via a C-c (SIGINT).

* `bup` should now respect the specified compression level when
  writing to a remote repository.

* `bup restore` now creates FIFOs with mkfifo, not mknod, which is
  more portable.  The previous approach did not work correctly on (at
  least) some versions of NetBSD.

* `bup` should no longer just crash when it encounters a commit with a
  "mergetag" header.  For the moment, it just ignores them, and
  they'll be discarded whenever `bup` rewrites a commit, say via the
  `rm`, `prune-older`, or `get` commands.

* The bloom command should now end progress messages with \r, not \n,
  which avoids leaving spurious output lines behind at exit.

* A missing space has been added to the `bup split --bench` output.

* Various Python version compatibility problems have been fixed,
  including some of the incompatibilities introduced by Python 3.

* Some issues with mincore on WSL have been fixed.

* Some Android build incompatibilities have been fixed.

Build system

* The tests no longer assume pwd is in /bin.

* The tests should be less sensitive to the locale.

* `test-meta` should no longer try to apply chattr +T to files.  'T'
  only works for directories, and newer Linux kernels actually reject
  the attempt (as of at least 4.12, and maybe 4.10).

* `test-rm` should no longer fail when newer versions of git
  automatically create packed-refs.

* `test-sparse-files` should be less likely to fail when run inside a

* `test-index-check-device` and `test-xdev` now use separate files for
  their loopback mounts.  Previously each was mounting the same image
  twice, which could produce the same device number.

Thanks to (at least)

Alexander Barton, Artem Leshchev, Ben Kelly, Fabian 'xx4h' Melters,
Greg Troxel, Jamie Wyrick, Julien Goodwin, Mateusz Konieczny,
Nathaniel Filardo, Patrick Rouleau, Paul Kronenwetter, Rob Browning,
Robert Evans, Tim Riemenschneider, and bedhanger
   2019-11-04 22:28:59 by Roland Illig | Files touched by this commit (174)
Log message:
sysutils: align variable assignments

pkglint -Wall -F --only aligned --only indent -r

Manually excluded consolekit and dc-tools since pkglint didn't get the
formatting correct.
   2019-09-12 02:28:47 by Greg Troxel | Files touched by this commit (3) | Package updated
Log message:
sysutils/bup: Update to 0.29.3

Upstream changes (other than bugfixes minor improvements):


* Newer versions of par2 can process in parallel using multiple
  threads/cores, and they do so automatically.  This ends up competing
  with `bup fsck`s own parallelism, enabled by `-j`, in such a way
  that the command can actually run much *slower* (and be much more
  expensive) than it would have been with no parallelism at all.

  When appropriate `bup fsck` now disables par2's competing
  parallelism (via its `-t1` option) to avoid the contention.


* An experimental `prune-older` command has been added.  It removes
  (permanently deletes) all saves except those preserved by a set of
  arguments like `--keep-monthlies-for 3y`.  See `bup help
  prune-older` for further information.