Commit Graph

212 Commits

Author SHA1 Message Date
Thomas Waldmann 8a15916284 Merge branch '1.0-maint' into merge-1.0-maint
# Conflicts:
#	docs/changes.rst
#	docs/usage/help.rst.inc
#	src/borg/cache.py
#	src/borg/remote.py
#	src/borg/testsuite/__init__.py
#	src/borg/testsuite/archiver.py
2016-10-31 18:24:13 +01:00
Thomas Waldmann a16c7d8e16 mention file:// 2016-10-28 05:04:23 +02:00
Thomas Waldmann ca15cc80e5 document repo URLs / archive location 2016-10-28 04:43:33 +02:00
Thomas Waldmann 09e74af7bf Merge branch '1.0-maint' 2016-10-24 21:41:20 +02:00
Thomas Waldmann d363907b5a document BORG_NONCES_DIR, fixes #1592 2016-10-21 04:15:33 +02:00
Thomas Waldmann c000eb8083 add clarification about append-only mode, fixes #1689 2016-10-19 02:31:39 +02:00
Thomas Waldmann b88e82d99d remove debug-xxx commands, fixes #1627
we use "debug xxx" subcommands now. docs updated.

also makes "borg help" shorter as not all debug-xxx commands
show up, but just 1 main "debug" command.
2016-10-10 00:22:01 +02:00
Thomas Waldmann 4c01857461 Merge branch '1.0-maint' into merge-1.0-maint 2016-09-30 23:42:48 +02:00
Thomas Waldmann a65707beb8 add more specific warning about write-access debug commands 2016-09-30 21:09:02 +02:00
Thomas Waldmann 2a864be84f Merge branch '1.0-maint' into merge-1.0-maint
# Conflicts:
#	setup.py
#	src/borg/archiver.py
#	src/borg/helpers.py
2016-09-27 21:31:41 +02:00
textshell b84014e7d9 archiver: Add documentation for "key export" and "key import" commands. (#1641)
archiver: Add documentation for "key export" and "key import" commands
2016-09-27 15:24:31 +02:00
Thomas Waldmann 1287d1ae92 Merge branch '1.0-maint' into merge-1.0-maint
# Conflicts:
#	docs/development.rst
#	src/borg/archive.py
#	src/borg/archiver.py
#	src/borg/hashindex.pyx
#	src/borg/testsuite/hashindex.py
2016-09-14 02:53:41 +02:00
Thomas Waldmann f70008238a link reference docs and faq about BORG_FILES_CACHE_TTL, fixes #1561 2016-09-03 19:23:59 +02:00
Thomas Waldmann 1f04820d9d fuse: implement versions view
all archives, all items are read to build a unified view.
files are represented by a same-name directory with the versions of the file.
A filename suffix computed by adler32(chunkids) is used to disambiguate the versions.

also: refactor code a little, create methods for leaves, inner nodes.
2016-08-27 23:17:57 +02:00
Andrew Engelbrecht f8bb73732c added doc for "pull" type backup over sshfs
Fixes #900
2016-08-21 01:04:16 -04:00
Thomas Waldmann 8be6761c26 Merge commit 'feb7e2517ef7ec07cc638953a86c726aada7d37e' 2016-08-14 15:05:11 +02:00
Thomas Waldmann 6e658a5a6c docs: improve prune examples 2016-08-10 15:45:57 +02:00
Thomas Waldmann dbe862f3d8 Merge branch '1.0-maint' into merge-1.0-maint 2016-08-06 01:24:22 +02:00
Thomas Waldmann 5f7b466969 implement BORG_FILES_CACHE_TTL, update FAQ
raise default ttl to 20 (previously: 10).
2016-07-31 01:33:46 +02:00
Thomas Waldmann 9865509105 docs: remove borg list example, be more specific about compression heuristics 2016-07-30 21:21:45 +02:00
Marian Beermann 2e6eb63174
Merge branch '1.0-maint' into master 2016-07-14 01:28:26 +02:00
Thomas Waldmann cf4d761042 docs: fix the highlighting
default is "python", that's why some help fragments and bash scripts looked strange.
2016-07-11 23:16:53 +02:00
Thomas Waldmann fe627246e4 Merge branch '1.0-maint' 2016-07-08 12:13:52 +02:00
Thomas Waldmann 1fe3781186 backport some FAQ entries from master branch 2016-07-07 21:56:06 +02:00
Thomas Waldmann 12f55f4e9f Merge branch '1.0-maint' 2016-07-06 01:33:53 +02:00
Thomas Waldmann f363ddd7ca Merge branch '1.0-maint' 2016-07-04 20:11:21 +02:00
Thomas Waldmann 3325126988 add missing BORG_REMOTE_PATH env var, fixes #1258 2016-07-04 15:06:20 +02:00
Thomas Waldmann d59a1d5fef doc and help update for --read-special 2016-07-04 14:06:30 +02:00
Lee Bousfield c515d6018d
Add --append-only to borg serve
Fixes #1168
2016-06-30 17:58:36 -04:00
Thomas Waldmann 87d6755108 Merge branch '1.0-maint' 2016-06-29 18:28:33 +02:00
Thomas Waldmann c773c882b9 add prune visualization / example, fixes #723 2016-06-27 21:20:35 +02:00
Thomas Waldmann ed128e517b Merge branch '1.0-maint' 2016-06-25 17:18:14 +02:00
Thomas Waldmann 5ae340998c update docs about placeholders 2016-06-22 08:40:31 +02:00
Ed Blackman 226e5519f3 Print implied output without --info/-v
There are persistent questions why output from options like --list
and --stats doesn't show up.  Also, borg currently isn't able to
show *just* the output for a given option (--list, --stats,
--show-rc, --show-version, or --progress), without other INFO level
messages.

The solution is to use more granular loggers, so that messages
specific to a given option goes to a logger designated for that
option.  That option-specific logger can then be configured
separately from the regular loggers.

Those option-specific loggers can also be used as a hook in a
BORG_LOGGING_CONF config file to log the --list output to a separate
file, or send --stats output to a network socket where some daemon
could analyze it.

Steps:
- create an option-specific logger for each of the implied output options
- modify the messages specific to each option to go to the correct logger
- if an implied output option is passed, change the option-specific
  logger (only) to log at INFO level
- test that root logger messages don't come through option-specific loggers

They shouldn't, per https://docs.python.org/3/howto/logging.html#logging-flow
but test just the same.  Particularly test a message that can come from
remote repositories.

Fixes #526, #573, #665, #824
2016-05-18 14:58:44 -04:00
Marian Beermann deab8ca7e2
init: move epilogue from docs/usage into help output
Also tell which algos are used and that HW accel is supported.
2016-05-17 01:00:48 +02:00
Marian Beermann c52861e0ca
Improve LoggedIO write performance, make commit mechanism more solid
- Instead of very small (5 MB-ish) segment files, use larger ones
- Request asynchronous write-out or write-through (TODO) where it is supported,
  to achieve a continuously high throughput for writes
- Instead of depending on ordered writes (write data, commit tag, sync)
  for consistency, do a double-sync commit as more serious RDBMS also do
  i.e. write data, sync, write commit tag, sync
  Since commits are very expensive in Borg at the moment this makes no
  difference performance-wise.

New platform APIs: SyncFile, sync_dir

[x] Naive implementation (equivalent to what Borg did before)
[x] Linux implementation
[ ] Windows implementation
[-] OSX implementation (F_FULLSYNC)
2016-05-14 22:47:18 +02:00
Thomas Waldmann d2988444c0 better help / docs for borg extract --dry-run, fixes #1022 2016-05-07 18:53:58 +02:00
Thomas Waldmann 8304b8a591 FAQ: add entries about compromised machines and other troubles
also: fix append-only mode description - "multiple machines" and "central server" are over-specific and not required for this scenario.
2016-05-05 17:52:31 +02:00
Thomas Waldmann 39c0757020 Merge branch '1.0-maint' 2016-05-05 13:55:38 +02:00
Thomas Waldmann 9e09786b33 borg create help: document format tags, fixes #894
docs: rephrased, more useful examples
2016-05-05 13:38:08 +02:00
Thomas Waldmann 962c2e9d54 borg with-lock REPO CMD ARGS 2016-05-02 23:29:17 +02:00
Thomas Waldmann e7ca74fbef move BORG_KEY_FILE closer to BORG_KEYS_DIR 2016-05-02 00:38:16 +02:00
Félix Sipma a5ba0abe42 support new env var 'BORG_KEY_FILE' 2016-05-01 21:15:09 +02:00
Thomas Waldmann b641d11e1b Merge branch '1.0-maint' 2016-05-01 20:28:17 +02:00
Thomas Waldmann 700e715b23 add missing docs for borg break-lock, fixes #992 2016-04-30 00:32:25 +02:00
Thomas Waldmann 4de14fdd28 Merge branch '1.0-maint' 2016-04-16 16:58:43 +02:00
Thomas Waldmann 43b4fda393 docs: fix confusing usage of "repo" as archive name 2016-04-15 03:38:43 +02:00
Thomas Waldmann bc854e3e64 docs: use /path/to/repo, fixes #901
/mnt/backup was confusing as people like to mount their backup disk on /mnt/backup,
but borg init /mnt/backup does not work if that directory already exists because it is
the mountpoint. it would work, if /mnt was the mountpoint, but that is not obvious
and also unusual.
2016-04-15 03:35:37 +02:00
Marian Beermann d5ad063d13
recreate: add experimental warning for now 2016-04-10 16:53:38 +02:00
Marian Beermann 4b5e6ffa77
Assimilate "borg comment" into "borg recreate" 2016-04-10 14:09:09 +02:00
Marian Beermann a3ee9d2c5f borg recreate: Re-create existing archives.
Use with caution: permanent data loss by specifying incorrect patterns
is easily possible. Make a dry run to make sure you got everything right.

borg recreate has many uses:
- Can selectively remove files/dirs from old archives, e.g. to free
  space or purging picturarum biggus dickus from history
- Recompress data
- Rechunkify data, to have upgraded Attic / Borg 0.xx archives deduplicate
  with Borg 1.x archives. (Or to experiment with chunker-params for
  specific use cases

It is interrupt- and resumable.

Chunks are not freed on-the-fly.
Rationale:
  Makes only sense when rechunkifying, but logic on which new chunks to
  free what input chunks is complicated and *very* delicate.

Future TODOs:
- Refactor tests using py.test fixtures
  -- would require porting ArchiverTestCase to py.test: many changes,
     this changeset is already borderline too large.
- Possibly add a --target option to not replace the source archive
  -- with the target possibly in another Repo
     (better than "cp" due to full integrity checking, and deduplication
      at the target)
- Detect and skip (unless --always-recompress) already recompressed chunks

Fixes #787 #686 #630 #70 (and probably some I overlooked)
Also see #757 and #770
2016-04-10 13:54:44 +02:00
Marian Beermann 0a369c0985
Better help texts and Sphinx reproduction of usage
- Group options
- Nicer list of options in Sphinx
- Deduplicate 'Common options'
  (including --help)

The latter is done by explicitly declaring --help in the common_parser,
which is then inherited by the sub-parsers; no change in observable
behaviour.
2016-04-10 01:28:19 +02:00
Thomas Waldmann cece7f9e6d merged 1.0-maint into master 2016-04-10 01:13:35 +02:00
Lauri Niskanen 327c7219df Add archive comments
- Archives now have a new metadata field 'comment'
- 'info' command shows a comment if it's present
- 'create' command now has option '--comment' for adding comments to archives.
- A new command 'comment' is added for modifying the comments on existing
  archives.

Resolves #842.
2016-04-08 19:03:14 +03:00
TW a519333376 add --warning, --error, --critical for completeness, fixes #826
it's not recommended to suppress warnings or errors,
but the user may decide this on his own.

note: --warning is not given to borg serve so a <= 1.0.0 borg
will still work as server. it is not needed as it is the default.
2016-04-03 20:20:48 +02:00
TW d56e4c5370 Merge pull request #818 from borgbackup/1.0-maint
merge append-only from 1.0 maint
2016-03-31 20:28:49 +02:00
Marian Beermann 8f6ce9051b append-only mode: docs reformulated 2016-03-31 18:52:40 +02:00
Marian Beermann effa992d22 append-only mode: use single file for log, disallow check --repair, docs 2016-03-31 18:23:08 +02:00
Ed Blackman 2ab324c03f Add 'x' status for excluded paths (#814)
Makes it easy to see paths excluded by --exclude* options for testing of
regexes, and for ongoing monitoring that files desired for backup aren't
getting excluded accidentally.
2016-03-30 22:38:31 -04:00
Lauri Niskanen 1d3e69e4c7 Improve 'borg diff' output format
The main design goals of the new format:
 - One file takes exactly one line of output
 - The format is easy to read with typical, long list of changes
 - Metadata changes are visible and easy to examine
 - Unuseful information is not shown

Resolves #757.
2016-03-26 23:50:03 +02:00
Marian Beermann 0e9aea2660 Update borg diff example 2016-03-18 13:30:02 +01:00
Marian Beermann 89120a9843 Update usage docs 2016-03-18 12:17:57 +01:00
Daniel Reichelt e1f6a34820 provide wrapper for borg mount, fixes #743
- add archiver.main_mount()

- provide borgfs behaviour when the monolithic binary is called via a
  symlink called borgfs

- docs: update usage of mount subcommand, provide examples for borgfs and
  add symlink creation to standalone binary installation

- run build_usage

- add entry point in setup.py

- patch helpers.py:get_keys_dir() to allow mounting fstab entries with
  "user" option set

  Without this, setuid() called at some point by mount changes the HOME
  environment variable to '/root' and os.expanduser('~') would return
  '/root' as well, thus the mount would fail with
 	 PermissionError: [Errno 13] Permission denied: '/root/.config'
  After setuid(), the HOME variable stays intact, so we still can
  explicitly query USER's home.

  Also, os.path.expanduser() behaves differently for '~' and '~someuser'
  as parameters: when called with an explicit username, the possibly set
  environment variable HOME is no longer respected. So we have to check if
  it is set and only expand the user's home directory if HOME is unset.

- add myself to AUTHORS
2016-03-17 01:40:17 +01:00
Thomas Waldmann 95c4cf221d implement password roundtrip, fixes #695 2016-03-05 16:21:44 +01:00
Thomas Waldmann af2eaaabd4 update and improve docs
use the travis status image as png as svg does not show an image in firefox.
2016-02-27 17:22:56 +01:00
Teemu Toivanen a94471dc0e Usage examples for create format tags 2016-02-25 00:41:24 +02:00
Thomas Waldmann 08a7ce5cc3 Merge branch 'feature/list-formatting' of https://github.com/manwegit/borg into feature/list-formatting 2016-02-21 19:15:31 +01:00
Thomas Waldmann 347778b749 docs: add example how to restore a raw device
also: do not use /dev/sda in case someone stupidly tries out the examples.
/dev/sdx should be safe for people who do not understand what they do.
2016-02-18 21:38:31 +01:00
Thomas Waldmann 0b44944b47 docs: add examples for delete (and handle delete after list, before prune), fixes #656 2016-02-17 00:30:33 +01:00
jhemmje bf31fe3173 docs: Updated examples in usage.rst, fixes #644 2016-02-15 21:38:11 +01:00
Mark Lopez 2b8083bb20 Fixed typo. 2016-02-08 19:54:20 -06:00
Mark Lopez 99a3bab68d Added example to BORG_RSH documentation. 2016-02-07 22:07:30 -06:00
Thomas Waldmann 6c278e2e85 docs: formatting fixed 2016-02-07 19:33:26 +01:00
Teemu Toivanen 14f0fa6f6a archive file listing output formatting
Coding style fixup
Add --list-format exmaple to usage examples
2016-02-05 21:07:04 +02:00
Thomas Waldmann 0a0f483daa docs about borg serve's special support for forced/original ssh commands, fixes #544 2016-02-01 01:18:37 +01:00
Robin Schneider a7ed461394
Use `--one-file-system` instead of `--do-not-cross-mountpoints` in docs.
Related to #296 in which support for `--do-not-cross-mountpoints` has
been deprecated.
2016-01-31 11:54:01 +01:00
Thomas Waldmann e06b7162c2 update docs / docstring about new key location 2016-01-28 23:15:49 +01:00
Thomas Waldmann 824e548b9f add missing example for --list option of borg create 2016-01-28 20:32:30 +01:00
Thomas Waldmann 1fc99ec9cd update docs, remove references to passphrase mode 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 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 a2843bc939 docs: require python 3.4+
remove references to older pythons.
2016-01-24 14:57:48 +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
Piotr Pawlow 987aaa34df Added SSH key options to the usage example. 2016-01-18 18:49:07 +01:00
Robin Schneider 1f49d16a71
Fixed my changes. Thanks to @ThomasWaldmann for the review! 2016-01-18 09:00:07 +01:00
Robin Schneider 89ce86a33b
Fixed more in usage.rst. - → –; – → -- (CLI); Bullet list. 2016-01-17 22:23:54 +01:00
Robin Schneider 83c5321f53
Fixed RST warning markup. 2016-01-17 20:13:45 +01:00
Robin Schneider 19eb8e2d3b
Use ``--option`` in RST to not render "--" as "–". 2016-01-17 20:12:23 +01:00
Thomas Waldmann 2f05e4add9 use the usual commandline arguments order for borg prune examples, fixes #560
borg prune <options> <repo>
2016-01-16 20:57:22 +01:00
Danny Edel 6cedfbede9 Correct small typos in changes and usage 2016-01-15 09:24:00 +01:00
Thomas Waldmann 8ce84cab30 update docs / make them more clear about -v 2016-01-14 19:34:07 +01:00
Michael Hanselmann 2bafece093 Implement exclusions using regular expressions
The existing option to exclude files and directories, “--exclude”, is
implemented using fnmatch[1]. fnmatch matches the slash (“/”) with “*”
and thus makes it impossible to write patterns where a directory with
a given name should be excluded at a specific depth in the directory
hierarchy, but not anywhere else. Consider this structure:

  home/
  home/aaa
  home/aaa/.thumbnails
  home/user
  home/user/img
  home/user/img/.thumbnails

fnmatch incorrectly excludes “home/user/img/.thumbnails” with a pattern
of “home/*/.thumbnails” when the intention is to exclude “.thumbnails”
in all home directories while retaining directories with the same name
in all other locations.

With this change regular expressions are introduced as an additional
pattern syntax. The syntax is selected using a prefix on “--exclude”'s
value. “re:” is for regular expression and “fm:”, the default, selects
fnmatch. Selecting the syntax is necessary when regular expressions are
desired or when the desired fnmatch pattern starts with two alphanumeric
characters followed by a colon (i.e. “aa:something/*”). The exclusion
described above can be implemented as follows:

  --exclude 're:^home/[^/]+/\.thumbnails$'

The “--exclude-from” option permits loading exclusions from a text file
where the same prefixes can now be used, e.g. “re:\.tmp$”.

The documentation has been extended and now not only describes the two
pattern styles, but also the file format supported by “--exclude-from”.

This change has been discussed in issue #43 and in change request #497.

[1] https://docs.python.org/3/library/fnmatch.html

Signed-off-by: Michael Hanselmann <public@hansmi.ch>
2016-01-13 17:39:19 +01:00
Leo Famulari 077ebe8c49 docs: Give project name in usage example.
* docs/usage.rst: Replace "|project_name|" with "borg" because the
abstraction doesn't work in usage examples.
2016-01-08 21:02:03 -05:00
Thomas Waldmann 57b913bc88 fix badly named environment variable, fixes #503
added: BORG_DELETE_I_KNOW_WHAT_I_AM_DOING for the check in "borg delete"
2015-12-20 02:03:33 +01:00
Thomas Waldmann 41eab542a8 add borg upgrade to the docs, fixes #464 2015-12-08 10:33:27 +01:00
Thomas Waldmann cb821b119b remove --log-level, add --debug and --info option, update docs
removed --log-level due to overlap with how --verbose works now.

for consistency, added --info as alias to --verbose (as the effect is
setting INFO log level).

also added --debug which sets DEBUG log level.
note: there are no messages emitted at DEBUG level yet.

WARNING is the default (because we want mostly silent behaviour,
except if something serious happens), so we don't need --warning
as an option.
2015-12-08 01:37:34 +01:00
Thomas Waldmann 21bd01ef16 add a --filter option replacing --changed/--unchanged
the problem here was that we do not just have changed and unchanged items,
but also a lot of items besides regular files which we just back up "as is" without
determining whether they are changed or not. thus, we can't support changed/unchanged
in a way users would expect them to work.

the A/M/U status only applies to the data content of regular files (compared to the index).
for all items, we ALWAYS save the metadata, there is no changed / not changed detection there.

thus, I replaced this with a --filter option where you can just specify which
status chars you want to see listed in the output.

E.g. --filter AM will only show regular files with A(dded) or M(odified) state, but nothing else.
Not giving --filter defaults to showing all items no matter what status they have.

Output is emitted via logger at info level, so it won't show up except if the logger is at that level.
2015-12-02 03:29:20 +01:00
Antoine Beaupré b09643e14f change file status test and cleanup last ref to --verbose
this ports the changes here to #445
2015-11-24 12:11:43 -05:00
Antoine Beaupré a062e8f821 update documentation to follow changes 2015-11-24 12:07:57 -05:00
Antoine Beaupré 48bb4c326d cross-reference the status oddity in the usage 2015-11-23 19:48:33 -05:00