Commit graph

572 commits

Author SHA1 Message Date
Thomas Waldmann
6df21df3f4 Merge branch 'master' into multithreading
Note: although I hopefully fixed all the conflicts,
some tests are quite broken.

Conflicts:
	borg/_chunker.c
	borg/archive.py
	borg/archiver.py
	borg/cache.py
	borg/helpers.py
	borg/testsuite/archiver.py
2016-02-04 20:34:18 +01:00
Thomas Waldmann
4b339f5d69 cosmetic source cleanup (flake8) 2016-01-30 21:32:45 +01:00
TW
49cf25fce7 Merge pull request #615 from ThomasWaldmann/fix-trailing-slashes
use os.path.normpath on repository paths, fixes #606
2016-01-30 20:07:57 +01:00
TW
9797ab0130 Merge pull request #612 from ThomasWaldmann/fix-544
borg serve: overwrite client's --restrict-to-path with forced command's …
2016-01-30 20:04:09 +01:00
TW
5d93b6cda9 Merge pull request #613 from ThomasWaldmann/xdg-base-dir-keys
use xdg base dir for keys
2016-01-30 20:02:38 +01:00
Thomas Waldmann
8ec62d5e2e use os.path.normpath on repository paths, fixes #606
this does NOT fix absolute vs. relative path usage,
but as this also deals with remote paths, this can't be done in general.
2016-01-30 00:39:25 +01:00
Thomas Waldmann
d6b43a7346 Merge branch 'master' of github.com:borgbackup/borg 2016-01-30 00:01:44 +01:00
Thomas Waldmann
7773e632db fix some minor cosmetic code/docs issues 2016-01-30 00:01:13 +01:00
Thomas Waldmann
12fe47fcd2 implement --short for borg list REPO, fixes #611 2016-01-29 01:50:51 +01:00
Thomas Waldmann
695dc68479 slightly rephrase prune help 2016-01-29 01:40:29 +01:00
Thomas Waldmann
e7add135a2 add upgrader which moves the keys to new location 2016-01-29 01:23:24 +01:00
Thomas Waldmann
e06b7162c2 update docs / docstring about new key location 2016-01-28 23:15:49 +01:00
Thomas Waldmann
b8d954e60a use XDG_CONFIG_HOME for borg keys instead of ~/.borg, fixes #515 2016-01-28 22:26:58 +01:00
Thomas Waldmann
7ea2404048 borg serve: overwrite client's --restrict-to-path with forced command's option value, fixes #544
we also make sure the client is not cheating, like giving another subcommand or his own --restrict-to-path.
2016-01-28 21:59:24 +01:00
Thomas Waldmann
e7c2189a3f implement --list for borg extract
before, borg extract always emitted the full file list at info log level.
now, you need to give --list to get the full file list (consistent with borg create --list).

this is currently only useful if you also use other output-generating options,
e.g. --show-rc - you can now leave away --list to only get that other output.

later, if extract gets more output-generating options, --list will get more useful.
2016-01-28 20:25:55 +01:00
Christoph Trassl
3061b3048c Reformat commands list. 2016-01-25 18:45:32 +01:00
Thomas Waldmann
3476fffe7d remove deprecated "--compression <number>"
use --compression zlib,<number> instead
in case of 0, you could also use --compression none
2016-01-24 16:04:00 +01:00
Thomas Waldmann
ad31fcd7c0 remove deprecated "--hourly/daily/weekly/monthly/yearly"
use --keep-hourly/daily/weekly/monthly/yearly instead

note: kept the code and test, we might have deprecated option in future, too
2016-01-24 16:04:00 +01:00
Thomas Waldmann
079646ee4c remove deprecated "--do-not-cross-mountpoints"
use --one-file-system instead
2016-01-24 16:04:00 +01:00
Thomas Waldmann
e1515ee251 remove deprecated "borg verify"
use borg extract --dry-run ...
2016-01-24 16:04:00 +01:00
Thomas Waldmann
815d2e23ce remove support for --encryption=passphrase, clean up 2016-01-24 16:04:00 +01:00
Thomas Waldmann
2f9b643edb migrate-to-repokey command, dispatch passphrase type to repokey handler
every chunk has the encryption key type as first byte and we do not want to rewrite the whole repo
to change the passphrase type to repokey type. thus we simply dispatch this type to repokey
handler.
if there is a repokey that contains the same secrets as they were derived from the passphrase, it will just work.
if there is none yet, one needs to run migrate-to-repokey command to create it.
2016-01-24 16:04:00 +01:00
Thomas Waldmann
b2dedee3c8 refactor yes(), cleanup env var semantics, fixes #355
refactorings:

- introduced concept of default answer:

if the answer string is in the defaultish sequence, the return value of yes() will be the default.
e.g. if just pressing <enter> when asked on the console or if an empty string or "default" is
in the environment variable for overriding.

if an environment var has an invalid value and no retries are enabled: return default
if retries are enabled, next retry won't use the env var again, but either ask via input().

- simplify:

only one default - this should be a SAFE default as it is used in some special conditions
like EOF or invalid input with retries disallowed.

no isatty() magic, the "yes" shell command exists, so we could receive input even if it is not from a tty.

- clean:

separate retry flag from retry_msg
2016-01-24 16:04:00 +01:00
Thomas Waldmann
6d615ec30a change encryption to be on by default (repokey mode)
it's 2015, let's be safe-by-default and unsafe-as-option.

