summaryrefslogtreecommitdiff
path: root/tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun
blob: 79b161fc376382cedb3197659bfe45ec4510ea69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
Return-Path: <obnam-dev-bounces@obnam.org>
X-Original-To: distix@pieni.net
Delivered-To: distix@pieni.net
Received: from bagpuss.pepperfish.net (bagpuss.pepperfish.net [148.251.8.16])
	(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by pieni.net (Postfix) with ESMTPS id 74BEA2E113
	for <distix@pieni.net>; Thu,  3 Mar 2016 19:13:14 +0100 (CET)
Received: from platypus.pepperfish.net (unknown [10.112.100.20])
	by bagpuss.pepperfish.net (Postfix) with ESMTP id 1BA7FED4;
	Thu,  3 Mar 2016 18:13:14 +0000 (GMT)
Received: from ip6-localhost ([::1] helo=platypus.pepperfish.net)
	by platypus.pepperfish.net with esmtp (Exim 4.80 #2 (Debian))
	id 1abXkP-0006gV-TC; Thu, 03 Mar 2016 18:13:13 +0000
Received: from inmail0 ([10.112.100.10] helo=mx0.pepperfish.net)
 by platypus.pepperfish.net with esmtp (Exim 4.80 #2 (Debian))
 id 1abXkN-0006fo-Sb
 for <obnam-dev@obnam.org>; Thu, 03 Mar 2016 18:13:11 +0000
Received: from mail-qg0-f53.google.com ([209.85.192.53])
 by mx0.pepperfish.net with esmtps (TLS1.2:RSA_ARCFOUR_SHA1:128)
 (Exim 4.80) (envelope-from <remirampin@gmail.com>)
 id 1abXkJ-0006QG-Nz
 for obnam-dev@obnam.org; Thu, 03 Mar 2016 18:13:11 +0000
Received: by mail-qg0-f53.google.com with SMTP id w104so23732137qge.1
 for <obnam-dev@obnam.org>; Thu, 03 Mar 2016 10:13:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :in-reply-to:references;
 bh=VwvE5uzCWq62tMVrb0UDgHBehjL57d3j4csJZymRhMM=;
 b=FaZNC1xg1UC4r2SpH9JUWcW6pbzYe71/V2FfCPiE8kG88fhN+vH3a7RajFxWOlgyO6
 +MRvPgTtF30pbBILiT+9WffhLseGuj7RS1AsOeigC0R9cC3bJRGyTFegrpc6gRijGCrA
 cuHb6sr9jhvoHQgA0medm8q1C3kxniKKnErMxXY8goFkloE8+b0IugX+sNgHjhn4753E
 IOi++r/vwg4zTJ2T1EQGXH65PqWo1A8Ju9gZz384FpfWxJP5m8DdgamKBiTznlElYU0X
 WS6+ltyELy8PJTxvargDBgydog/ZxNdHTcLt6eqlCSc4wRItPxrFTeEqLh+e3dIw0Vqt
 1DvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:in-reply-to:references;
 bh=VwvE5uzCWq62tMVrb0UDgHBehjL57d3j4csJZymRhMM=;
 b=iB5tMvvIlbO9mhpmjnBL4t9+LMx6cz9fKfLjLKOko4+O2idxze/mDBVGKbQgvnODf0
 jwWx8+d9KJyTRJAZRW6XxeOncpVMOXzkqBlftcqqnsf9qeubNHE4eo44/MhWU5+nfsT9
 8TjqewMKBtQ+dnTZm02wLJqhX46Jql/VHDKoM6i9Saf/A1uZNMAgztvKMFhxyyRoJMuJ
 WCaCBzO0B3KQVUiGof8EySPkVSA+RRdHzV3jJqBT4KstFvcA42XrAjZq9loDJmVQpf2o
 iwsvIPLKoZbe1cuY3JlRRe8otgA8IgADtAeO4H2In70VOih0aXustT+ey4vyHyBTRUJL
 M78Q==
X-Gm-Message-State: AD7BkJJwodM9otrDG8hCxl0NhKEfQTI5inD586q/IoLrFzBxQ0anJ7dd6pvpmBkTDAonsg==
X-Received: by 10.140.42.39 with SMTP id b36mr4792516qga.4.1457028776135;
 Thu, 03 Mar 2016 10:12:56 -0800 (PST)
Received: from randy.nyu.edu (NYUFWA-WLESSAUTHCLIENTS-03.NATPOOL.NYU.EDU.
 [216.165.95.74])
 by smtp.gmail.com with ESMTPSA id d64sm17391811qgd.9.2016.03.03.10.12.55
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
 Thu, 03 Mar 2016 10:12:55 -0800 (PST)
From: Remi Rampin <remirampin@gmail.com>
To: obnam-dev@obnam.org
Date: Thu,  3 Mar 2016 13:12:45 -0500
Message-Id: <e98d668267a30a19b287b728ba674191c52613a4.11457028091.git.remirampin@gmail.com>
X-Mailer: git-send-email 2.7.2
In-Reply-To: <cover.11457028091.git.remirampin@gmail.com>
References: <cover.11457028091.git.remirampin@gmail.com>
In-Reply-To: <cover.1457028091.git.remirampin@gmail.com>
References: <cover.1457028091.git.remirampin@gmail.com>
X-Spam-Score: 0.2
X-Spam-Score-int: 2
X-Spam-Bar: /
X-Scanned-By: pepperfish.net, Thu, 03 Mar 2016 18:13:11 +0000
X-Spam-Report: Content analysis details: (0.2 points)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 1.0 PPF_FROM_CONTAINS_MAIL The From header contains 'mail'
 1.2 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
 (remirampin[at]gmail.com)
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at http://www.dnswl.org/, low
 trust [209.85.192.53 listed in list.dnswl.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
 0.8 PPF_SUBSCRIBE_SPLIT    RAW: Contains the text 'subscribe' with optional
 whitespace
 -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
 domain
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
 not necessarily valid
 -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-ACL-Warn: message may be spam
X-Scan-Signature: c7c007cbd50c36c3acd0264c8a1b1a00
Cc: Remi Rampin <remirampin@gmail.com>
Subject: [PATCH 1/4] Sync French translation with English reference
X-BeenThere: obnam-dev@obnam.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Obnam development discussions <obnam-dev-obnam.org>
List-Unsubscribe: <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org>,
 <mailto:obnam-dev-request@obnam.org?subject=unsubscribe>
List-Archive: <http://listmaster.pepperfish.net/pipermail/obnam-dev-obnam.org>
List-Post: <mailto:obnam-dev@obnam.org>
List-Help: <mailto:obnam-dev-request@obnam.org?subject=help>
List-Subscribe: <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org>,
 <mailto:obnam-dev-request@obnam.org?subject=subscribe>
Sender: obnam-dev-bounces@obnam.org
Errors-To: obnam-dev-bounces@obnam.org

---
 manual/fr/020-concepts.mdwn        |   2 +-
 manual/fr/060-backing-up.mdwn      |  48 ++++---
 manual/fr/070-restoring.mdwn       |  28 +++-
 manual/fr/110-encryption.mdwn      |  10 ++
 manual/fr/120-misc.mdwn            |  16 +++
 manual/fr/140-troubleshooting.mdwn |  75 +++++++++++
 manual/fr/155-repo.mdwn            |  19 +++
 manual/fr/160-tuning.mdwn          |  41 +++++-
 manual/fr/700-contrib.mdwn         | 181 +++++++++++++++++++++++++
 manual/fr/800-errors.mdwn          |  10 ++
 manual/fr/801-errors.mdwn          | 269 +++++++++++++++++++++++++++++++++++++
 11 files changed, 679 insertions(+), 20 deletions(-)
 create mode 100644 manual/fr/155-repo.mdwn
 create mode 100644 manual/fr/700-contrib.mdwn
 create mode 100644 manual/fr/800-errors.mdwn
 create mode 100644 manual/fr/801-errors.mdwn

diff --git a/manual/fr/020-concepts.mdwn b/manual/fr/020-concepts.mdwn
index 46cb5d5..c367bc1 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 16ccc5d..ee28d6e 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 378b071..b56bd9f 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 74a959b..94a4426 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 0ed6c7f..d80e823 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 1d4b377..02d8188 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 0000000..c99d675
--- /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 bcca7f0..160caab 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 0000000..efdcd9a
--- /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 0000000..e42580c
--- /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 0000000..084f279
--- /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}
+
-- 
2.7.2


_______________________________________________
obnam-dev mailing list
obnam-dev@obnam.org
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org