more likely to eat your data. It's also missing some
probably-critical features, though fewer than it used to be.
- - It requires python >= 2.6, a C compiler, and an installed git
+ - It requires python 3.7 or newer, a C compiler, and an installed git
version >= 1.5.6. It also requires par2 if you want fsck to be
able to generate the information needed to recover from some types
of corruption.
- It currently only works on Linux, FreeBSD, NetBSD, OS X >= 10.4,
- Solaris, or Windows (with Cygwin, and maybe with WSL). Patches to
- support other platforms are welcome.
-
- - Until resolved, a [glibc bug](https://sourceware.org/bugzilla/show_bug.cgi?id=26034)
- might cause bup to crash on startup for some (unusual) command line
- argument values, when bup is configured to use Python 3.
+ Solaris, or Windows (with Cygwin, and WSL). Patches to support
+ other platforms are welcome.
- Any items in "Things that are stupid" below.
Notable changes introduced by a release
=======================================
+ - <a href="note/0.33-from-0.32.md">Changes in 0.33 as compared to 0.32</a>
+ - <a href="note/0.32-from-0.31.md">Changes in 0.32 as compared to 0.31</a>
- <a href="note/0.31-from-0.30.1.md">Changes in 0.31 as compared to 0.30.1</a>
- <a href="note/0.30.1-from-0.30.md">Changes in 0.30.1 as compared to 0.30</a>
- <a href="note/0.30-from-0.29.3.md">Changes in 0.30 as compared to 0.29.3</a>
Test status
===========
-| branch | Debian | FreeBSD | macOS |
-|--------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
-| master | [![Debian test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master&task=debian)](https://cirrus-ci.com/github/bup/bup) | [![FreeBSD test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master&task=freebsd)](https://cirrus-ci.com/github/bup/bup) | [![macOS test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master&task=macos)](https://cirrus-ci.com/github/bup/bup) |
-| 0.30.x | [![Debian test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.30.x&task=debian)](https://cirrus-ci.com/github/bup/bup) | [![FreeBSD test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.30.x&task=freebsd)](https://cirrus-ci.com/github/bup/bup) | [![macOS test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.30.x&task=macos)](https://cirrus-ci.com/github/bup/bup) |
-| 0.29.x | [![Debian test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.29.x&task=debian)](https://cirrus-ci.com/github/bup/bup) | [![FreeBSD test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.29.x&task=freebsd)](https://cirrus-ci.com/github/bup/bup) | [![macOS test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.29.x&task=macos)](https://cirrus-ci.com/github/bup/bup) |
+| master |
+|--------|
+| [![master branch test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master)](https://cirrus-ci.com/github/bup/bup) |
Getting started
===============
bup, please check out the latest stable release like this:
```sh
- git checkout 0.29.1
+ git checkout 0.33
```
You can see the latest stable release here:
- https://github.com/bup/bup/releases.
+ https://github.com/bup/bup/tags
- Install the required python libraries (including the development
libraries).
+ For `bup fuse` you will need to install
+ [python-fuse](https://github.com/libfuse/python-fuse) rather than
+ [fusepy](https://github.com/fusepy/fusepy). For example, in
+ Debian, install python3-fuse rather than python3-fusepy.
+
On very recent Debian/Ubuntu versions, this may be sufficient (run
as root):
apt-get build-dep bup
```
- Otherwise try this (substitute python2.6-dev if you have an older
- system):
+ Otherwise try this:
```sh
- apt-get install python2.7-dev python-fuse
- apt-get install python-pyxattr
+ apt-get install python3-dev python3-fuse
+ apt-get install python3-pyxattr python3-pytest
+ apt-get install python3-distutils
apt-get install pkg-config linux-libc-dev libacl1-dev
- apt-get install acl attr
- apt-get isntall python-pytest-xdist # optional (parallel tests)
+ apt-get install gcc make acl attr rsync
+ apt-get isntall python3-pytest-xdist # optional (parallel tests)
+ apt-get install par2 # optional (error correction)
apt-get install libreadline-dev # optional (bup ftp)
- apt-get install python-tornado # optional (bup web)
- ```
+ apt-get install python3-tornado # optional (bup web)
- On CentOS (for CentOS 6, at least), this should be sufficient (run
- as root):
-
- ```sh
- yum groupinstall "Development Tools"
- yum install python python-devel libacl-devel
- yum install fuse-python pyxattr
- yum install perl-Time-HiRes
- yum install readline-devel # optional (bup ftp)
- yum install python-tornado # optional (bup web)
```
- In addition to the default CentOS repositories, you may need to add
- RPMForge (for fuse-python) and EPEL (for pyxattr).
-
On Cygwin, install python, make, rsync, and gcc4.
If you would like to use the optional bup web server on systems
pip install tornado
```
- - Build the python module and symlinks:
+ - Build:
```sh
make
make install DESTDIR=/opt/bup PREFIX=''
```
- - The Python executable that bup will use is chosen by ./configure,
- which will search for a reasonable version unless PYTHON is set in
- the environment, in which case, bup will use that path. You can
- see which Python executable was chosen by looking at the
- configure output, or examining cmd/python-cmd.sh, and you can
- change the selection by re-running ./configure.
+ - The Python version that bup will use is determined by the
+ `python-config` program chosen by `./configure`, which will search
+ for a reasonable version unless `BUP_PYTHON_CONFIG` is set in the
+ environment. You can see which Python executable was chosen by
+ looking at the configure output, or examining
+ `config/config.var/bup-python-config`, and you can change the
+ selection by re-running `./configure`.
+
+- If you want to specify your own `CPPFLAGS`, `CFLAGS`, or `LDFLAGS`,
+ you can set them for individual `make` invocations, e.g. `make
+ CFLAGS=-O0 check`, or persistently via `./configure` with
+ `CFLAGS=-O0 ./configure`. At the moment, `make clean` clears the
+ configuration, but we may change that at some point, perhaps by
+ adding and requiring a `make distclean` to clear the configuration.
From binary packages
--------------------
https://www.archlinux.org/packages/?sort=&q=bup
- Fedora:
https://apps.fedoraproject.org/packages/bup
+ - macOS (Homebrew):
+ https://formulae.brew.sh/formula/bup
Using bup
...
```
- - Initialize the default BUP_DIR (~/.bup -- you can choose another by
- either specifying `bup -d DIR ...` or setting the `BUP_DIR`
- environment variable for a command):
+ - Initialize the default bup repository (~/.bup -- you can choose
+ another by either specifying `bup -d DIR ...` or setting the
+ `BUP_DIR` environment variable for a command):
```sh
bup init
Notes on FreeBSD
----------------
-- FreeBSD's default 'make' command doesn't like bup's Makefile. In order to
- compile the code, run tests and install bup, you need to install GNU Make
- from the port named 'gmake' and use its executable instead in the commands
- seen above. (i.e. 'gmake test' runs bup's test suite)
+- In order to compile the code, run tests and install bup, you need to
+ install GNU Make from the `gmake` port.
- Python's development headers are automatically installed with the 'python'
port so there's no need to install them separately.
__setitem__, and __setslice__ [3].
[1] http://comments.gmane.org/gmane.comp.sysutils.backup.bup/613
- [2] http://docs.python.org/2/library/mmap.html
- [3] http://docs.python.org/2/reference/datamodel.html#emulating-container-types
+ [2] http://docs.python.org/3/library/mmap.html
+ [3] http://docs.python.org/3/reference/datamodel.html#emulating-container-types
- 'bup index' is slower than it should be.
give the continuous-backup process a really low CPU and I/O priority so
you wouldn't even know it was running.
- - bup only has experimental support for pruning old backups.
-
- While you should now be able to drop old saves and branches with
- `bup rm`, and reclaim the space occupied by data that's no longer
- needed by other backups with `bup gc`, these commands are
- experimental, and should be handled with great care. See the
- man pages for more information.
-
- Unless you want to help test the new commands, one possible
- workaround is to just start a new BUP_DIR occasionally,
- i.e. bup-2013, bup-2014...
-
- bup has never been tested on anything but Linux, FreeBSD, NetBSD,
OS X, and Windows+Cygwin.
bup is a work in progress and there are many ways it can still be improved.
If you'd like to contribute patches, ideas, or bug reports, please join the
-bup mailing list.
+<a href="mailto:bup-list@googlegroups.com">bup mailing list</a>:
You can find the mailing list archives here:
bup-list+subscribe@googlegroups.com
+You can also reach us via the
+\#bup IRC channel at ircs://irc.libera.chat:6697/bup
+on the [libera.chat](https://libera.chat/) network or via this
+[web interface](https://web.libera.chat/?channels=bup).
+
Please see <a href="HACKING">./HACKING</a> for
additional information, i.e. how to submit patches (hint - no pull
requests), how we handle branches, etc.
Have fun,
Avery
+
+<!--
+Local Variables:
+mode: markdown
+End:
+-->