summaryrefslogtreecommitdiff
path: root/manual/fr
diff options
context:
space:
mode:
authorRemi Rampin <remirampin@gmail.com>2016-03-03 13:12:45 -0500
committerLars Wirzenius <liw@liw.fi>2016-03-18 18:03:36 +0200
commit0c257b7b5afb710180296bcc643968ba1358289c (patch)
treef5d20dea413ababa8c130789f8a14d58b530e5c3 /manual/fr
parentd9b96822b90a568d752dad40c9c1db11075fcd20 (diff)
downloadobnam-0c257b7b5afb710180296bcc643968ba1358289c.tar.gz
Sync French translation with English reference
Diffstat (limited to 'manual/fr')
-rw-r--r--manual/fr/020-concepts.mdwn2
-rw-r--r--manual/fr/060-backing-up.mdwn48
-rw-r--r--manual/fr/070-restoring.mdwn28
-rw-r--r--manual/fr/110-encryption.mdwn10
-rw-r--r--manual/fr/120-misc.mdwn16
-rw-r--r--manual/fr/140-troubleshooting.mdwn75
-rw-r--r--manual/fr/155-repo.mdwn19
-rw-r--r--manual/fr/160-tuning.mdwn41
-rw-r--r--manual/fr/700-contrib.mdwn181
-rw-r--r--manual/fr/800-errors.mdwn10
-rw-r--r--manual/fr/801-errors.mdwn269
11 files changed, 679 insertions, 20 deletions
diff --git a/manual/fr/020-concepts.mdwn b/manual/fr/020-concepts.mdwn
index 46cb5d5e..c367bc16 100644
--- a/manual/fr/020-concepts.mdwn
+++ b/manual/fr/020-concepts.mdwn
@@ -277,7 +277,7 @@ Glossary
* **off-site backup**: a backup repository stored physically far away
from the live data
* **precious data**: all the data you care about; cf. live data
-* **repository**: the location where are backups are stored
+* **repository**: the location where backup data is stored
* **restore**: retrieving data from a backup repository
* **root**, **backup root**: a directory that is to be backed up,
including all files in it, and all its subdirectories
diff --git a/manual/fr/060-backing-up.mdwn b/manual/fr/060-backing-up.mdwn
index 16ccc5d2..ee28d6e2 100644
--- a/manual/fr/060-backing-up.mdwn
+++ b/manual/fr/060-backing-up.mdwn
@@ -137,8 +137,8 @@ protocol (part of SSH). You need the following to achieve this:
exchange for having one of their machines at your place, so that you
both can backup remotely.
-* An **ssh key** for logging into the server. You _can_ log in using
- passwords too, but it is quite cumbersome.
+* An **ssh key** for logging into the server. Obnam does not currently
+ support logging in via passwords.
* Enough disk space on the server to hold your backups.
@@ -356,6 +356,29 @@ duplicate data is quite coarse (see the `--chunk-size` setting), and
so Obnam often doesn't find duplication when it exists, when the
changes are small.
+De-duplication isn't useful in the following scenarios:
+
+* A file changes such that things move around within the file. The
+ (current) Obnam de-duplication is based on non-overlapping chunks
+ from the beginning of a file. If some data is inserted, Obnam won't
+ notice that the chunks have shifted around. This can happen, for
+ example, for disk or ISO images.
+
+* Files with duplicate data that is not on a chunk boundary. For
+ example, emails with large attachments. Each email recipient gets
+ different `Received` headers, which shifts the body and attachments
+ by different amounts. As a result, Obnam won't notice the
+ duplication.
+
+* Data in compressed files, such as `.zip` or `.tar.xz` files. Obnam
+ doesn't know about the file compression, and only sees the
+ compressed version of the data. Thus, Obnam won'd de-duplicate it.
+
+A future version of Obnam will hopefully improve the de-duplication
+algorithms. If you see this optimistic paragraph in a version of Obnam
+released in 2017 or later, please notify the maintainers. Thank you.
+
+
De-duplication and safety against checksum collisions
-----------------------------------------------------
@@ -428,27 +451,18 @@ happen if Obnam is interrupted by the user before it's finished.
The Obnam command `force-lock` deals with this situation. It is
dangerous, though. If you force open a lock that is in active use by
-a running Obnam instance, there will likely to be some stepping of
-toes. The result may, in extreme cases, even result in repository
-corruption. So be careful.
+any running Obnam instance, on any client machine using that
+repository, there will likely to be some stepping of toes. The result
+may, in extreme cases, even result in repository corruption. So be
+careful.
If you've decided you can safely do it, this is an example of how to
do it:
obnam -r /media/backups/tomjon-repo force-lock
-Note that some of the locks are per-client, to prevent you from
-accidentally running Obnam twice for the same client, which would
-result in standing on your own toes: kind of impressive, but
-uncomfortable and not recommended.
-
-If you need to force open a lock for specific client, you can specify
-the client name explicitly:
-
- obnam --client-name magrat \
- -r /media/backups/tomjon-repo force-lock
-
-(Long line broken to two for typographical reasons.)
+It is not currently possibly to only break locks related to one
+client.
Consistency of live data
------------------------
diff --git a/manual/fr/070-restoring.mdwn b/manual/fr/070-restoring.mdwn
index 378b071e..b56bd9fc 100644
--- a/manual/fr/070-restoring.mdwn
+++ b/manual/fr/070-restoring.mdwn
@@ -5,7 +5,7 @@ The worst has happened! Your cat got confused between its litter box
and your hard drive! Your goat deleted your most important document
ever! Woe be you!
-Let's stay calm. This is why you have backups. There's on need for
+Let's stay calm. This is why you have backups. There's no need for
exclamation marks. Take a deep breath, have a cup of tea, and all will
be well.
@@ -90,6 +90,32 @@ restored files. If you do want replace your live data with restored
files, you should restore to a temporary location first, and then move
the files to where you want them to be.
+An actual example of a restoration
+----------------------------------
+
+I had a corrupted gnus file, and this is how I restored it from backup.
+
+ obnam --config=/home/foobar/cron/conf/obnam.conf generations>~/cron/upload/obgen.txt
+
+This copies all generations for the main obnam backup to obgen.txt, and this
+is part of that file.
+
+ 1207586 2014-08-25 08:00:43 .. 2014-08-25 08:08:24 (385163 files, 175029819657 bytes)
+ 1208367 2014-08-25 12:00:42 .. 2014-08-25 12:08:31 (385965 files, 175057598863 bytes)
+ 1209313 2014-08-25 16:00:12 .. 2014-08-25 16:07:33 (386537 files, 175076976590 bytes)
+ 1210254 2014-08-25 20:00:15 .. 2014-08-25 20:09:41 (386896 files, 175086483254 bytes)
+
+And I decided to restore from generation 1208367.
+
+This is the actual restore command.
+
+ obnam --config=/home/foobar/cron/conf/obnam.conf --generation=1208367 restore ~/News/rss/nnrss.el --to=/home/foobar/cron/upload/
+
+This restores 'nnrss.el' to ~/cron/upload/ from where I was able to copy it
+back to its proper place in ~/News/rss/
+
+Obviously you replace your user-name for foobar.
+
Practice makes prestores painless
---------------------------------
diff --git a/manual/fr/110-encryption.mdwn b/manual/fr/110-encryption.mdwn
index 74a959ba..94a4426a 100644
--- a/manual/fr/110-encryption.mdwn
+++ b/manual/fr/110-encryption.mdwn
@@ -112,6 +112,16 @@ them. Run the following command and pick your key from the list.
gpg --list-keys
+The output will look something like this:
+
+ pub 4096R/5E8511F9 2009-07-22
+ uid Lars Wirzenius <liw@liw.fi>
+ sub 2048R/9BE35AE6 2011-08-05
+
+That's the output for one key; there may be many keys. The key
+identifier is on the line staring with `pub`, in the second column
+after the slash. Above, it's 5E8511F9.
+
In the rest of the examples in this chapter, we'll assume your key
identifier is CAFEFACE.
diff --git a/manual/fr/120-misc.mdwn b/manual/fr/120-misc.mdwn
index 0ed6c7fd..d80e8231 100644
--- a/manual/fr/120-misc.mdwn
+++ b/manual/fr/120-misc.mdwn
@@ -3,3 +3,19 @@ Other stuff
This chapter discusses topics that do not warrant a chapter of their
own, such as compressing backups and running Obnam from cron.
+
+k4dirstat cache files
+---------------------
+
+[k4dirstat] is a utility for visualising the disk space used by a
+directory tree. Obnam's `kdirstat` command can be used to produce a
+listing of the contents of a generation in a format which can be read
+by k4dirstat using `File`, `Read Cache File` from the k4dirstat
+menu. e.g.
+
+ $ obnam kdirstat --client CLIENT --generation GENID > CLIENT.kdirstat.cache
+ $ gzip -v9 CLIENT.kdirstat.cache # OPTIONAL
+
+`CLIENT.kdirstat.cache[.gz]` can now be read by `k4dirstat`.
+
+[k4dirstat]: https://bitbucket.org/jeromerobert/k4dirstat/wiki/Home
diff --git a/manual/fr/140-troubleshooting.mdwn b/manual/fr/140-troubleshooting.mdwn
index 1d4b377b..02d81889 100644
--- a/manual/fr/140-troubleshooting.mdwn
+++ b/manual/fr/140-troubleshooting.mdwn
@@ -5,3 +5,78 @@ This chapter discusses how to debug problems with Obnam. It covers
things such as log files, various levels of logging and tracing, and
common problems with Obnam use. It also explains what things go where
in an Obnam backup repository.
+
+
+Turning on full logging
+-----------------------
+
+Obnam can write a log file. There are several options controlling
+that. Knowing these can help get out the most information when there's
+a problem that needs to be investigated.
+
+* `--log=obnam.log` tells Obnam where to log. The log is a simple text
+ file.
+* `--log-level=debug` tells Obnam to log at the most detailed level.
+ The default level is `info`, which excludes most debug information.
+* `--trace=obnamlib --trace=larch` tells Obnam to log additional debug
+ information. The two arguments match all filenames in Obnam and the
+ Larch library Obnam uses. This additional information is mostly
+ useful to someone who can read and understand the program source
+ code.
+
+Note that these settings can make log files be quite large, in the
+order of tens of megabytes. The size depends on how many files and how
+much data your live data has.
+
+
+Reporting problems ("bugs")
+---------------------------
+
+If you have a problem with Obnam, and you want to report it (please
+do!), including the following information is helpful and makes it
+easier to figure out what the problem is.
+
+* You should report problems to the `obnam-support@obnam.org` mailing
+ list. This is a publically archived mailing list where various
+ people help others use Obnam.
+
+* What is the problem? What did you try to achieve? What actually
+ happened?
+
+* The version of Obnam and Larch you're using, and how you installed
+ it.
+ - On Debian, run `dpkg -l obnam python-larch` on the command line
+ and include the output.
+
+* The exact command line you used. Copy-paste it instead of
+ typing it again into the mail. Sometimes the problem can be hidden
+ if you don't copy the command line exactly. Also, copying by typing
+ is boring, and we should avoid boring things in life.
+
+* If there's an error message, copy-paste that into the mail.
+
+* The output of `obnam --dump-config`, which includes the full
+ configuration. Include it as an attachment to your mail to
+ `obnam-support`. If you have some secret information, such as
+ filenames or hostnames, you can replace those with XXXX.
+
+* If you can reproduce the problem while running with
+ `--log-level=debug`, `--log=obnam.log` and `--trace=obnamlib
+ --trace=larch` options, include a suitable amount from the end of
+ the log file. The suitable amount may depend on the situation, but
+ if you give the last two hundred lines, and it's not enough, we'll
+ ask for more. Again, feel free to replace any sensitive filenames,
+ etc, with XXXX.
+
+* The output of the `env` command, in the same terminal window in
+ which you ran Obnam. (Again, as an attachment.)
+
+* If your bug is about performance, please run Obnam under profiling,
+ and attach the profiling file. To run Obnam under profiling, install
+ the Python profile (`python-profiler` package in Debian/Ubuntu), and
+ set the `OBNAM_PROFILE` environment variable to the name of the file
+ with the profiling output (that's the file you should send by mail).
+ For example: `OBNAM_PROFILE=obnam.prof obnam backup` would run the
+ backup under the profiler, and write the result to `obnam.prof`.
+
+Thank you for your help in making Obnam better.
diff --git a/manual/fr/155-repo.mdwn b/manual/fr/155-repo.mdwn
new file mode 100644
index 00000000..c99d675c
--- /dev/null
+++ b/manual/fr/155-repo.mdwn
@@ -0,0 +1,19 @@
+The backup repository internals
+===============================
+
+This chapter describes what the Obnam backup repository looks like.
+Unless you're interested in that, you can skip that entirely.
+
+For now, look at the Obnam website at <http://obnam.org/development/>.
+
+
+Repository file permissions
+---------------------------
+
+Obnam sets the permissions of all files it creates in the repository
+such that only the owner of the files can read or write them.
+(Technically, 0600 for files, 0700 for directories.)
+
+This is to prevent backups from leaking because someone else has read
+access to the repository. There is no setting in Obnam to control
+this.
diff --git a/manual/fr/160-tuning.mdwn b/manual/fr/160-tuning.mdwn
index bcca7f0a..160caab7 100644
--- a/manual/fr/160-tuning.mdwn
+++ b/manual/fr/160-tuning.mdwn
@@ -2,7 +2,46 @@
This chapter discusses ways to tune Obnam performance for various
situations. It covers the various options that can affect CPU and
-memory consumptions, as well as ways to experiment to find a good set
+memory consumption, as well as ways to experiment to find a good set
of values.
See <http://obnam.org/faq/tuning/> for a start.
+
+
+## Running Obnam under the Python profiler
+
+A **profiler** is a program that measures where another program spends
+its time. This can be very useful for finding out why the other
+program is slow.
+
+Obnam can easily be run under the Python profiler. You need to have
+the profiler installed. Check with your operating system or Python
+installation how to achieve that. To see if you have it installed, run
+the following command on the command line:
+
+ python -c 'import cProfile'
+
+If this outputs nothing, all is well. If it outputs an error such as
+the following, you have not got the profiler installed:
+
+ Traceback (most recent call last):
+ File "<string>", line 1, in <module>
+ ImportError: No module named cProfiler
+
+Once you have the profiler installed, run Obnam like this:
+
+ OBNAM_PROFILE=backup.prof obnam bsckup
+
+This will cause the profiling data to be written to the file
+`backup.prof`. You can do this for any Obnam command, and write it to
+any file.
+
+The profiling data is in binary form. Obnam comes with a little helper
+program to transform it to a human-readable form:
+
+ obnam-viewprof backup.prof | less
+
+If you run the above command, you'll see that the humans to whom this
+is readable are programmers and circus clowns. If you can understand
+the output, great! If not, it's still useful to send that to the Obnam
+developers to report a performance problem.
diff --git a/manual/fr/700-contrib.mdwn b/manual/fr/700-contrib.mdwn
new file mode 100644
index 00000000..efdcd9a5
--- /dev/null
+++ b/manual/fr/700-contrib.mdwn
@@ -0,0 +1,181 @@
+Participating in Obnam development
+==================================
+
+The Obnam project is quite small, as far as software projects go.
+There is one main developer, plus a few others who sometimes help out.
+It would be nice to have more people involved, and this chapter is an
+introduction for that.
+
+It is a common misunderstanding that only code matters in a software
+project. On the contrary, without a number of other things, code is
+useless, particularly so in a free software project, including Obnam.
+Examples of necessary things in almost any serious software project:
+
+* writing and updating documentation, which includes manuals and
+ websites
+* translating documentation, and the software's user interface
+* providing support to users with questions or problems
+* reporting actionable bugs
+* processing bug reports: asking for clarifications, reproducing the
+ reported problem, finding the cause of the problem, and developing a
+ suitable fix
+* porting the software to various platforms, including different
+ operating systems, different versions of said operating systems,
+ different versions of the languages and libraries the software uses,
+ different hardware, etc
+* quality assurance: developing and performing manual and automated
+ tests and benchmarks, and analysing results
+* hosting and operating web sites, mailing lists, IRC channels, other
+ communication channels
+* handling project governance, which includes dealing with conflicts
+ between people
+* managing the project in general, including making sure things don't
+ stall
+* finally, writing the code itself, which is a necessary, but not
+ sufficient part of having a project that people other than the
+ developers can use it
+
+This list is insufficient; additions are welcome. See the rest of this
+chapter for suggestions on how to contribute to the list.
+
+
+Helping support users
+---------------------
+
+Perhaps the easiest way to participate in the project is to help
+support other users of the software. This is easy, and doesn't
+necessarily require more than being able to use the software oneself.
+Yet it is quite valuable, as it frees others from doing that. Even
+with the highest quality, easiest to use software, there's always some
+need for user support:
+
+* Code can be wrong, and a user may experience this. Analysing the
+ situation and isolating the bug is an important part of the software
+ development process.
+
+* Documentation can be wrong, or out of date, or written in
+ anticipation of a feature that doesn't exist yet.
+
+* Some people have misunderstandings, due to whatever reason, which
+ leads them to have problems when using the software. Figuring out
+ what the actual problem and its cause are can be a time consuming
+ process, but often does not require any special skills, except for
+ patience and a willingness to ask a lot of questions.
+
+In the Obnam project, the best way to help out with this is to
+subscribe to the `obnam-support@obnam.org` mailing list or join the
+`#obnam` (irc.oftc.net) IRC channel, and start answering questions.
+
+It's OK to not be an expert. Helping others is a great way to learn.
+If you make it clear you're not an expert, but are trying to help
+anyway, usually makes others appreciate your help even more.
+
+Some suggestions on doing support work:
+
+* Try to understand what the person needing help is actually trying to
+ achieve, rather than answering their literal question. Better yet,
+ do both.
+
+* You don't need to have the solution to respond. A quick, but
+ incomplete answer that nevertheless moves the discussion forward is
+ helpful. Even if you don't know the correct answer, it's good to ask
+ a question that results in the person needing help providing more
+ information, or finding the solution themselves, or inspires someone
+ else to discover the solution,
+
+* Always be helpful and polite. Never respond with things such as
+ "read the fine manual" (or RTFM for short). It's OK to say that the
+ answer is in the manual, but then provide a link, and possibly also
+ a quote.
+
+* People who need help are often frustrated, and sometimes desperate,
+ because they've tried and tried to solve the problem on their own,
+ but have failed. This can leak through their messages. Ignore it,
+ unless they actually become impolite, at which point its probably
+ best to escalate the situation. Avoid getting into a quarrel about
+ who's right or who said what and what did they mean by it.
+
+* It's better to not respond at all, than respond while irritated,
+ annoyed, or angry. It's more important for the project to maintain a
+ polite and helpful atmosphere in the long run than to solve any
+ current technical problem.
+
+In short, if you do your best to be polite, friendly, and helpful, go
+ahead and respond.
+
+
+Writing and updating documentation
+----------------------------------
+
+The project has various kinds of documentation.
+
+* The `obnam.org` website.
+* The manual page.
+* The manual (which is what you're reading now).
+* Various blog posts around the web.
+
+Writing documentation is fairly easy. Updating it takes a bit more
+effort, since it requires reviewing existing documentation to make
+sure it's up to date. The main goals of Obnam documentation are:
+
+* Accuracy.
+* Clarity.
+* Completeness.
+* A bit of dry humour in places.
+
+Any help you can give here is most welcome.
+
+* Read through existing documentation.
+* If you find anything that's wrong, inaccurate, incomplete, missing,
+ or unclear, send a note to the developer mailing list.
+* If you can include a new wording, all the better. It's not required.
+* If you can provide an actual patch, perfect, since it makes it
+ easiest to incorporate your suggestion. Again, it's not required.
+
+You don't need to be a good writer. As part of the process, others
+will review what you send, and will point out anything they feel can
+be improved. For example, suppose you notice that a paragraph in this
+manual is unclear, but you don't know what it actually should say. If
+you send a mail saying this, others can then come up with a better
+wording.
+
+Translating documentation
+-------------------------
+
+The Obnam manual and manual page are written in English, and have been
+translated to German. More languages are most welcome.
+
+The author of this manual is not particularly familiar with the
+process of translation, and so wishes someone else would fill in this
+section.
+
+The Obnam user interface is not currently translatable, and making it
+so will require code changes. Helping make those code changes would be
+nice.
+
+Developing the code
+-------------------
+
+Assuming you already know how to program, it's fairly straightforward
+to work on the Obnam code base. At least it's meant to be so: if you
+have trouble, please ask and point out what's unclear or wrong.
+
+Check out the source from the git server, and read the `README` file
+for details on how to get started, and how to run the automated test
+suite, and how to send patches. See the website for some development
+documentation, including explanations of the on-disk data structures.
+
+Code changes that are not very trivial should be sent in a form that
+can be handled by git. This can be actual patches sent to the mailing
+list, or a URL from which changes can be merged.
+
+Project governance
+------------------
+
+The Obnam project has a very informal form of governance: the founder
+of the project, Lars Wirzenius, has all the power, and everyone else
+has no power. As the project grows, this will change.
+
+If there's a social problem somewhere, for example someone is
+misbehaving, it's best to report it to Lars directly. If Lars is the
+problem, it's best to call him out directly.
diff --git a/manual/fr/800-errors.mdwn b/manual/fr/800-errors.mdwn
new file mode 100644
index 00000000..e42580cf
--- /dev/null
+++ b/manual/fr/800-errors.mdwn
@@ -0,0 +1,10 @@
+Appendix: Error messages
+========================
+
+This appendix lists all Obnam error messages and their explanations.
+It is possible you'll see other error messages while running Obnam.
+These are not listed here, as Obnam doesn't know about them.
+
+The errors are listed twice: briefly, in order of their unique
+error, and then more fully, in alphabetical order.
+
diff --git a/manual/fr/801-errors.mdwn b/manual/fr/801-errors.mdwn
new file mode 100644
index 00000000..084f2798
--- /dev/null
+++ b/manual/fr/801-errors.mdwn
@@ -0,0 +1,269 @@
+## By error code
+
+* `R018FCX ToplevelIsFileError`
+* `R01F56X RepositorySettingMissingError`
+* `R02C17X HardlinkError`
+* `R0B15DX RepositoryGenerationDoesNotExist`
+* `R0BE94X RepositoryClientNotLocked`
+* `R0C79EX GpgError`
+* `R0F22CX URLSchemeAlreadyRegisteredError`
+* `R0FC21X SetMetadataError`
+* `R169C6X MissingFilterError`
+* `R173AEX NoFilterTagError`
+* `R1A025X RepositoryClientKeyNotAllowed`
+* `R1CA00X ClientDoesNotExistError`
+* `R22E66X SizeSyntaxError`
+* `R24424X RepositoryClientDoesNotExist`
+* `R283A6X UnitNameError`
+* `R2FA37X WrongNumberOfGenerationSettingsError`
+* `R338F2X BackupRootMissingError`
+* `R3B42AX WrongNumberOfGenerationsForVerify`
+* `R3E151X RepositoryFileDoesNotExistInGeneration`
+* `R3E1C1X RestoreTargetNotEmpty`
+* `R41CE6X RepositoryClientAlreadyExists`
+* `R43272X RepositoryChunkDoesNotExist`
+* `R45B50X DuplicatePeriodError`
+* `R47416X WrongHostKeyError`
+* `R4C3BCX BackupErrors`
+* `R57207X RepositoryClientGenerationUnfinished`
+* `R5914DX InvalidPortError`
+* `R5F98AX NoHostKeyError`
+* `R681AEX LockFail`
+* `R6A098X RepositoryGenerationKeyNotAllowed`
+* `R6C1C8X RepositoryClientListNotLocked`
+* `R6EAF2X RepositoryClientLockingFailed`
+* `R7137EX BagIdNotSetError`
+* `R79699X RepositoryFileKeyNotAllowed`
+* `R79ED6X BackupRootDoesNotExist`
+* `R7B8D0X FileNotFoundError`
+* `R826A1X UnknownVFSError`
+* `R8AAC1X NoHostKeyOfWantedTypeError`
+* `R8F974X RepositoryChunkIndexesLockingFailed`
+* `R91CA1X ShowFirstGenerationError`
+* `R9808DX ForgetPolicySyntaxError`
+* `RA4F35X RootIsNotADirectory`
+* `RA5942X WrongNumberOfGenerationsForDiffError`
+* `RA7D64X UnknownRepositoryFormatWanted`
+* `RA881CX RepositoryChunkContentNotInIndexes`
+* `RA920EX NotARepository`
+* `RABC26X FuseModuleNotFoundError`
+* `RB1048X RepositoryClientListLockingFailed`
+* `RB4324X GAImmutableError`
+* `RB8E98X WrongURLSchemeError`
+* `RB927BX SeparatorError`
+* `RBF6DDX RepositoryAccessError`
+* `RCB0CAX KeyAuthenticationError`
+* `RCE08AX ObnamIOError`
+* `RCEF5CX MallocError`
+* `RD5FA4X ObnamSystemError`
+* `RD6259X RestoreErrors`
+* `RDF30DX Fail`
+* `RE187FX RepositoryChunkIndexesNotLocked`
+* `REFB32X RepositoryClientHasNoGenerations`
+* `RF4EFDX UnknownRepositoryFormat`
+
+
+## By name
+
+`BackupErrors` (`R4C3BCX`)
+: There were errors during the backup
+
+`BackupRootDoesNotExist` (`R79ED6X`)
+: Backup root does not exist or is not a directory: {root}
+
+`BackupRootMissingError` (`R338F2X`)
+: No backup roots specified
+
+`BagIdNotSetError` (`R7137EX`)
+: Bag id not set: cannot append a blob (programming error)
+
+`ClientDoesNotExistError` (`R1CA00X`)
+: Client {client} does not exist in repository {repo}
+
+`DuplicatePeriodError` (`R45B50X`)
+: Forget policy may not duplicate period ({period}): {policy}
+
+`Fail` (`RDF30DX`)
+: {filename}: {reason}
+
+`FileNotFoundError` (`R7B8D0X`)
+: FUSE: File not found: {filename}
+
+`ForgetPolicySyntaxError` (`R9808DX`)
+: Forget policy syntax error: {policy}
+
+`FuseModuleNotFoundError` (`RABC26X`)
+: Failed to load module "fuse", try installing python-fuse
+
+`GAImmutableError` (`RB4324X`)
+: Attempt to modify an immutable GADirectory
+
+`GpgError` (`R0C79EX`)
+: gpg failed with exit code {returncode}: {stderr}
+
+`HardlinkError` (`R02C17X`)
+: Cannot hardlink on SFTP; sorry
+
+ This is due to a limitation in the Python paramiko library that
+ Obnam uses for SSH/SFTP access.
+
+`InvalidPortError` (`R5914DX`)
+: Invalid port number {port} in {url}: {error}
+
+`KeyAuthenticationError` (`RCB0CAX`)
+: Can't authenticate to SSH server using key
+
+`LockFail` (`R681AEX`)
+: Couldn't create lock {lock_name}: {reason}
+
+`MallocError` (`RCEF5CX`)
+: malloc out of memory while calling {function}
+
+`MissingFilterError` (`R169C6X`)
+: Unknown filter tag: {tagname}
+
+`NoFilterTagError` (`R173AEX`)
+: No filter tag found
+
+`NoHostKeyError` (`R5F98AX`)
+: No known host key for {hostname}
+
+`NoHostKeyOfWantedTypeError` (`R8AAC1X`)
+: No known type {key_type} host key for {hostname}
+
+`NotARepository` (`RA920EX`)
+: {url} does not seem to be an Obnam repository
+
+`ObnamIOError` (`RCE08AX`)
+: I/O error: {filename}: {errno}: {strerror}
+
+`ObnamSystemError` (`RD5FA4X`)
+: System error: {filename}: {errno}: {strerror}
+
+`RepositoryAccessError` (`RBF6DDX`)
+: Repository does not exist or cannot be accessed: {error}
+
+`RepositoryChunkContentNotInIndexes` (`RA881CX`)
+: Repository chunk indexes do not contain content
+
+`RepositoryChunkDoesNotExist` (`R43272X`)
+: Repository doesn't contain chunk {chunk_id}. It is expected at
+ {filename}
+
+`RepositoryChunkIndexesLockingFailed` (`R8F974X`)
+: Repository chunk indexes are already locked
+
+`RepositoryChunkIndexesNotLocked` (`RE187FX`)
+: Repository chunk indexes are not locked
+
+`RepositoryClientAlreadyExists` (`R41CE6X`)
+: Repository client {client_name} already exists
+
+`RepositoryClientDoesNotExist` (`R24424X`)
+: Repository client {client_name} does not exist
+
+`RepositoryClientGenerationUnfinished` (`R57207X`)
+: Cannot start new generation for {client_name}: previous one is not
+ finished yet (programming error)
+
+`RepositoryClientHasNoGenerations` (`REFB32X`)
+: Client {client_name} has no generations
+
+`RepositoryClientKeyNotAllowed` (`R1A025X`)
+: Client {client_name} uses repository format {format} which does
+ not allow the key {key_name} to be use for clients
+
+`RepositoryClientListLockingFailed` (`RB1048X`)
+: Repository client list could not be locked
+
+`RepositoryClientListNotLocked` (`R6C1C8X`)
+: Repository client list is not locked
+
+`RepositoryClientLockingFailed` (`R6EAF2X`)
+: Repository client {client_name} could not be locked
+
+`RepositoryClientNotLocked` (`R0BE94X`)
+: Repository client {client_name} is not locked
+
+`RepositoryFileDoesNotExistInGeneration` (`R3E151X`)
+: Client {client_name}, generation {genspec} does not have file
+ {filename}
+
+`RepositoryFileKeyNotAllowed` (`R79699X`)
+: Client {client_name} uses repository format {format} which does
+ not allow the key {key_name} to be use for files
+
+`RepositoryGenerationDoesNotExist` (`R0B15DX`)
+: Cannot find requested generation {gen_id!r} for client
+ {client_name}
+
+`RepositoryGenerationKeyNotAllowed` (`R6A098X`)
+: Client {client_name} uses repository format {format} which does
+ not allow the key {key_name} to be used for generations
+
+`RepositorySettingMissingError` (`R01F56X`)
+: No --repository setting. You need to specify it on the command
+ line or a configuration file
+
+`RestoreErrors` (`RD6259X`)
+: There were errors when restoring
+
+ See previous error messages for details.
+
+`RestoreTargetNotEmpty` (`R3E1C1X`)
+: The restore --to directory ({to}) is not empty.
+
+`RootIsNotADirectory` (`RA4F35X`)
+: {baseurl} is not a directory, but a VFS root must be a directory
+
+`SeparatorError` (`RB927BX`)
+: Forget policy must have rules separated by commas, see position
+ {position}: {policy}
+
+`SetMetadataError` (`R0FC21X`)
+: {filename}: Couldn't set metadata {metadata}: {errno}: {strerror}
+
+`ShowFirstGenerationError` (`R91CA1X`)
+: Can't show first generation. Use 'obnam ls' instead
+
+`SizeSyntaxError` (`R22E66X`)
+: "{size}" is not a valid size
+
+`ToplevelIsFileError` (`R018FCX`)
+: File at repository root: {filename}
+
+`URLSchemeAlreadyRegisteredError` (`R0F22CX`)
+: VFS URL scheme {scheme} already registered
+
+`UnitNameError` (`R283A6X`)
+: "{unit}" is not a valid unit
+
+`UnknownRepositoryFormat` (`RF4EFDX`)
+: Unknown format {format} at {url}
+
+`UnknownRepositoryFormatWanted` (`RA7D64X`)
+: Unknown format {format} requested
+
+`UnknownVFSError` (`R826A1X`)
+: Unknown VFS type: {url}
+
+`WrongHostKeyError` (`R47416X`)
+: SSH server {hostname} offered wrong public key
+
+ Note that this may due to an obsolete host key in your "known
+ hosts" file. If so, use "ssh-key -R" to remove it. However, it can
+ also be a sign that someone is trying to hijack your connection to
+ your server, and you should be careful.
+
+`WrongNumberOfGenerationSettingsError` (`R2FA37X`)
+: The restore command wants exactly one generation option
+
+`WrongNumberOfGenerationsForDiffError` (`RA5942X`)
+: Need one or two generations
+
+`WrongNumberOfGenerationsForVerify` (`R3B42AX`)
+: verify must be given exactly one generation
+
+`WrongURLSchemeError` (`RB8E98X`)
+: SftpFS used with non-sftp URL: {url}
+