Commit graph

549 commits

Author SHA1 Message Date
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
Michael Hanselmann
ceae4a9fa8 Support patterns on extraction, fixes #361
This change implements the functionality requested in issue #361:
extracting files with a given extension. It does so by permitting
patterns to be used instead plain prefix paths. The pattern styles
supported are the same as for exclusions.
2016-01-18 21:26:08 +01:00
Michael Hanselmann
848375e2fe Add and document path prefix as pattern style
The “extract” command supports extracting all files underneath a given
set of prefix paths. The forthcoming support for extracting files using
a pattern (i.e. only files ending in “.zip”) requires the introduction
of path prefixes as a third pattern style, making it also available for
exclusions.
2016-01-18 21:26:08 +01:00
Michael Hanselmann
b6362b5963 Flexible default pattern style
A function to parse pattern specifications was introduced in commit
2bafece. Since then it had a hardcoded default style of “fm”, meaning
fnmatch. With the forthcoming support for extracting files using
patterns this default style must be more flexible.
2016-01-18 20:59:09 +01:00
Michael Hanselmann
1fa4d2e516 Use constants for pattern style prefixes
The prefix used for pattern styles should be kept together with the
respective style implementation.
2016-01-18 20:59:08 +01:00
Michael Hanselmann
190107ada7 Replace use of “exclude_path” in tests
The newly added pattern matcher class can replace the “exclude_path”
function. The latter is going to be removed in a later change.
2016-01-18 20:59:08 +01:00
Michael Hanselmann
9747755131 Add pattern matcher wrapper
The utility functions “adjust_patterns” and “exclude_path” produce
respectively use a standard list object containing pattern objects.
With the forthcoming introduction of patterns for filtering files
to be extracted it's better to move the logic of these classes into
a single class.

The wrapper allows adding any number of patterns to an internal list
together with a value to be returned if a match function finds that
one of the patterns matches. A fallback value is returned otherwise.
2016-01-18 20:59:08 +01:00
Michael Hanselmann
c1feb4b532 Simplify pattern tests
- Stop using “adjust_pattern” and “exclude_path” as they're utility
  functions not relevant to testing pattern classes
- Cover a few more cases, especially with more than one path separator
  and relative paths
- At least one dedicated test function for each pattern style as opposed
  to a single, big test mixing styles
- Use positive instead of negative matching (i.e. the expected list of
  resulting items is a list of items matching a pattern)
2016-01-18 20:47:22 +01:00
TW
735fe557e2 Merge pull request #571 from ThomasWaldmann/fix-570
fix crash when using borg create --dry-run --keep-tag-files, fixes #570
2016-01-18 16:16:54 +01:00
Thomas Waldmann
4c00bb0d2f fix crash when using borg create --dry-run --keep-tag-files, fixes #570 2016-01-18 14:30:41 +01:00
TW
f2f2810b5a Merge pull request #568 from ypid/docs-fixes
Docs fixes.
2016-01-18 11:02:13 +01:00
TW
1878e223d6 Merge pull request #566 from ThomasWaldmann/cache-ctxmgr
implement and use context manager for Cache, partial fix for #285
2016-01-18 01:00:17 +01:00
TW
704b505968 Merge pull request #565 from ThomasWaldmann/repocache-ctxmgr
Repocache ctxmgr
2016-01-18 00:58:23 +01:00
Robin Schneider
576348a9d4
Use HTTPS everywhere. Especially when the website already redirects to HTTPS. 2016-01-17 22:31:08 +01:00
Robin Schneider
1f1ff61375
borg prune only knows "--keep-within" and not "--within". 2016-01-17 21:15:26 +01:00