Commit Graph

1062 Commits

Author SHA1 Message Date
Thomas Waldmann 39a335f628 Merge branch 'master' into vagrant 2015-09-13 18:17:13 +02:00
Thomas Waldmann 98c464f06b vagrant: refine darwin, use osxfuse 3.0.x 2015-09-13 18:05:03 +02:00
Thomas Waldmann 5eb04969f8 setup.py: add the place where we link the lz4 header/lib on the darwin vagrant VM 2015-09-13 18:03:43 +02:00
TW 5a2744d001 Merge pull request #200 from ThomasWaldmann/vagrant
Vagrant
2015-09-13 03:22:17 +02:00
Thomas Waldmann b47f49629d use vagrant to create test installations
debian/ubuntu 32/64 bit
freebsd
darwin

note: darwin is starting up, but no ssh/rsync yet
2015-09-13 03:21:38 +02:00
Thomas Waldmann c578419401 omit support files from coverage metrics 2015-09-13 01:21:45 +02:00
TW e6ccd0e259 Merge pull request #199 from ThomasWaldmann/fix-argparse
add a argparse.py (from py 3.2.6) that is not broken
2015-09-13 01:18:59 +02:00
Thomas Waldmann bc2cfdfc59 fix the other argparse import also 2015-09-13 01:01:48 +02:00
Thomas Waldmann 2b311846e0 add a argparse.py (from py 3.2.6) that is not broken
also: remove previois attempt to fix this, installing pypi argparse into virtualenv does not work.
2015-09-13 00:58:57 +02:00
Thomas Waldmann 7774d4f82c ext3 seems to need a bit more space for a sparse file
but it is still sparse, just needed some adjustment
2015-09-13 00:36:17 +02:00
TW 15786d2563 Merge pull request #198 from tgharold/obtaining-char-from-temporary-python-value
Fix for Obtaining char from temporary python value
2015-09-12 23:43:05 +02:00
Thomas Harold 03579ddb5a Obtaining 'char *' from temporary Python value
Old code causes a compile error on Mint 17.2
2015-09-12 17:21:49 -04:00
Thomas Waldmann de39683883 Merge branch 'master' into vagrant 2015-09-12 23:13:16 +02:00
Thomas Harold 31fdba089f Merge pull request #1 from borgbackup/master
Pull latest upstream master
2015-09-12 17:11:13 -04:00
Thomas Waldmann 6c619000e3 pull fixed argparse from pypi in case we have a buggy python
see argparse 1.4.0 changelog for details
2015-09-12 22:44:23 +02:00
Thomas Waldmann cff7dffc95 detect lz4.h header file location
use similar code as for openssl headers
2015-09-12 19:38:38 +02:00
Thomas Waldmann d74da7c031 llfuse 0.41 install troubles on some platforms, require < 0.41
UnicodeDecodeError exception due to non-ascii llfuse setup.py
2015-09-12 19:26:46 +02:00
Thomas Waldmann e8f4fe0b88 pkg-config is needed for llfuse installation 2015-09-12 19:19:52 +02:00
Thomas Waldmann bc021d4ed7 do not test lzma level 9 compression
got a MemoryError in a vagrant VM, level 9 needs a lot of memory...
2015-09-12 19:16:45 +02:00
Thomas Waldmann 1fa00c2a84 use vagrant to do easy cross-platform testing 2015-09-12 19:13:17 +02:00
TW 02fff766d0 Merge pull request #173 from ThomasWaldmann/faster-cache-sync
Faster cache sync
2015-09-11 02:13:58 +02:00
Thomas Waldmann 26bde96a3a Merge branch 'master' into faster-cache-sync 2015-09-10 23:12:55 +02:00
Thomas Waldmann 1eecb020e8 cython code: add some int types to get rid of unspecific python add / subtract operations
they somehow pull in some floating point error code that led to a undefined
symbol FPE_... when using the borgbackup wheel on some non-ubuntu/debian linux
platform.
2015-09-10 23:12:12 +02:00
TW 638204fd0e Merge pull request #193 from edgewood/osxPathNormalization
Normalize paths before pattern matching on OS X
2015-09-10 22:58:20 +02:00
Ed Blackman 13ddfdf4a3 Move pattern normalization decision into decorator
Using a decorator moves the duplicate code in the init methods into a
single decorator method, while still retaining the same runtime overhead
(zero for for the non-OSX path, one extra function call plus the call to
unicodedata.normalize for OSX).  The pattern classes are much visually
cleaner, and duplicate code limited to two lines normalizing the pattern
on OSX.

Because the decoration happens at class init time (vs instance init time
for the previous approach), the OSX and non-OSX test cases can no longer
be called in the same run, so I also removed the OSX test case monkey
patching and uncommented the platform skipif decorator.
2015-09-09 15:00:58 -04:00
Ed Blackman cc13f3db97 Express non-ascii pattern platform skips better
including correcting thinko in the commented-out OSX-only test
2015-09-09 13:48:46 -04:00
Ed Blackman d510ff7c63 Merge non-ascii Include and ExcludePattern tests
to parallel the OSX non-ascii tests
2015-09-09 13:41:34 -04:00
Ed Blackman d9fb1d2b03 Normalize paths before pattern matching on OS X
The OS X file system HFS+ stores path names as Unicode, and converts
them to a variant of Unicode NFD for storage.  Because path names will
always be in this canonical form, it's not friendly to require users to
match this form exactly.  Convert paths from the repository and patterns
from the command line to NFD before comparing them.