also: show default mode in builtin help
2016-01-24 15:44:09 +01:00
Thomas Waldmann
169634f2ca change the builtin default for --chunker-params, create 2MiB chunks, fixes #343
one of the biggest issues with borg < 1.0 was that it had a default target chunk
size of 64kiB, thus it created a lot of chunks, a huge chunk management overhead
(high RAM and disk usage).
2016-01-24 15:44:09 +01:00
Thomas Waldmann
5607e5aefe use os.urandom instead of own cython openssl RAND_bytes wrapper, fixes #493 2016-01-24 15:40:04 +01:00
Thomas Waldmann
3ade3d8a41 use hashlib.pbkdf2_hmac from py stdlib instead of own openssl wrapper
this is available in python 3.4+.

note:
before removing the pbkdf tests, i ran them with the pbkdf from stdlib to make sure it gives same result.
long term testing of this now belongs into stdlib tests, not into borg.
2016-01-24 15:40:04 +01:00
Thomas Waldmann
2cc0225527 use hmac.compare_digest instead of == operator
this is available in python 3.3+
2016-01-24 15:40:04 +01:00
Thomas Waldmann
9fa18c9ee9 use stat.filemode instead of homegrown code 2016-01-24 15:40:04 +01:00
Thomas Waldmann
7c8bfe6681 __file__ is now always an absolute path (3.4) 2016-01-24 15:36:04 +01:00
Thomas Waldmann
0be62d4233 stuff found on "Porting to Python 3.3" 2016-01-24 15:36:04 +01:00
Thomas Waldmann
8e13d315bb use PyMemoryView_FromMemory (py 3.3+) 2016-01-24 15:36:04 +01:00
Thomas Waldmann
ef00f5d12d we always have shutil.get_terminal_size on py 3.3+ 2016-01-24 15:36:04 +01:00
Thomas Waldmann
fc326df600 a2b_base64 now also accepts ascii-only str objects 2016-01-24 15:36:04 +01:00
Thomas Waldmann
fc52101d46 suppress unneeded exception context (PEP 409) 2016-01-24 15:36:04 +01:00
Thomas Waldmann
a6f9c29dfe use new OS and IO exception hierarchy of py 3.3 2016-01-24 15:36:04 +01:00
Thomas Waldmann
4444113414 remove misc. compat code not needed for py 3.4+ 2016-01-24 15:16:05 +01:00
Thomas Waldmann
6a5629226f simplify to print(...., flush=True) 2016-01-24 15:16:05 +01:00
Thomas Waldmann
fe8762ad28 os.utime on py 3.4+ always supports fd and follow_symlinks 2016-01-24 15:16:05 +01:00
Thomas Waldmann
265da6286f remove conditionals/wrappers, we always have stat nanosecond support on 3.4+
also: no wrapper needed for binascii.unhexlify any more
2016-01-24 15:16:05 +01:00
Thomas Waldmann
19998888ba remove support for missing PermissionError on py 3.2 2016-01-24 14:57:48 +01:00
Thomas Waldmann
dabac6a4ed use mock from stdlib, fixes #145 2016-01-24 14:57:48 +01:00
Thomas Waldmann
8a819d4499 remove borg.support, fixes #358
we only needed it because argparse was broken on some 3.2.x and 3.3.x pythons.
2016-01-24 14:57:48 +01:00
Antoine Beaupré
22efee3d2e disambiguate -p versus -P
we now use -P for --prefix and -p for --progress. previously, the
result of -p depended on the command: some were using it for
--progress, some for --prefix. this was confusing and was making it
impossible to both --progress and --prefix with on-letter options

--progress is likely used more often and interactively, so it get the
keystroke shortcut (lower "-p")

--prefix is used more rarely / in scripts, but important/dangerous for
prune, so it get the extra keystroke (higher "-P")

If somebody used -p someprefix and does not fix that to -P, it will
result in "no archive specified" or "unrecognized argument". So it
will neither cause pruning to remove wrong data nor go unnoticed.

Closes: #563
2016-01-23 20:50:52 -05:00
Thomas Waldmann
e2f5983eef finer repo check progress indicator
a step size of 5% was way too much, now doing 0.1%
2016-01-23 20:00:03 +01:00
Michael Hanselmann
c7fb598ab9 Add shell-style pattern syntax
The fnmatch module in Python's standard library implements a pattern
format for paths which is similar to shell patterns. However, “*”
matches any character including path separators. This newly introduced
pattern syntax with the selector “sh” no longer matches the path
separator with “*”. Instead “**/” can be used to match zero or more
directory levels.
2016-01-21 16:07:24 +01:00
Michael Hanselmann
382b79212b Reformat pattern syntax descriptions as definition list
There are already three different styles and a fourth will be added.
A definition list is easier to navigate when trying to find the
description of a specific style.
2016-01-21 14:24:32 +01:00
TW
3496fc4665 Merge pull request #577 from Profpatsch/master
Fix upgrade without ~/attic/keys existing.
2016-01-20 00:52:30 +01:00
Profpatsch
cf0262c8b4 Fix upgrade without ~/attic/keys existing.
fixes #576
2016-01-19 11:29:18 +01:00
Michael Hanselmann
dad0ba9661 Remove old-style pattern handling functions
Remove the “adjust_pattern” and “exclude_path” functions and replace
them with the recently introduced pattern matcher class.
2016-01-18 21:26:08 +01:00