Unix (and Windows, I think) file systems don't convert path names into a
canonical form, so users will continue to have to exactly match the path
name they want, because there could be two paths with the same character
visually that are actually composed of different byte sequences.
2015-09-08 23:33:34 -04:00
TW da5923ec04 Merge pull request #192 from ThomasWaldmann/create-dryrun
implement borg create --dry-run, attic issue #267
2015-09-08 19:04:34 +02:00
Thomas Waldmann 1aacdda4a4 implement borg create --dry-run, attic issue #267
also: fix verbose mode display of stdin backup
2015-09-08 03:12:45 +02:00
Thomas Waldmann 16e5f241fc update CHANGES 2015-09-06 23:51:03 +02:00
TW f852175c44 Merge pull request #187 from ThomasWaldmann/mount-relative-dir
use absolute path, attic issue #200, attic issue #137
2015-09-06 23:49:12 +02:00
Thomas Waldmann 13f20647dc use absolute path, attic issue #200, attic issue #137
the daemonize code changes the cwd, thus a relative repo path can't work.

borg mount repo mnt  # did not work
borg mount --foreground repo mnt  # did work
borg mount /abs/path/repo mnt  # did work
2015-09-06 23:26:47 +02:00
TW 68928e4c67 Merge pull request #186 from ThomasWaldmann/chunker_small_fixes
Chunker small fixes
2015-09-06 22:22:19 +02:00
Thomas Waldmann e244fe2f69 change 2 more chunker vars to off_t
so they get 64bit on 32bit platforms.
2015-09-06 22:06:52 +02:00
Thomas Waldmann 32e276c526 Merge branch 'chunker_small_fixes' of https://github.com/sourcejedi/borg into chunker_small_fixes 2015-09-06 22:03:42 +02:00
TW 947fc095d8 Merge pull request #183 from ThomasWaldmann/borg-repo-envvar
BORG_REPO env var support
2015-09-06 21:51:24 +02:00
TW 70d97c4467 Merge pull request #180 from ThomasWaldmann/read-device
read special files as if they were regular files, update docs, closes #79
2015-09-06 21:38:31 +02:00
TW 3ab068b834 Merge pull request #181 from ThomasWaldmann/hash-collision
detect inconsistency / corruption / hash collision, closes #170
2015-09-06 21:35:53 +02:00
TW 18e428f33c Merge pull request #185 from ThomasWaldmann/fix-182
fix reaction to "no" answer at delete repo prompt, fixes #182
2015-09-06 21:33:24 +02:00
Thomas Waldmann f5069c4e81 fix reaction to "no" answer at delete repo prompt, fixes #182 2015-09-06 21:11:52 +02:00
Thomas Waldmann 817ce18bc6 fix repository arg default 2015-09-06 20:19:28 +02:00
Thomas Waldmann b3f5231bac BORG_REPO env var support
sets the default repository to use, e.g. like:

export BORG_REPO=/mnt/backup/repo
borg init
borg create ::archive
borg list
borg mount :: /mnt
fusermount -u /mnt
borg delete ::archive
2015-09-06 18:18:24 +02:00
Thomas Waldmann a912c02757 detect inconsistency / corruption / hash collision, closes #170
added a check that compares the size of the new chunk with the stored size of the
already existing chunk in storage that has the same id_hash value.
raise an exception if there is a size mismatch.

this could happen if:

- the stored size is somehow incorrect (corruption or software bug)
- we found a hash collision for the id_hash (for sha256, this is very unlikely)
2015-09-06 01:10:43 +02:00
Thomas Waldmann 0b1035746e read special files as if they were regular files, update docs, closes #79
do not use the files cache for such special files
2015-09-06 00:29:46 +02:00
Thomas Waldmann 54ccbc5ae2 chunks index resync: do all in one pass
if we do not have a cached archive index: fetch and build and merge it
if we have one: merge it
2015-08-30 15:15:15 +02:00
Thomas Waldmann 22dd925986 chunks index archive: remove all tar and compression related stuff and just use separate files in a directory
the compression was quite cpu intensive and didn't work that great anyway.
now the disk space usage is a bit higher, but it is much faster and less hard on the cpu.

disk space needs grow linearly with the amount and size of the archives, this
is a problem esp. if one has many and/or big archives (but this problem existed
before also because compression was not as effective as I believed).

the tar archive always needed a complete rebuild (and thus: decompression
and recompression) because deleting outdated archive indexes was not
possible in the tar file.

now we just have a directory chunks.archive.d and keep archive index files
there for all archives we already know.
if an archive does not exist any more in the repo, we just delete its index file.
if an archive is unknown still, we fetch the infos and build a new index file.

when merging, we avoid growing the hash table from zero, but just start
with the first archive's index as basis for merging.
2015-08-30 03:03:48 +02:00
Thomas Waldmann f7210c749f remove cpu intensive compression methods for the chunks.archive
also remove the comment about how good xz compresses - while that was true for smaller index files,
it seems to be less effective with bigger ones. maybe just an issue with compression dict size.
2015-08-29 23:42:28 +02:00
TW 17c4394896 Merge pull request #161 from RonnyPfannschmidt/setuptools-scm
replace versioneer with setuptools_scm
2015-08-29 16:46:41 +02:00
Thomas Waldmann ab545ae45d CHANGES: release 0.25.0 2015-08-29 14:10:31 +02:00