This file is indexed.

/usr/share/doc/HOWTO/fr-html/Linux-Complete-Backup-and-Recovery-HOWTO.html is in doc-linux-fr-html 2013.01-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Guide pratique de sauvegarde et de récupération sous Linux</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/><meta name="description" content="Imaginez une seconde que votre disque dur vient de se transformer en un palet de hockey hors de prix. Imaginez qu'après un incendie, votre ordinateur ressemble à un sujet que Salvador Dali apprécierait. Et maintenant ? La restauration complète, que l'on appelle parfois restauration intégrale de système, est un processus consistant à remonter un ordinateur après une panne catastrophique. Pour effectuer une restauration complète, vous devez disposer de sauvegardes complètes, non seulement de vos systèmes de fichiers, mais aussi des informations sur vos partitions, ainsi que sur d'autres données. Ce guide pratique est un tutoriel qui vous montrera pas à pas comment sauvegarder un ordinateur sous Linux pour être en mesure d'effectuer une restauration intégrale de système, et comment effectuer cette restauration intégrale de système. Il comprend des scripts destinés à ces tâches."/></head><body><div xml:lang="fr" class="article"><div class="titlepage"><div><div><h2 class="title"><a id="index"/>
    Guide pratique de sauvegarde et de récupération sous Linux
</h2></div><div><h3 class="subtitle"><em>
    Version française du guide pratique <span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">Linux Complete 
    Backup and Recovery HOWTO</em></span>
</em></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Charles</span> <span class="surname">Curley</span></h3><code class="email">&lt;<a class="email" href="mailto:charlescurley CHEZ charlescurley POINT com">charlescurley CHEZ charlescurley POINT com</a>&gt;</code></div></div><div><p class="othercredit"><span class="contrib">Adaptation française</span> : <span class="firstname">Denis</span> <span class="surname">Berhaut</span></p></div><div><p class="othercredit"><span class="contrib">Relecture de la version française</span> : <span class="firstname">Guillaume</span> <span class="surname">Lelarge</span></p></div><div><p class="othercredit"><span class="contrib">Préparation de la publication de la v.f.</span> : <span class="firstname">Jean-Philippe</span> <span class="surname">Guérard</span></p></div><div><p class="releaseinfo">1.6.fr.1.0</p></div><div><p class="pubdate">10 octobre 2004</p></div><div><div class="revhistory"><table summary="Historique des versions"><tr><th align="left" valign="top" colspan="3"><strong>Historique des versions</strong></th></tr><tr><td align="left">Version 1.6.fr.1.0</td><td align="left">2004-10-10</td><td align="left">DB, GL, JPG</td></tr><tr><td align="left" colspan="3">

    Première adaptation française.

</td></tr><tr><td align="left">Version 1.6</td><td align="left">2004-04-29</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">

        Ajout de notes sur Knoppix, Syslinux, PPART, QtParted, quelques 
        autres CDROM de secours, ainsi que quelques corrections.

        <span xml:lang="en" class="emphasis"><em>(Added Knoppix notes, Syslinux, PPART, QtParted,
        some other rescue CDs, and made some fixes.)</em></span>

    </td></tr><tr><td align="left">Version 1.5</td><td align="left">2003-12-19</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
    
        Notes sur Fedora et GRUB.

        <span xml:lang="en" class="emphasis"><em>(Fedora and GRUB notes.)</em></span>
    
    </td></tr><tr><td align="left">Version 1.4</td><td align="left">2003-08-17</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
    
        Quelques notes sur le gravage des CDROM et rajouts concernant
        les fichiers à exclure.
    
        <span xml:lang="en" class="emphasis"><em>(Some notes on burning CD-ROMs, and more 
        on files to exclude.)</em></span>

    </td></tr><tr><td align="left">Version 1.3</td><td align="left">2003-04-24</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
    
        Substitution d'une nouvelle adresse de courrier électronique et d'une
        URL aux anciennes.

        <span xml:lang="en" class="emphasis"><em>(Substituted new email address and URL for 
        old.)</em></span>
        
    </td></tr><tr><td align="left">Version 1.2</td><td align="left">2003-02-12</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
    
        Ajout de notes pour Red Hat 8.0, pour le support de FAT32, 
        scission de la première étape des scripts de restauration, ainsi 
        que quelques changements mineurs. Notes sur <a class="link" href="#amanda" title="8.5. Amanda">Amanda</a>.

        <span xml:lang="en" class="emphasis"><em>(Added Red Hat 8.0 notes, support for FAT32, split
        the first stage restore scripts, and other minor changes. Notes on 
        <a class="link" href="#amanda" title="8.5. Amanda">Amanda</a>.)</em></span>

    </td></tr><tr><td align="left">Version 1.1</td><td align="left">2002-09-10</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
	
        Nouveau code pour prendre en charge les partitions ext3 dans le 
        fichier <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>, 
        ainsi qu'une note sur <a class="link" href="#initrd" title="4.1.5. Initrd"><code class="filename">initrd</code></a>.

        <span xml:lang="en" class="emphasis"><em>(New code to handle ext3 partitions in <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"> <code class="filename">make.fdisk</code> </a>, 
        and a note on <a class="link" href="#initrd" title="4.1.5. Initrd"> 
        <code class="filename">initrd</code> </a>.)</em></span>

    </td></tr><tr><td align="left">Version 1.0</td><td align="left">2002-07-24</td><td align="left">C^2</td></tr><tr><td align="left" colspan="3">
    
        Désormais, nous utilisons la compression bz2 pour la première 
        étape, disposons de l'option « run time » pour la 
        vérification des blocs défectueux et avons créé un script qui 
        exécute entièrement la première étape.
    
        <span xml:lang="en" class="emphasis"><em>(We now use bz2 compression in the first 
        stage, have the run time option to check for bad 
        blocks, and have a script that runs the entire first 
        stage.)</em></span>

    </td></tr></table></div></div><div><div class="abstract"><p class="title"><strong>Résumé</strong></p><p>

    Imaginez une seconde que votre disque dur vient de se transformer en 
    un palet de hockey hors de prix. Imaginez qu'après un incendie, 
    votre ordinateur ressemble à un sujet que Salvador Dali
    apprécierait. Et maintenant ?

</p><p>

    La restauration complète, que l'on appelle parfois restauration 
    intégrale de système, est un processus consistant à remonter un 
    ordinateur après une panne catastrophique. Pour effectuer une 
    restauration complète, vous devez disposer de sauvegardes complètes, 
    non seulement de vos systèmes de fichiers, mais aussi des 
    informations sur vos partitions, ainsi que sur d'autres données. Ce 
    guide pratique est un tutoriel qui vous montrera pas à pas comment 
    sauvegarder un ordinateur sous Linux pour être en mesure d'effectuer 
    une restauration intégrale de système, et comment effectuer cette 
    restauration intégrale de système. Il comprend des scripts destinés 
    à ces tâches.

</p></div></div></div><hr/></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#intro">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#copyright">1.1. 

    Droits d'utilisation <span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">(Copyright 
    Information)</em></span>

</a></span></dt><dt><span class="sect2"><a href="#disclaimers">1.2. 
    Limitation de Responsabilité
    
    (<span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">Disclaimers</em></span>)
    
</a></span></dt><dt><span class="sect2"><a href="#newversions">1.3. Nouvelles versions</a></span></dt><dt><span class="sect2"><a href="#credits">1.4. Historique</a></span></dt><dt><span class="sect2"><a href="#feedback">1.5. Commentaires et réactions</a></span></dt><dt><span class="sect2"><a href="#translations">1.6. Traductions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Overview">2. Tour d'horizon</a></span></dt><dd><dl><dt><span class="sect2"><a href="#limitations">2.1. Limitations</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Preparation">3. Préparation</a></span></dt><dd><dl><dt><span class="sect2"><a href="#installingzipdrive">3.1. Installation du lecteur ZIP</a></span></dt></dl></dd><dt><span class="sect1"><a href="#CreatingtheStage1BackUp">4. Création de la sauvegarde de l'étape 1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#ThemeAndVariations">4.1. Variations sur le thème</a></span></dt></dl></dd><dt><span class="sect1"><a href="#firststagerestore">5. Première étape de restauration</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Bootingtomsrtbt">5.1. Démarrer tomsrtbt</a></span></dt><dt><span class="sect2"><a href="#restoration">5.2. Restauration</a></span></dt></dl></dd><dt><span class="sect1"><a href="#SecondStageRestoration">6. Seconde étape de la restauration</a></span></dt><dt><span class="sect1"><a href="#DistributionSpecificNotes">7. Notes spécifiques aux distributions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#fedora">7.1. Fedora</a></span></dt><dt><span class="sect2"><a href="#redhat9">7.2. Red Hat 9</a></span></dt><dt><span class="sect2"><a href="#redhat80">7.3. Red Hat 8.0</a></span></dt><dt><span class="sect2"><a href="#RedHat71">7.4. Red Hat 7.1</a></span></dt><dt><span class="sect2"><a href="#RedHat70">7.5. Red Hat 7.0</a></span></dt><dt><span class="sect2"><a href="#knoppix">7.6. Knoppix</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ApplicationSpecificNotes">8. 
Notes concernant certaines application</a></span></dt><dd><dl><dt><span class="sect2"><a href="#grub">8.1. 
GRUB</a></span></dt><dt><span class="sect2"><a href="#tripwire">8.2. 
Tripwire</a></span></dt><dt><span class="sect2"><a href="#Squid">8.3. 
Squid</a></span></dt><dt><span class="sect2"><a href="#arkeia">8.4. 
Arkeia</a></span></dt><dt><span class="sect2"><a href="#amanda">8.5. Amanda</a></span></dt></dl></dd><dt><span class="sect1"><a href="#SomeAdviceforDisasterRecovery">9. Quelques conseils pour une récupération après un désastre</a></span></dt><dt><span class="sect1"><a href="#WhatNow">10. Et maintenant ?</a></span></dt><dd><dl><dt><span class="sect2"><a href="#todo">10.1. Liste de travail</a></span></dt></dl></dd><dt><span class="sect1"><a href="#TheScripts">11. Les scripts</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FirstStage">11.1. Première étape</a></span></dt><dt><span class="sect2"><a href="#SecondStage">11.2. Deuxième étape</a></span></dt><dt><span class="sect2"><a href="#BackupServerScripts">11.3. Scripts de sauvegarde du serveur</a></span></dt></dl></dd><dt><span class="sect1"><a href="#resources">12. Ressources</a></span></dt><dt><span class="appendix"><a href="#appendix1gfdl">A. License GNU Free Documentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="#gfdl02">0. 
PREAMBULE</a></span></dt><dt><span class="sect1"><a href="#gfdl03">1. 
APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="#gfdl04">2. 
VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a href="#gfdl05">3. 
COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a href="#gfdl06">4. 
MODIFICATIONS</a></span></dt><dt><span class="sect1"><a href="#gfdl07">5. 
COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="#gfdl08">6. 
COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="#gfdl09">7. 
AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a href="#gfdl10">8. 
TRANSLATION</a></span></dt><dt><span class="sect1"><a href="#gfdl11">9. 
TERMINATION</a></span></dt><dt><span class="sect1"><a href="#gfdl12">10. 
FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a href="#gfdl13">11. 
How to use this License for your documents</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="intro"/>1. Introduction</h2></div></div></div><p>

Le processus de restauration intégrale de système consiste à : 
installer le système d'exploitation à partir des disques du produit. 
installer le logiciel de sauvegarde de façon à pouvoir restaurer vos 
données. Restaurer vos données. Puis, il vous faudra restaurer les 
fonctionnalités en vérifiant vos fichiers de configuration, les 
droits, etc.

</p><p>

    Le processus et les scripts décrits dans ce guide pratique 
    sauvegarderont la réinstallation du système d'exploitation. Le 
    processus décrit ici restaurera uniquement les sauvegardes des 
    fichiers de l'ordinateur de production. La restauration vous 
    rétablira votre configuration intacte, vous épargnant des heures de 
    vérification de votre configuration et des données.

</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="copyright"/>1.1. 

    Droits d'utilisation <span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">(Copyright 
    Information)</em></span>

</h3></div></div></div><p>

Copyright © 2001, 2002, 2003 Charles Curley pour la version 
originale.

</p><p>

Copyright © 2004 Denis Berhaut, Guillaume Lelarge, Jean-Philippe Guérard
pour la version française.

</p><p>

Ce document est distribué selon les termes de la licence GNU Free 
Documentation License (GFDL), décrite ci-dessous. Permission est 
accordée de copier, distribuer et de modifier ce document selon les 
termes de la GNU Free Documentation Licence, version 1.1 ou ultérieure 
publiée par la Free Software Foundation à condition qu'il ne contienne 
ni Section Inaltérable, ni texte de première ou de quatrième de 
couverture. Une copie de la licence est incluse dans la section <a class="link" href="#appendix1gfdl" title="A. License GNU Free Documentation"><span class="quote">« <span class="quote">Licence GNU Free 
Documentation</span> »</span></a>.

</p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

Copyright © 2001, 2002, 2003 Charles Curley and distributed under the 
terms of the GNU Free Documentation License (GFDL) license, stated 
below. Permission is granted to copy, distribute and/or modify this 
document under the terms of the GNU Free Documentation License, Version 
1.1 or any later version published by the Free Software Foundation; with 
no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover 
Texts. A copy of the license is included in the section entitled <a class="link" href="#appendix1gfdl" title="A. License GNU Free Documentation"><span class="quote"><span class="quote">GNU Free Documentation 
License</span></span></a>.

</em></span></p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

If you have any questions, please contact 

<code class="email">&lt;<a class="email" href="mailto:linux-howto at metalab.unc.edu">linux-howto at metalab.unc.edu</a>&gt;</code>.

</em></span></p><p>

Pour toute question relative à la version originale de ce document, 
veuillez contacter en anglais

<code class="email">&lt;<a class="email" href="mailto:linux TIRET howto CHEZ metalab POINT unc POINT edu">linux TIRET howto CHEZ metalab POINT unc POINT edu</a>&gt;</code>.

</p><p>

    N'hésitez pas à faire parvenir tout commentaire relatif à la version 
    française de ce document à

    <code class="email">&lt;<a class="email" href="mailto:commentaires CHEZ traduc POINT org">commentaires CHEZ traduc POINT org</a>&gt;</code>

    en précisant son titre, sa date et sa version.

</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="disclaimers"/>1.2. 
    Limitation de Responsabilité
    
    (<span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">Disclaimers</em></span>)
    
</h3></div></div></div><p>
 
    Ni l'auteur de ce document, ni le <a class="ulink" href="http://www.tldp.org/" target="_top">Projet de documentation Linux</a> ou 
    qui que ce soit d'autre ne pourra être tenu responsable du contenu 
    de ce document. L'utilisation des concepts, exemples et autres 
    contenus du document s'effectue à vos risques et périls. Il peut 
    comporter des erreurs ou des inexactitudes pouvant endommager votre 
    système. Procédez prudemment, et bien qu'il n'y ait probablement pas 
    d'erreur, l'auteur dégage toute responsabilité à leur sujet.

</p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

     No liability for the contents of this documents can be accepted by 
     the author, the <a class="ulink" href="http://www.tldp.org/" target="_top">Linux 
     Documentation Project</a> or anyone else. Use the concepts, 
     examples and other content at your own risk. There may be errors 
     and inaccuracies that may damage your system. Proceed with caution, 
     and, although errors are unlikely, the author take no 
     responsibility for them.

</em></span></p><p>

    Sauf mention spécifique, les droits d'auteur sont la possession de 
    leurs propriétaires respectifs. L'utilisation d'un terme dans ce 
    document ne devrait pas être considérée comme ayant une influence 
    sur la validité d'une quelconque marque déposée ou marque de 
    services.

</p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

    All copyrights are held by their by their respective owners, unless 
    specifically noted otherwise. Use of a term in this document should 
    not be regarded as affecting the validity of any trademark or 
    service mark.

</em></span></p><p>
 
    Le fait de nommer un produit ou une marque ne doit pas être 
    considéré comme une approbation.

</p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

    Naming of particular products or brands should not be seen as 
    endorsements.

</em></span></p><p>

    Nous vous recommandons fortement d'effectuer une sauvegarde de votre 
    système avant une installation importante et d'effectuer des 
    sauvegardes à intervalles réguliers. De plus, nous vous recommandons 
    fortement d'utiliser un ordinateur expérimental dédié lorsque vous 
    mettrez les mains dans le cambouis des matériaux de ce guide 
    pratique, en particulier les scripts.

</p><p><span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">

    You are strongly recommended to take a backup of your system before 
    major installation and backups at regular intervals. In addition, 
    you are strongly recommended to use a sacrificial experimental 
    computer when mucking with the material, especially the scripts, in 
    this HOWTO.

</em></span></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="newversions"/>1.3. Nouvelles versions</h3></div></div></div><p>

Vous pourrez trouver ce document à sa <a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO.html" target="_top">page 
d'accueil</a> ou sur le site internet du <a class="ulink" href="http://www.tldp.org/" target="_top">projet de documentation Linux</a> dans de 
nombreux formats. Envoyez vos commentaires à l'adresse 
<code class="email">&lt;<a class="email" href="mailto:charlescurley CHEZ charlescurley POINT com">charlescurley CHEZ charlescurley POINT com</a>&gt;</code>.

</p><p>

En fonction de votre navigateur, il vous faudra peut-être maintenir la 
touche majuscule appuyée pour les télécharger lorsque vous cliquerez 
dessus.

</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>

<a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.chunky.html.tar.bz2" target="_top">compression 
bzip2 de divers fichiers (beaucoup de petites pages. Lecture plus 
rapide.) HTML</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.smooth.html.tar.bz2" target="_top"> 
compression bzip2 <span class="quote">« <span class="quote">douce</span> »</span> (une énorme page — pas de 
petits fichiers. Recherches plus faciles). HTML</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.ps.bz2" target="_top"> 
compression bzip2 postscript (format lettre US)</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.pdf.bz2" target="_top"> 
compression bzip2 PDF (format lettre US)</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.txt.bz2" target="_top">
compression bzip2 texte brut ASCII</a>

</p></li><li class="listitem"><p>

Utilise les <a class="ulink" href="http://www.charlescurley.com/Linux-Complete-Backup-and-Recovery-HOWTO/Linux-Complete-Backup-and- Recovery-HOWTO.tar.bz2" target="_top">sources</a>, 
Luke.

</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="credits"/>1.4. Historique</h3></div></div></div><p>

Ce document provient de deux articles publiés à l'origine dans <a class="ulink" href="http://www.linuxjournal.com/" target="_top"><em class="citetitle">le 
Linux Journal</em></a>. Je tiens à remercier <em class="citetitle"> le Linux Journal</em> pour avoir modifié les 
droits sur ces articles, rendant la rédaction de ce guide pratique 
possible.

</p><p>

Je remercie particulièrement Joy Y Goodreau pour son excellente mise en forme du
guide pratique, et David Palomares pour avoir corrigé l'orthographe du prénom de
Salvador Dali.

</p><p>

D'autres remerciements vont à <a class="ulink" href="mailto:pon CHEZ iki POINT fi" target="_top">
Pasi Oja-Nisula</a> pour avoir corrigé un bogue et fourni des informations sur
<a class="ulink" href="http://www.knoppix-fr.org/" target="_top">Knoppix</a>.

</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="feedback"/>1.5. Commentaires et réactions</h3></div></div></div><p>

Les réactions que vous pourrez faire à ce document sont bienvenues. Sans vos
corrections, suggestions et autres apports, ce document n'existerait pas.
Envoyez-moi, en anglais, vos ajouts, commentaires et critiques à cette adresse :
<code class="email">&lt;<a class="email" href="mailto:charlescurley CHEZ charlescurley POINT com">charlescurley CHEZ charlescurley POINT com</a>&gt;</code>.

</p><p>
    
    N'hésitez pas à faire parvenir tout commentaire relatif à la
    version française de ce document à
    
    <code class="email">&lt;<a class="email" href="mailto:commentaires CHEZ traduc POINT org">commentaires CHEZ traduc POINT org</a>&gt;</code>
    
    en précisant son titre, sa date et sa version.
    
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="translations"/>1.6. Traductions</h3></div></div></div><p>

Tout le monde ne parle pas anglais. Les volontaires sont bienvenus.

</p><p>

<a class="ulink" href="http://www.traduc.org/docs/howto/lecture/" target="_top">Traduction en 
français</a> par

<span class="personname"><span class="firstname">Denis</span> <span class="surname">Berhaut</span></span>

<code class="email">&lt;<a class="email" href="mailto:denis POINT berhaut CHEZ free POINT fr">denis POINT berhaut CHEZ free POINT fr</a>&gt;</code>

</p><p>

Relecture par

<span class="personname"><span class="firstname">Guillaume</span> <span class="surname">Lelarge</span></span>

<code class="email">&lt;<a class="email" href="mailto:gleu CHEZ wanadoo POINT fr">gleu CHEZ wanadoo POINT fr</a>&gt;</code>

</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="Overview"/>2. Tour d'horizon</h2></div></div></div><p>

Mettre en œuvre le processus présenté ci-dessous n'est pas facile et 
peut être dangereux pour vos données. Entraînez-vous avant d'en avoir 
besoin ! Faites comme moi et <span class="emphasis"><em>utilisez un ordinateur 
sacrifié d'avance.</em></span> !

</p><p>

Dans ce guide pratique, l'ordinateur cible est un Pentium. À l'origine, 
la version de <a class="ulink" href="http://www.fr.redhat.com" target="_top">Red Hat</a> 7.1 
Linux serveur ou poste de travail était installée sur un disque dur IDE. 
Depuis, il a été mis à jour vers la Red Hat 8.0 et <a class="ulink" href="http://fedora.redhat.com/" target="_top">Fedora Core 1</a>. L'ordinateur 
cible ne contient pas beaucoup de données dans la mesure où c'est une 
<span class="quote">« <span class="quote">machine sacrifiée</span> »</span> consacrée aux tests. En fait, je ne 
voulais pas tester ce processus avec un ordinateur de production et des 
données de production. Aussi, j'ai effectué une installation avant 
d'engager les tests pour être en mesure de réinstaller si j'avais besoin 
de retourner à une configuration connue.

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B."><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B.</th></tr><tr><td align="left" valign="top"><p>
 
Les exemples de commandes montreront, en général, ce que j'ai dû 
effectuer pour récupérer le système cible. Vous utiliserez sans doute 
des commandes similaires, mais avec des paramètres différents. C'est à 
vous de vous assurer que vous dupliquez votre configuration, et non pas 
la configuration de l'ordinateur de test.

  </p></td></tr></table></div><p>

La procédure initiale a été mise au point dans le livre de W. Curtis Preston,
<a class="ulink" href="http://www.oreilly.com/catalog/unixbr/" target="_top">
<em class="citetitle">Unix Backup &amp; Recovery</em></a>,
O'Reilly &amp; Associates, 1999, que j'ai approuvé dans le <a class="ulink" href="http://www2.linuxjournal.com/lj-issues/issue78/3839.html" target="_top">
<em class="citetitle">Linux Journal</em></a>.
Cependant, le livre est un peu léger en ce qui concerne les questions
spécifiques, concrètes. Par exemple, quels fichiers faut-il sauvegarder ?
Quelles méta données sont à conserver, et comment ?

</p><p>

Avant de démarrer le processus publié dans ce guide pratique, il vous faudra
sauvegarder votre système à l'aide d'un outil de sauvegarde classique comme
Amanda, <span class="trademark">BRU</span>™, tar, <span class="trademark">Arkeia</span>®ou cpio. La question suivante sera de
déterminer comment exécuter l'outil qui restaurera vos données à partir d'un matériel
hors d'usage.

</p><p>

Les utilisateurs du Red Hat Package Manager (RPM) des distributions Linux
devront aussi sauver les méta données RPM en tant que parties intégrantes de
leurs sauvegardes normales. Une instruction du type :

</p><pre class="programlisting">
bash# <span class="command"><strong>rpm -Va &gt; /etc/rpmVa.txt</strong></span>
</pre><p>

dans votre script de sauvegarde vous donnera une base de comparaison du résultat
à obtenir après une restauration intégrale de système.

</p><p>
Pour arriver à ce point, il vous faut : </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Votre matériel remonté et de nouveau en état de marche, les composants ayant été
remplacés. Le BIOS devrait être configuré correctement, y compris l'heure et la
date, ainsi que les paramètres du disque dur. À ce stade, il n'y a pas de raison
d'utiliser un disque dur différent.</p></li><li class="listitem"><p>
 Un lecteur <a class="ulink" href="http://www.iomega.com/" target="_top">
<span class="trademark">Iomega</span>®
</a>
<a class="ulink" href="http://www.iomega.com/zip/products/par100_250.html" target="_top">
<span class="trademark">ZIP</span>® sur port parallèle</a>
ou équivalent. Vous aurez besoin d'au moins 30 Mo d'espace libre.</p></li><li class="listitem"><p>Votre média de sauvegarde.</p></li><li class="listitem"><p>Un système Linux minimal pour vous permettre de lancer le logiciel de
restauration.</p></li></ul></div><p>
Pour en arriver là, au moins deux étapes de sauvegarde sont nécessaires,
peut-être trois. La nature exacte de ce que vous sauvegardez et à quelle étape
vous sauvegardez est déterminée par votre processus de restauration. Par
exemple, si vous restaurez un serveur de bandes, il se peut que vous n'ayez pas
besoin du réseau pendant le processus de restauration. Donc, sauvegardez le
réseau uniquement lors de vos sauvegardes habituelles.</p><p>
De plus, vous restaurerez par étapes. À l'étape une, nous construisons les
partitions, les systèmes de fichiers, etc. et restaurons un minimum de fichiers
du disque ZIP. L'objectif de la première étape est de pouvoir initialiser un
ordinateur disposant d'une connexion réseau, de lecteurs de bandes, d'un
logiciel de restauration ou de tout ce qui est nécessaire pour l'étape
deux.</p><p>
La seconde étape si nécessaire, consiste à restaurer le logiciel de sauvegarde
et les bases de données associées. Par exemple, supposons que vous utilisiez
Arkeia et que vous prépariez un disque zip de restauration intégrale de système
pour votre serveur de sauvegarde. Arkeia occupe énormément d'espace pour sa base
de données sur les disques durs du serveur. Si vous le désirez, vous pouvez
récupérer la base de données à partir des bandes. À la place, pourquoi ne pas
archiver et compresser avec tar et gzip l'intégralité du répertoire arkeia
(/usr/knox), et l'enregistrer sur un autre ordinateur à l'aide de nfs ou
ssh ? La première étape, comme nous l'avons défini plus bas, ne comprend pas X.
Vous aurez donc quelques tests à effectuer si vous désirez sauvegarder X avec
votre programme de sauvegarde. Pour certains programmes de restauration, X est
indispensable.</p><p>
Bien sûr, si vous utilisez d'autres programmes de sauvegarde, vous aurez
peut-être un travail de détective à effectuer. Vous devrez déterminer les
répertoires et les fichiers nécessaires à son fonctionnement. Si vous utilisez
tar, gzip, cpio, mt ou dd comme outils de sauvegarde et de restauration, ils
devront être enregistrés sur votre disque ZIP et restaurés pendant la première
étape décrite plus bas.</p><p>
La dernière étape est une restauration intégrale à partir d'une bande ou d'un
autre média. Après avoir terminé la dernière étape, vous devriez pouvoir
démarrer un système entièrement restauré et opérationnel.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="limitations"/>2.1. Limitations</h3></div></div></div><p>
Ce guide pratique se limite à la création d'une sauvegarde minimum de sorte que,
ayant ensuite restauré cette sauvegarde vers un nouveau matériel (<span class="quote">« <span class="quote">
restauration intégrale de système</span> »</span>), vous pourrez ensuite utiliser vos
sauvegardes traditionnelles pour restaurer
un système totalement opérationnel. Ce guide pratique ne traite pas de vos
sauvegardes traditionnelles.</p><p>
Même dans ce cadre étroit, ce guide pratique n'est pas exhaustif. Vous devrez
encore faire des recherches, éditer des scripts et effectuer des tests.</p><p>
Les scripts présentés restaurent les données des partitions telles qu'elles sont
sur le disque dur d'origine. Ce serait formidable si vous pouviez restaurer sur
un ordinateur identique ou au moins un disque dur identique, mais c'est rarement
le cas. Pour l'instant, il y a deux remèdes (qui prendront plus de sens après
que vous ayez lu le reste du guide pratique) :</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Éditez le fichier d'entrée de la table des partitions. Je l'ai fait quelquefois.
Vous pouvez aussi recourir à ce moyen pour ajouter de nouvelles partitions ou en
supprimer (mais éditez les scripts qui utilisent aussi le fichier d'entrées de
la table des partitions).</p></li><li class="listitem"><p>
Créez à la main une nouvelle table des partitions et partez de ce point. c'est
une des raisons qui fait que <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata"><code class="filename">
restore.metadata</code></a> n'appelle pas le script de reconstruction du
disque dur. Utilisez le <a class="link" href="#mount.dev.hda" title="11.1.3. mount.dev.hda">script de reconstruction</a>.</p></li></ul></div><p>
Les scripts présentés ici prennent en charge uniquement ext2fs, FAT12, FAT16 et
FAT32. Vous aurez besoin d'autres outils pour sauvegarder et restaurer des
systèmes de fichiers que nous n'avons pas couverts, à moins que des volontaires
passionnés ne codent les scripts pour le faire. <a class="ulink" href="http://www.partimage.org/" target="_top">Partition Image</a> se présente comme un candidat
utile.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="Preparation"/>3. Préparation</h2></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: AVERTISSEMENT"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">AVERTISSEMENT</th></tr><tr><td align="left" valign="top"><p>
Effectuez vos sauvegardes traditionnelles de façon régulière. Ce guide pratique
est sans intérêt si vous ne le faites pas.</p></td></tr></table></div><p>
Fabriquez vous-même un disque de secours. J'utilise <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>. Il est bien documenté et tient
sur une disquette qui comprend de nombreux
outils utiles. Sa liste de discussion est active et les quelques questions que
j'ai posées ont trouvé rapidement une réponse précise. J'apprécie cela dans un
produit dont ma boutique peut dépendre un jour.</p><p>
Ensuite, imaginez comment sauvegarder le système d'exploitation dont vous aurez
besoin pour restaurer vos sauvegardes traditionnelles. J'ai suivi les conseils
de Preston et j'ai utilisé un lecteur ZIP sur port parallèle. Les lecteurs
contiennent à peu près 90 Mo utiles. J'ai besoin d'environ 85 Mo pour
sauvegarder mon ordinateur, ce qui fait qu'un lecteur de 100 Mo peut être votre
salut.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="installingzipdrive"/>3.1. Installation du lecteur ZIP</h3></div></div></div><p>
L'installation du lecteur ZIP est décrite dans le <a class="ulink" href="http://www.tldp.org/HOWTO/mini/ZIP-Drive.html" target="_top">
guide pratique des disques ZIP</a>, qui est disponible auprès du <a class="ulink" href="http://www.tldp.org/" target="_top">Linux Documentation Project</a>
et, pour sa traduction française, à l'adresse <a class="ulink" href="http://www.traduc.org/docs/howto/lecture/ZIP-Drive.html" target="_top">
http://www.traduc.org/docs/HOWTO/vf/ZIP-Drive.html</a>
. 
</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="CreatingtheStage1BackUp"/>4. Création de la sauvegarde de l'étape 1</h2></div></div></div><p>
Votre sauvegarde de production étant effectuée, il est indispensable de
conserver les informations de partitions pour pouvoir les reconstruire.</p><p>
Le script  <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>
recherche les informations des partitions du disque dur et les enregistre dans
trois fichiers. Le premier est un script exécutable, nommé <a class="link" href="#make.dev.hda" title="11.1.2. make.dev.hda"><code class="filename">make.dev.x</code></a> (où <span class="quote">« <span class="quote">x</span> »</span>
est le nom du fichier de périphérique, c'est-à-dire hda). Le second est <a class="link" href="#mount.dev.hda" title="11.1.3. mount.dev.hda"><code class="filename">mount.dev.x</code></a>, qui crée les
points de montage et qui y monte les partitions nouvellement créées. Le dernier,
<a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.x</code></a>, est constitué des
commandes nécessaires à <span class="command"><strong>fdisk</strong></span> pour construire les partitions.
Vous précisez quel disque dur vous désirez, pour construire les scripts associés
(et donc les noms de fichiers) en nommant le fichier de périphérique associé comme
argument de <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>. Par
exemple, sur un système IDE classique,</p><pre class="programlisting">
bash# <span class="command"><strong>make.fdisk /dev/hda</strong></span>
</pre><p>
produit les scripts <a class="link" href="#make.dev.hda" title="11.1.2. make.dev.hda"><code class="filename">make.dev.hda</code></a>,
<a class="link" href="#mount.dev.hda" title="11.1.3. mount.dev.hda"><code class="filename">mount.dev.hda</code></a> ainsi que le
fichier en entrée de <span class="command"><strong>fdisk</strong></span>, <a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.hda</code></a>.</p><p>
De plus, si <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>
rencontre une partition FAT, il conserve le secteur d'amorçage de la partition
dans un fichier nommé <code class="filename">dev.xy</code>, où x est le nom de périphérique
du disque (c'est-à-dire sdc, hda) et y est le numéro de la partition. Le secteur
d'amorçage est le premier secteur (512 octets) de la partition. Ce secteur est
restauré en même temps que les partitions sont reconstruites, dans le script
<code class="filename">make.dev.hda</code>.</p><p>
Heureusement, le prix des disques durs s'effondre presque aussi vite que la
confiance du public envers les politiciens après une élection. Donc, c'est une
bonne chose que les fichiers produits soient au format texte et puissent être
édités manuellement. C'est la façon la plus difficile mais la plus flexible pour
effectuer une reconstruction sur un plus grand disque de remplacement. (Voir 
<a class="link" href="#todo" title="10.1. Liste de travail">la liste du carnet de route</a>.)</p><p>
Les autres méta données sont conservées dans le script <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>.
Le script enregistre les informations de partition dans le fichier
<code class="filename">fdisk.hda</code> à la racine du disque ZIP. C'est une bonne idée
d'imprimer ce fichier ainsi que votre <code class="filename">/etc/fstab</code> pour
avoir une copie durable au cas où vous devriez restaurer manuellement les
données de la partition. Vous pouvez enregistrer une arborescence en alternant
l'utilisation de deux consoles virtuelles, par le lancement de
<span class="command"><strong>fdisk</strong></span> dans l'une et en affichant par la commande
cat <code class="filename">/etc/fstab</code> ou <code class="filename">/fdisk.hda</code>
au besoin. Cependant, pratiquer ainsi peut mener à l'erreur.</p><p>
Vous voudrez aussi conserver les fichiers se rapportant à votre méthode de
restauration. Par exemple, si vous utilisez nfs pour sauvegarder vos données,
vous devrez conserver hosts.allow, hosts.deny, exports, etc. De même, si vous
utilisez un processus de restauration adossé au réseau comme Amanda ou Quick
Restore, il vous faudra conserver les fichiers de configuration réseau tels que
HOSTNAME, hosts, etc., ainsi que l'arborescence logicielle qui s'y
rapporte.</p><p>
La façon la plus simple de régler ces questions ainsi que d'autres similaires
est de conserver l'intégralité du répertoire etc.</p><p>
Il est impossible à un lecteur ZIP de 100 Mo de contenir à lui tout seul
l'installation d'une distribution moderne d'un serveur Linux. Nous ne pouvons
pas conserver l'ensemble du zinzin. Il nous faut être bien plus sélectifs. De
quels fichiers avons-nous besoin ?</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Le répertoire /boot.</p></li><li class="listitem"><p>
Le répertoire /etc et ses sous-répertoires.</p></li><li class="listitem"><p>
Les répertoires nécessaires au moment du démarrage.</p></li><li class="listitem"><p>
Les fichiers de périphériques dans /dev.</p></li></ul></div><p>
Pour déterminer les répertoires nécessaires au démarrage, il nous faut 
regarder dans le fichier d'initialisation du démarrage 
<code class="filename">/etc/rc.sysinit</code>. Il détermine son propre chemin 
ainsi :</p><pre class="programlisting">
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
</pre><p>
Les essais et les erreurs ont indiqué que nous avons besoin d'autres
répertoires, tels que <code class="filename">/dev</code>. Sous Linux, vous ne pouvez pas
faire grand-chose sans les fichiers de périphériques.</p><p>
Lorsque vous lirez le script <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>, vous remarquerez
que nous ne sauvegardons pas nécessairement les fichiers qui sont appelés par
leur chemin absolu.</p><p>
Il nous faudra peut-être procéder à plusieurs itérations de sauvegarde, tester
la restauration intégrale du système, réinstaller d'un CDROM et essayer encore,
avant d'obtenir un script de sauvegarde fonctionnel. Pour la préparation de ce
guide pratique, j'ai fait cinq itérations avant de réussir une restauration.
C'est la raison pour laquelle il est nécessaire d'utiliser des scripts dès que
possible. Testez soigneusement !</p><p>
L'une des choses à faire avec un système basé sur RPM est d'utiliser le
programme <span class="command"><strong>rpm</strong></span> pour déterminer l'emplacement des fichiers. Par
exemple, pour obtenir la liste complète des fichiers utilisés par le paquet openssh,
saisissez :</p><pre class="programlisting">
bash# <span class="command"><strong>rpm -ql openssh</strong></span>
</pre><p>
Certains éléments ne sont pas nécessaires, comme les pages man. Vous pouvez les
inspecter un par un et décider de les sauvegarder ou non.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: AVERTISSEMENT"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">AVERTISSEMENT</th></tr><tr><td align="left" valign="top"><p>
La seconde étape de la restauration est menée sans que les fichiers précédemment
restaurés soient écrasés. Cela signifie que les fichiers restaurés durant la
première étape sont ceux qui seront utilisés après la fin de la restauration.
Donc, mettez à jour vos sauvegardes intégrales de système à chaque fois que vous
mettez à jour des fichiers de ces répertoires.</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: AVERTISSEMENT"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">AVERTISSEMENT</th></tr><tr><td align="left" valign="top"><p>
La version de <span class="command"><strong>tar</strong></span> fournie avec <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> ne préserve pas le propriétaire lors de
la restauration. Ceci peut poser problème à des applications comme <a class="link" href="#amanda" title="8.5. Amanda">Amanda</a>. Amanda, outil de sauvegarde et de restauration,
a plusieurs répertoires dont le propriétaire est son utilisateur éponyme. La
solution est :</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Notez quels sont les répertoires et les fichiers dont root n'est pas
propriétaire.</p></li><li class="listitem"><p>
Notez l'identifiant de leurs propriétaires.</p></li><li class="listitem"><p>
Faites en sorte que le processus de restauration comprenne le rétablissement du
propriétaire. Par exemple :</p><pre class="programlisting">
bash# <span class="command"><strong>chown -R amanda:disk /var/lib/amanda</strong></span>
</pre><p>
vous pouvez aussi ajouter cette ligne à vos scripts de la deuxième étape de
restauration, comme dans
<a class="link" href="#restore.tester" title="11.3.2. restore.tester"><code class="filename">restore.tester</code></a>.</p></li></ul></div></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="ThemeAndVariations"/>4.1. Variations sur le thème</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e770"/>4.1.1. Pas de lecteur ZIP</h4></div></div></div><p>
Ce processus de sauvegarde vous oblige à disposer du lecteur de disque ZIP à
chaque sauvegarde. Vous pouvez créer le contenu du disque ZIP dans un
répertoire, puis le sauvegarder via le réseau. Ensuite, il vous faudra
simplement construire un disque ZIP sur le serveur de sauvegarde (avec la
commande <span class="command"><strong>cp -rp</strong></span>) lorsque vous aurez besoin de restaurer.</p><p>
Le processus de sauvegarde sera plus rapide, mais vérifiez tout de même que le
répertoire créé tiendra sur votre disque ZIP (avec la commande
<span class="command"><strong>du -hs $cible.zip</strong></span>) ! Vous devrez éditer la définition
de la variable <code class="varname">zip</code> dans le fichier <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>.</p><p>
Mon portable ne supportant pas la présence simultanée d'une carte réseau et d'un
lecteur ZIP, c'est le processus que j'utilise pour le sauvegarder. Je conserve
une image de sauvegarde en même temps que la courante, ce qui fait que je
dispose d'un système de secours au cas où l'ordinateur planterait pendant une
sauvegarde.</p><p>
Vous pouvez aussi sauvegarder sur plusieurs disques ZIP des données qui en
valent la peine, et les transférer sur le système pendant la restauration.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e794"/>4.1.2. Cédérom</h4></div></div></div><p>
Ceci est similaire à l'option <span class="quote">« <span class="quote">pas de lecteur ZIP</span> »</span> 
ci-dessus. Enregistrez vos sauvegardes dans un répertoire de votre 
disque dur, comme mentionné. Puis, utilisez la commande 
<span class="command"><strong>mkisofs</strong></span> pour créer une image ISO 9660 de ce 
répertoire et gravez-la.

</p><p>

De nos jours, beaucoup d'ordinateurs sont livrés avec un lecteur de 
CDROM mais pas de disquette. De plus, les lecteurs de disquette 
tombent en panne. C'est pourquoi, graver votre CDROM avec une image qui permette
d'amorcer le système est une bonne idée. La mauvaise 
nouvelle, c'est que le format <span class="quote">« <span class="quote">El Torito</span> »</span> supporte les 
disquettes de 1,2 Mo, 1,44 Mo et 2,88 Mo, et que <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> utilise une disquette de 
1,7 Mo. La bonne nouvelle, c'est que vous pouvez obtenir une 
version en 2,88 Mo, 
<code class="filename">tomsrtbt-2.0.103.ElTorito.288.img</code> , des mêmes 
miroirs que là où vous vous procurez l'image pour disquette. Placez une 
<span class="emphasis"><em>copie</em></span>

<a href="#ftn.d0e819" class="footnote" id="d0e819"><sup class="footnote">[1]</sup></a>

dans le répertoire racine des fichiers de sauvegarde. Puis, utilisez 
l'option -b de la commande <span class="command"><strong>mkisofs</strong></span> pour spécifier que 
<code class="filename">tomsrtbt-2.0.103.ElTorito.288.img</code> est le fichier de 
l'image d'amorçage.</p><p>

Le seul point noir de ce processus est que beaucoup de vieux BIOS ne 
supportent pas les images de disquette de 2,88 Mo sur CDROM. 
Beaucoup de ceux-ci s'amorceront avec une disquette <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>.

</p><p>
On peut aussi utiliser <a class="ulink" href="http://syslinux.zytor.com/" target="_top">Syslinux</a>.
Il n'est pas dépendant de l'image d'une disquette et vous pouvez construire
votre propre CD avec un certain nombre d'outils tels que <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>.</p><p>
Il vous faudra peut-être ajuster les options du BIOS pour pouvoir amorcer sur le
lecteur de CDROM.</p><p><span class="emphasis"><em>Testez</em></span> vos CDROM sur le lecteur que vous utiliserez
pour la restauration. S'il se trouve que vous devez modifier les scripts, vous
pouvez les copier dans <code class="filename">/tmp</code>, un disque en mémoire vive sous
<a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>, et les y éditer. Les
scripts s'exécuteront à cet emplacement. Un disque en MEV étant volatil par
nature, enregistrez vos changements avant de réamorcer !</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e857"/>4.1.3. Disques ZIP multiples</h4></div></div></div><p>
En séparant les deux premiers scripts de la première étape, <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata"><code class="filename">restore.metadata</code></a>
et <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>, vous
pouvez répartir les méta données de la première étape sur plusieurs disques
ZIP.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e871"/>4.1.4. Exclusions de l'enregistrement de la première étape</h4></div></div></div><p>
Lors de la première étape, il est parfois nécessaire de compresser quelques
méga-octets de données, particulièrement lorsque vous atteignez les limites de
votre disque ZIP. La fonction <span class="command"><strong>crunch</strong></span> du script <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>
accepte de nombreux paramètres pour alimenter la commande
<span class="command"><strong>tar</strong></span>. Elle accepte aussi le paramètre
<span class="command"><strong>--exclude</strong></span>. Ainsi, par exemple, vous pouvez exclure les
répertoires <code class="filename">samba</code> et <code class="filename">X11</code> situés dans
<code class="filename">/etc</code> de cette façon :</p><pre class="programlisting">
crunch etc etc --exclude etc/samba --exclude etc/X11
</pre><p>

Pourquoi ces deux-là ? Parce qu'ils consomment beaucoup d'espace disque 
et que nous n'en avons pas besoin pour l'amorçage.

</p><p>
Si vous possédez un nombre important de noyaux, vous pouvez éliminer les
modules de tous les noyaux sur lesquels vous n'amorcerez pas. vérifiez votre
<code class="filename">lilo.conf</code> ou <code class="filename">grub.conf</code>
pour connaître le noyau que vous utiliserez, puis vérifiez
<code class="filename">/lib/modules</code> pour connaître les répertoires des modules que
vous pouvez exclure.</p><p>
Où trouver d'autres bons candidats à l'exclusion ? Listez les répertoires
cible avec la commande <span class="command"><strong>ls -alSr</strong></span> pour les fichiers
individuels, et avec la commande <span class="command"><strong>du | sort -n</strong></span>
pour les répertoires.</p><p>
Une autre façon (probablement plus nette), d'exclure les répertoires est
d'écrire la liste complète des répertoires dans un fichier puis d'y faire
référence via l'option tar <code class="filename">--exclude-from=FILENAME</code>.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="initrd"/>4.1.5. Initrd</h4></div></div></div><p>
Si votre système utilise un disque MEV pour initialiser, ou initrd pour amorcer,
assurez-vous que <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata"><code class="filename">restore.metadata</code></a> crée le
répertoire <code class="filename">/initrd</code>. La façon la plus simple de le faire
est de s'assurer qu'ils figurent dans la liste des répertoires utilisés dans la
boucle de création des répertoires (vers la fin).</p><p>
Votre système utilise probablement initrd s'il démarre sur un disque SCSI ou si
sa racine est sur une partition ext3fs. Vérifiez dans
<code class="filename">/etc/lilo.conf</code> s'il appelle un tel script.</p></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="firststagerestore"/>5. Première étape de restauration</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Bootingtomsrtbt"/>5.1. Démarrer tomsrtbt</h3></div></div></div><p>

La première chose à faire avant de démarrer le processus de restauration 
est de vérifier que l'heure du système est correctement réglée. Pour ce 
faire, configurez le BIOS. La précision du réglage de l'heure dépendra 
de vos applications. Pour une restauration, une précision de quelques 
minutes devrait être suffisante. Cela devrait permettre aux événements 
dépendant de l'heure de redémarrer à leur point d'arrêt lorsque vous 
lancerez finalement la restauration du système.

</p><p>

Avant de démarrer <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>, 
vérifiez que votre lecteur ZIP est installé sur un port parallèle, soit 
<code class="filename">/dev/lp0</code> soit <code class="filename">/dev/lp1</code>. Le 
logiciel d'initialisation chargera pour vous le pilote du lecteur zip 
sur le port parallèle.

</p><p>

L'étape suivante est la configuration du mode vidéo. D'habitude, j'aime 
afficher à l'écran tout ce qui est possible. À l'apparition de la 
sélection du mode vidéo, je sélectionne le mode 6, 80 colonnes par 60 
lignes. Il se peut que votre matériel ne soit pas capable de supporter 
de si hautes résolutions, aussi effectuez des tests.

</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="restoration"/>5.2. Restauration</h3></div></div></div><p>

Une fois <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> démarré et 
que vous voyez une console, montez le lecteur ZIP. C'est probablement 
une bonne idée de le monter en lecture seule :

</p><pre class="programlisting">
# mount /dev/sda1 /mnt -o ro
</pre><p>

Vérifiez sa présence :

</p><pre class="programlisting">
# ls -l /mnt
</pre><p>

À ce stade, vous pouvez lancer la restauration automatiquement ou 
manuellement. Utilisez la restauration automatique si vous n'avez pas 
besoin d'effectuer des changements pendant celle-ci.

</p><p>

Une remarque cependant si vous avez plusieurs disques durs. Si votre 
installation de Linux monte des partitions à partir de plusieurs disques 
durs, vous devez monter la partition racine en premier. Ceci pour être 
certain que les répertoires des points de montage sont créés sur la 
partition à laquelle ils appartiennent. Le script <code class="filename"> 
first.stage</code> lancera les scripts de montage des lecteurs dans 
leur ordre de création. Si vous les avez créés (dans le script 
<code class="filename">save.metadata</code>) dans un ordre découlant de l'arbre 
racine, le processus de montage devrait se dérouler correctement.

</p><p>

Si vous avez plusieurs disques durs, et qu'ils se montent de façon 
croisée, faites-le à votre main. Vous pouvez combiner et éditer 
les scripts pour les monter dans le bon ordre, où les monter 
manuellement.

</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e991"/>5.2.1. Automatisée</h4></div></div></div><p>
	
Le processus automatique lance tous les scripts manuels dans le bon 
ordre. Il ne permet pas les interventions manuelles, telles que la 
création de systèmes de fichiers que ce guide pratique ne prend pas en 
charge. Pour lancer la première étape de restauration automatiquement, 
saisissez :

</p><pre class="programlisting">
# /mnt/root.bin/first.stage
</pre><p>

Si vous désirez rechercher les blocs endommagés, ajoutez l'option 
<span class="quote">« <span class="quote"><code class="option">-c</code></span> »</span>.

</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1004"/>5.2.2. Manuelle</h4></div></div></div><p>

Pour lancer le processus manuel, positionnez-vous dans le répertoire où 
se trouvent les scripts, dans le lecteur ZIP.

</p><pre class="programlisting">
# cd /mnt/root.bin
</pre><p>

Lancez maintenant le(s) script(s) qui restaurer(a/ont) les informations 
de partition et créer(a/ont) les systèmes de fichiers. Vous pouvez les 
lancer dans n'importe quel ordre, par exemple :

</p><pre class="programlisting">
# ./make.dev.hda
</pre><p>

Si vous désirez qu'une recherche de blocs endommagés s'effectue, ajoutez 
l'option <span class="quote">« <span class="quote"><code class="option">-c</code></span> »</span>.

</p><p>

Ce script va :

</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
 
Nettoyer les 1024 premiers octets du disque dur, détruire toutes les 
tables des partitions existantes ainsi que le bloc de démarrage (MBR).

</p></li><li class="listitem"><p>

Recréer les partitions des informations collectées quand vous avez lancé 
<a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"> <code class="filename">make.fdisk</code></a>.

</p></li><li class="listitem"><p>

Créer correctement des partitions ext2 et ext3 ainsi que des partitions 
swap. Si vous ajoutez l'option <span class="quote">« <span class="quote"><code class="option">-c</code></span> »</span> au 
script, il vérifiera aussi les blocs défectueux.

</p></li><li class="listitem"><p>

Créer différents types de partitions FAT.

</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B."><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B.</th></tr><tr><td align="left" valign="top"><p>

Si vous devez restaurer d'autres systèmes d'exploitation, c'est le 
moment de le faire. Lorsque c'est terminé, redémarrez avec <a class="ulink" href="http://www.toms.net/rb" target="_top"> tomsrtbt</a> et continuez la 
restauration de Linux.

</p></td></tr></table></div><p>

À présent, lancez le(s) script(s) qui crée(nt) des points de montage et 
montez les partitions.

</p><pre class="programlisting">
# ./mount.dev.hda
</pre><p>

Une fois que vous avez créé tous vos répertoires et que vous y avez 
monté les partitions, vous pouvez lancer le script <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata"> <code class="filename">restore.metadata</code> 
</a>. Il restaurera le contenu du lecteur zip sur le disque dur.

</p><p>
	
Vous devriez voir un répertoire du répertoire racine du lecteur zip, 
puis une liste des fichiers d'archives tels qu'ils sont restaurés. 
L'exécution de la commande tar sous <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> vous dira que la taille 
d'un bloc de tar est de 20, et c'est très bien ainsi. Vous pouvez 
l'ignorer. Assurez-vous que lilo affiche ses résultats :

</p><pre class="screen">
Added linux *
</pre><p>

Un affichage suivra, correspondant à la commande 
<span class="quote">« <span class="quote"><span class="command"><strong>df -m</strong></span></span> »</span>.

</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1078"/>5.2.3. Touche finale</h4></div></div></div><p>

Si d'habitude vous démarrez directement sous X, vous aurez peut-être 
quelques problèmes. Pour les éviter, changez temporairement votre niveau 
de démarrage. Dans le fichier <code class="filename"> /target/etc/inittab</code>, 
trouvez la ligne qui ressemble à :

</p><pre class="programlisting">
id:5:initdefault:
</pre><p>
et transformez-la en :
</p><pre class="programlisting">
id:3:initdefault:
</pre><p>

Vous pouvez maintenant démarrer en douceur. Retirez la disquette <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> de votre lecteur si vous 
ne l'avez pas encore fait, et faites le salut à trois doigts à votre 
ordinateur (N.D.T. : CTRL+MAJ+SUP), ou son équivalent :

</p><pre class="programlisting">
# <span class="command"><strong>reboot</strong></span>
</pre><p>

L'ordinateur va s'arrêter et redémarrer.

</p></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="SecondStageRestoration"/>6. Seconde étape de la restauration</h2></div></div></div><p>
 
Au redémarrage de l'ordinateur, vérifiez dans le BIOS que l'heure est à 
peu près correcte.</p><p>

Une fois la vérification terminée, sortez du BIOS et redémarrez sur le 
disque dur. Laissez simplement la séquence de démarrage normal de 
l'ordinateur se dérouler. Vous verrez un nombre important de messages 
d'erreurs, essentiellement de type <span class="quote">« <span class="quote"> Impossible de trouver 
bla-bla ! Ouahhh !</span> »</span> Si vous avez bien travaillé jusqu'à 
maintenant, ces messages d'erreurs seront sans importance. Vous n'avez 
pas besoin de linuxconf ou d'apache pour cette opération.

  </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B."><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B.</th></tr><tr><td align="left" valign="top"><p>
 
Vous pouvez aussi démarrer en mode utilisateur unique (single 
user) : à l'invite de lilo, saisissez : <strong class="userinput"><code>linux 
single</code></strong>, mais il vous faudra configurer manuellement votre 
réseau et lancer sshd ou tous les démons nécessaires au redémarrage de 
votre système. Chaque système a sa méthode spécifique.</p></td></tr></table></div><p>

Vous devriez vous identifier sur une console en tant que super 
utilisateur (root) (désolé, pas de session X, pas d'utilisateurs). À 
présent, vous devriez pouvoir utiliser le réseau, par exemple pour 
monter la sauvegarde de votre système via nfs.
 
 </p><p>

Si vous avez effectué la sauvegarde en deux étapes que j'ai suggérées 
pour Arkeia, vous pouvez maintenant restaurer les exécutables et la base 
de données d'Arkeia. Vous devriez pouvoir lancer

</p><pre class="programlisting">
/etc/rc.d/init.d/arkeia start
</pre><p>

et démarrer le serveur. Si vous avez une interface graphique installée 
sur un autre ordinateur, vous devriez pouvoir vous connecter à Arkeia 
sur votre serveur de bandes et préparer la restauration.
 
 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B."><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B.</th></tr><tr><td align="left" valign="top"><p>
 
Pendant la restauration, lisez attentivement la documentation de 
restauration de vos programmes. Par exemple, d'habitude, tar ne restaure 
pas certaines caractéristiques de fichiers, telles que le bit suid. Les 
droits sur les fichiers sont fixées par l'utilisateur avec la 
commande umask. Pour restaurer vos fichiers exactement comme vous les 
avez sauvegardés, utilisez l'option tar avec l'option p. De la même 
manière, vérifiez que votre logiciel de restauration restaure les 
données de façon identique à la sauvegarde.</p></td></tr></table></div><p>

Pour restaurer l'ordinateur de test, saisissez :

</p><pre class="programlisting">
bash# restore.all
</pre><p>

Si vous avez sauvegardé et restauré avec tar, et avez utilisé l'option 
-k (conserver les anciens fichiers, ne pas écraser), vous constaterez un 
nombre important de :

</p><pre class="screen">
tar: usr/sbin/rpcinfo: Could not create file: File exists
tar: usr/sbin/zdump: Could not create file: File exists
tar: usr/sbin/zic: Could not create file: File exists
tar: usr/sbin/ab: Could not create file: File exists
</pre><p>

Ceci est normal, tar refusant d'écraser les fichiers que vous avez 
restaurés pendant la première étape.

</p><p>

Puis redémarrez. À la fermeture, vous verrez un nombre important de messages
d'erreurs, tels que <span class="quote">« <span class="quote">no such pid</span> »</span>.
Ils font partie du processus. Le programme de fermeture utilise les fichiers pid
des démons qui tournaient au moment de la sauvegarde pour fermer les démons qui
n'avaient pas été lancés au dernier démarrage. Et évidemment, il n'ont pas de
PID.</p><p>
Votre système devrait s'initialiser normalement avec beaucoup moins d'erreurs
que précédemment et idéalement sans erreurs. Le test décisif du bon
fonctionnement de votre restauration sur un système basé sur des RPM est de
vérifier tous les paquets :</p><pre class="programlisting">
bash# <span class="command"><strong>rpm -Va</strong></span>
</pre><p>
Si vous constatez des messages d'erreurs de dépendances, vous pouvez lancer la
commande <span class="command"><strong>/etc/cron.daily/prelink</strong></span> pour les enlever.</p><p>
Certains fichiers, tels que les fichiers de configuration et les journaux,
auront naturellement changé ; vous devriez pouvoir mentalement les exclure
du rapport. Vous pouvez rediriger la sortie dans un fichier, et le comparer
grâce à diff avec celui effectué lors de la sauvegarde (/etc/rpmVa.txt), ce qui
accélérera considérablement cette étape. Les utilisateurs d'Emacs devraient se
renseigner sur ses aptitudes à comparer des fichiers.</p><p>
À présent, votre système devrait être lancé et fonctionner. C'est le moment de
tester vos applications, particulièrement celles lancées en tant que démons.
Plus les applications seront sophistiquées, plus il vous faudra effectuer des
tests. S'il y a des utilisateurs distants, interdisez leur l'accès du système,
ou passez le en <span class="quote">« <span class="quote">lecture seule</span> »</span> le temps des tests. Ceci vaut
particulièrement pour les bases de données, afin empêcher une corruption ou une
perte de données pire que ce qu'il pourrait déjà y avoir.</p><p>
Si d'habitude vous redémarrez directement sous X et que vous l'avez désactivé
plus haut, testez X avant de le réactiver. Réactivez-le en rétablissant cette
unique ligne dans le fichier /etc/inittab :</p><pre class="programlisting">
id:5:initdefault:
</pre><p>

Vous pourrez alors aller faire la fête, prendre un peu d'aspirine et 
aller au dodo.

</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="DistributionSpecificNotes"/>7. Notes spécifiques aux distributions</h2></div></div></div><p>
Vous trouverez ci-dessous des remarques nées de l'expérience, distribution par
distribution. Si vous avez des remarques concernant d'autres distributions,
envoyez-les-moi.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="fedora"/>7.1. Fedora</h3></div></div></div><p>
<a class="ulink" href="http://fedora.redhat.com/" target="_top">Fedora</a>
est issue de Red Hat 9. Effectuez les modifications suivantes :</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Fedora utilise <a class="link" href="#grub" title="8.1.  GRUB">
grub</a>, et non lilo. Effectuez les modifications suivantes.</p></li><li class="listitem"><p>
Il n'est plus nécessaire de sauvegarder les bibliothèques kerberos 
séparément, comme dans la <a class="link" href="#redhat80" title="7.3. Red Hat 8.0">Red Hat 8.0</a>. 
Enlevez ou mettez en commentaire cette ligne du fichier <a class="link" href="#save.metadata" title="11.1.5. save.metadata"> <code class="filename">save.metadata</code> 
</a> :

</p><pre class="programlisting">
# RH8. Fedora 1 puts them in /lib # crunch kerberos usr/kerberos/lib/
</pre></li><li class="listitem"><p>
	 
Les noms des bibliothèques nécessaires à la sauvegarde de SSH ont 
changé. Aussi, dans le fichier <a class="link" href="#save.metadata" title="11.1.5. save.metadata"> 
<code class="filename">save.metadata</code></a> :</p><pre class="programlisting">
# save these so we can use ssh for restore. *crack* for RH 7.0 login
# authentication.
# RH 8.0
# crunch usr.lib usr/lib/*crack* usr/lib/libz* usr/lib/libssl*
usr/lib/libcrypto*
# Fedora 1
crunch usr.lib usr/lib/*crack* usr/lib/libz* usr/lib/libwrap* usr/lib/libk*
usr/lib/libgss*
</pre></li><li class="listitem"><p>
 
Dans le fichier <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata"> 
<code class="filename">restore.metadata</code></a>, il y a un plus grand 
nombre de répertoires à sauvegarder.

</p><pre class="programlisting">
# If you boot via an initrd, make sure you build a directory here so
# the kernel can mount the initrd at boot. tmp/.font-unix is for the
# xfs font server.
for dir in mnt/save mnt/zip mnt/cdrom mnt/floppy mnt/imports mnt/dosc mnt/nfs\
proc initrd tmp/.font-unix var/empty/sshd var/lock/subsys var/log; do
</pre><p>
Certains modes sont à configurer :</p><pre class="programlisting">
chmod a-w $target/proc		# Restore /proc's read-only permissions
# Set modes
chmod 0111 $target/var/empty/sshd
chmod 0775 $target/var/lock
# For Fedora. First two for xfs.
chroot $target
chown xfs:xfs /tmp/.font-unix
chmod 1777 $target/tmp/.font-unix
# set the sticky bit.
chmod 1777 $target/tmp
</pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="redhat9"/>7.2. Red Hat 9</h3></div></div></div><p>
Je n'ai jamais travaillé sous Red Hat 9. Les commentaires concernant <a class="link" href="#fedora" title="7.1. Fedora">
Fedora</a>
devraient s'appliquer également à la Red Hat 9.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="redhat80"/>7.3. Red Hat 8.0</h3></div></div></div><p>
Il est nécessaire de modifier Red Hat 8.0 uniquement si vous vous connectez
après la première étape de restauration via ssh. Si vous effectuez la
deuxième étape de restauration avec ssh, effectuez les
modifications suivantes :</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Dans le fichier <code class="filename">
save.metadata</code>, ajoutez les bibliothèques kerberos à la première étape
de sauvegarde :</p><pre class="programlisting">
crunch kerberos usr/kerberos/lib/</pre></li><li class="listitem"><p>
Dans le fichier <code class="filename">
restore.metadata</code>, il y a une boucle qui crée plusieurs répertoires.
Tout d'abord, ajoutez le nom de ces deux répertoires à la liste :
<code class="filename">
/var/empty/sshd</code>
et <code class="filename">
/var/lock/subsys</code>
. Red Hat 8.0 utilisant par défaut ext3fs, a besoin d'un disque en MEV au
démarrage. Aussi assurez-vous que <code class="filename">
initrd</code>
est dans la liste. Puis, s'il n'y est pas encore, ajoutez l'argument <span class="command"><strong>
-p</strong></span>
à la commande mkdir.</p><p>
Le groupe propriétaire du répertoire  <code class="filename">
/var/lock/subsys</code>
est le groupe lock, aussi changez son propriétaire.</p><pre class="programlisting">
chroot $target /bin/chown root:lock /var/lock</pre><p>
Pour finir, <code class="filename">
usr/lib/libcrypto*</code>
a disparu, aussi vous pouvez le retirer de la ligne qui traite <code class="filename">
usr/lib</code>
.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RedHat71"/>7.4. Red Hat 7.1</h3></div></div></div><p>
À l'origine, j'ai utilisé cette distribution sur mon ordinateur de test. Je n'ai
eu aucun problème avec.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RedHat70"/>7.5. Red Hat 7.0</h3></div></div></div><p>
Il semble que cette version ait besoin de libcrack (dans /usr/lib) et de ses
fichiers pour authentifier les utilisateurs. Aussi, dans le fichier <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>, ajoutez ce
qui suit à la ligne qui sauvegarde /usr/lib : /usr/lib/*crack* et activez
cette ligne.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="knoppix"/>7.6. Knoppix</h3></div></div></div><p>
Je n'ai pas utilisé <a class="ulink" href="http://www.knoppix.org/" target="_top">Knoppix</a>, mais
d'autres que moi l'ont fait. <a class="ulink" href="mailto:pon at iki dot fi" target="_top">
Pasi Oja-Nisula</a> nous en parle :</p><div class="blockquote"><blockquote class="blockquote"><p>
Pour moi, le grand avantage de knoppix est que je n'ai pas besoin d'un médium de
démarrage propre à chaque machine mais que je peux utiliser les mêmes outils
tout le temps. Et le support matériel de Knoppix est vraiment excellent. Je n'ai
pas tant d'expérience que ça avec les différentes plates-formes mais toutes les
machines que j'ai essayé ont bien fonctionné, les pilotes scsi ont été trouvés,
etc...</p><p>
J'effectue le travail de restauration en copiant les sauvegardes sur une autre
machine du réseau. Restaurer implique de démarrer à partir du CDROM de
Knoppix, d'aller chercher le fichier metadata.tar.gz sur l'autre machine du
réseau. Puis de d'appeler make.dev, mount.dev, d'aller chercher les autres
fichiers tar.gz, grub et de redémarrer. Il y a bien quelques saisies mais, grâce
à vos scripts, c'est très simple. À moins que vous ne passiez de ide à scsi ou
quelque chose de ce genre, mais même ainsi, ce n'est pas si difficile dans la
mesure où Linux peut facilement être restauré sur différents matériels.</p></blockquote></div><p>
Jetez aussi un coup d'œil à <a class="ulink" href="http://www-106.ibm.com/developerworks/linux/library/l-knopx.html?ca=dgr- lnxw04Knoppix" target="_top">
<span class="quote">« <span class="quote">
Récupération de système avec Knoppix (System recovery with
Knoppix, N.D.T. : pas de version française)</span> »</span>
</a>
.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="ApplicationSpecificNotes"/>8. 
Notes concernant certaines application</h2></div></div></div><p>
Vous trouverez ci-dessous quelques remarques sur la sauvegarde de certaines
applications.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="grub"/>8.1. 
GRUB</h3></div></div></div><p>
Le chargeur d'amorçage par défaut de <a class="link" href="#fedora" title="7.1. Fedora">
Fedora</a>
est le <a class="ulink" href="http://www.gnu.org/software/grub/" target="_top">
Grand Chargeur D'amorçage Unifié (Grand Unified Bootloader (GRUB))</a>
. Il doit être lancé à la fin de la première étape, sans quoi vous ne pourrez
pas démarrer ensuite. Pour l'inclure dans la première étape de restauration,
effectuez les modifications suivantes :</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Éditez la pénultième stance de <a class="link" href="#restore.metadata" title="11.1.6. restore.metadata">
<code class="filename">
restore.metadata</code></a> :</p><pre class="programlisting">
# Now install the boot sector.
# chroot $target /sbin/lilo -C /etc/lilo.conf
chroot $target /sbin/grub-install /dev/hda
</pre></li><li class="listitem"><p>
Ajoutez la stance suivante à <a class="link" href="#save.metadata" title="11.1.5. save.metadata">
<code class="filename">
save.metadata</code></a> :</p><pre class="programlisting">
# Grub requires these at installation time.
crunch usr.share.grub usr/share/grub
</pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="tripwire"/>8.2. 
Tripwire</h3></div></div></div><p>
Si vous utilisez Tripwire ou une autre application qui utilise une base de
données de métadonnées en fichiers, reconstruisez cette base de données
immédiatement après la restauration.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Squid"/>8.3. 
Squid</h3></div></div></div><p>
Squid est un serveur HTTP de cache et de proximité. Il stocke donc une grande
quantité de données temporaires sur le disque dur. Il n'y a aucune raison de les
sauvegarder. Insérez <span class="quote">« <span class="quote">
--exclude /var/spool/squid</span> »</span>
dans la commande tar appropriée du script de sauvegarde de la deuxième étape.
Puis, laissez squid reconstruire sa structure de répertoires lui-même. Ajoutez
une commande pour que squid s'initialise tout seul à la fin du script de
restauration de la deuxième étape. Voilà comment j'ai fait avec ssh dans le
fichier <a class="link" href="#restore.tester" title="11.3.2. restore.tester">
<code class="filename">
restore.tester</code></a> :</p><pre class="programlisting">
ssh $target "mkdir /var/spool/squid ; chown squid:squid /var/spool/squid;\
 /usr/sbin/squid -z; touch /var/spool/squid/.OPB_NOBACKUP"
</pre><p>
La dernière commande crée un fichier de longueur 0 appelé .OPB_NOBACKUP. Il est
à destination d' <a class="link" href="#arkeia" title="8.4.  Arkeia">
Arkeia</a>, et lui dit de ne rien sauvegarder en dessous de ce
répertoire.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="arkeia"/>8.4. 
Arkeia</h3></div></div></div><p>
Ces notes sont basées sur des tests effectués avec Arkeia 4.2.</p><p>
<a class="ulink" href="http://www.arkeia.com/" target="_top">
Arkeia</a>
est un programme de sauvegarde et de restauration qui tourne sur une grande
variété de plate-formes. Vous pouvez utiliser Arkeia dans votre programme de
restauration intégrale de système, mais je ferais deux observations.</p><p>
La première est probablement celle qui pose le plus de problèmes, dans la mesure
où il n'y a pas de solution plus élégante que de sélectionner à la main et dans
le navigateur les répertoires à restaurer. Ceci est dû au fait qu'apparemment,
Arkeia ne dispose pas de mécanisme pour ne pas restaurer des fichiers déjà
présents sur le disque, rien qui soit analogue à  <span class="command"><strong>
tar</strong></span>
et à son option -p. Si vous paramétrez simplement une restauration complète, la
restauration plantera car Arkeia écrasera une bibliothèque utilisée au moment de
la restauration, à savoir <code class="filename">
lib/libc-2.1.1.so</code>
. Une sélection à la main des répertoires à restaurer est moins risquée, aussi
je la recommande.</p><p>
La seconde observation est qu'il vous faudra sauvegarder le dictionnaire des
données et/ou les programmes d'Arkeia. Pour le faire, modifiez le script
<code class="filename">
save.metadata</code>
en ajoutant Arkeia à la liste des répertoires à sauvegarder :</p><pre class="programlisting">
# arkeia specific: tar cf - usr/knox | gzip -c &gt; $zip/arkeia.tar.gz
</pre><p>
C'est ainsi que vous <span class="emphasis"><em>
devez</em></span>
sauvegarder le dictionnaire des données car Arkeia ne le fait pas. C'est un des
reproches que je fais à Arkeia, mais je le résous sur mon propre PC en
sauvegardant le dictionnaire des données sur bande avec <a class="ulink" href="http://www.estinc.com/" target="_top">
The TOLIS Group's BRU</a>
.</p><p>
Le script <code class="filename">
restore.metadata</code>
restaurera le dictionnaire des données automatiquement.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="amanda"/>8.5. Amanda</h3></div></div></div><p>
<a class="ulink" href="http://www.amanda.org/" target="_top">Amanda</a>, archiveur automatique
avancé sur disque en réseau du Maryland (The Advanced Maryland Automatic Network
Disk Archiver), marche plutôt bien avec cet ensemble de scripts. Utilisez le
processus normal de sauvegarde d'Amanda et créez votre première étape comme
d'habitude. Amanda stocke les données sur bande au format tar ou cpio, donc vous
pouvez restaurer des fichiers individuels jusqu'à des images complètes de
sauvegarde. Ce qu'il y a de bien dans une restauration d'image complète est que
vous pouvez utiliser les variantes de ce guide pratique pour restaurer à partir
de l'image ou à partir de la bande directement. J'ai pu réparer ma machine de
tests avec les instructions de W. Curtis Preston <a class="ulink" href="http://www.oreilly.com/catalog/unixbr/" target="_top"><em class="citetitle">et de son
Unix Backup &amp; Recovery</em></a>. Pour plus d'informations,
consultez le lien <a class="link" href="#resources" title="12. Ressources">Ressources</a>. Le chapitre du
livre qui concerne Amanda est <a class="ulink" href="http://www.backupcentral.com/amanda.html" target="_top">en ligne</a>.</p><p>
J'ai effectué deux changements au script <a class="link" href="#restore.tester" title="11.3.2. restore.tester">
<code class="filename">restore.tester</code></a>. Premièrement, je l'ai modifié pour
qu'il accepte un nom de fichier comme argument. Puis, comme la commande d'Amanda
<span class="command"><strong>amrestore</strong></span> décompresse les données pendant qu'il les restaure,
je l'ai réécrit pour qu'il envoie, via la commande cat, le fichier dans le canal
(pipe) plutôt que de le décompresser.</p><p>
La ligne en question ressemble à :</p><pre class="programlisting">
cat $fichier | ssh $cible "umask 000 ; cd / ; tar -xpkf - " </pre><p><span class="command"><strong>$fichier</strong></span> est l'argument du script, l'image récupérée de la
bande par la commande <span class="command"><strong>amrestore</strong></span>.</p><p>
Comme les arguments de la ligne de commande de <span class="command"><strong>tar</strong></span>
interdisent l'écrasement de fichiers, restaurez les images dans l'ordre
<span class="emphasis"><em>inverse</em></span> de leur ordre de création. Restaurez les plus
récents en premier.</p><p>
Avec Amanda, il n'est pas nécessaire de déterminer manuellement les
propriétaires si vous sauvegardez le répertoire des données d'Amanda avec le
fichier <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>.
Ce devrait être une instruction du type :</p><pre class="programlisting">
bash# <span class="command"><strong>chown -R amanda:disk /var/lib/amanda</strong></span>
</pre><p>
Vous pouvez aussi ajouter cette ligne à vos scripts de la deuxième étape de
restauration, comme dans <a class="link" href="#restore.tester" title="11.3.2. restore.tester"><code class="filename">restore.tester</code></a>.</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="SomeAdviceforDisasterRecovery"/>9. Quelques conseils pour une récupération après un désastre</h2></div></div></div><p>
Vous devriez placer les disques zip de chaque ordinateur et les sorties papier
que vous avez effectuées dans un endroit sur de votre boutique. Vous devriez
conserver des copies de ces sauvegardes dans un site de stockage extérieur.
L'intérêt principal d'un site de stockage extérieur est de rendre possible une
récupération après un désastre ; restaurer chaque hôte sur un matériel de
remplacement fait d'ailleurs partie d'une récupération après un désastre.</p><p>
Vous devriez conserver plusieurs disquettes de <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> ainsi que si possible plusieurs
disques zip à l'extérieur. De plus, installez des copies de la distribution de
<a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a> sur plusieurs de vos
ordinateurs, de façon à ce qu'ils puissent se restaurer mutuellement.</p><p>
Vous devriez probablement conserver des copies de ce guide pratique, agrémentées
d'annotations spécifiques à votre site, avec vos sauvegardes et sur votre site
extérieur de conservation des sauvegardes.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="WhatNow"/>10. Et maintenant ?</h2></div></div></div><p>
Ce guide pratique est le résultat d'expérimentations sur un seul ordinateur.
Vous y trouverez sans aucun doute des répertoires ou des fichiers nécessaires à
la première étape de votre sauvegarde. Je n'ai pas essayé de sauvegarder ni de
restaurer X à la première étape, pas plus que je ne me suis occupé d'autres
processeurs qu'Intel.</p><p>
J'apprécierais que vous me fassiez des retours sur vos tests et les
améliorations que vous avez apportées à ces scripts pour vos ordinateurs.
J'encourage aussi les éditeurs de logiciels de sauvegarde à rédiger une
documentation permettant d'effectuer une sauvegarde minimum de leurs produits.
J'aimerais que grâce à ces efforts la communauté Linux dorme un tout petit peu
mieux chaque nuit.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="todo"/>10.1. Liste de travail</h3></div></div></div><p>
Les volontaires sont bienvenus. Avant de commencer un thème, consultez-moi pour
savoir si quelqu'un d'autre y travaille déjà.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
Un éditeur de partitions pour ajuster les limites des partitions dans le fichier
<code class="filename">dev.hdx</code>. Cela permettra aux utilisateurs d'ajuster les
partitions sur un disque dur différent, ou sur le même, mais avec une géométrie
différente, ou encore d'ajuster la taille des partitions sur le même disque dur.
Une interface graphique serait certainement une bonne chose. D'un autre côté, le
programme de la FSF  <a class="ulink" href="http://www.gnu.org/software/parted" target="_top"><code class="filename">parted</code></a>
semble pouvoir répondre partiellement au besoin. Il redimensionne les partitions
existantes, mais avec certaines restrictions.</p></li><li class="listitem"><p>
<a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>
est le seul actuellement à reconnaître certaines partitions FAT, pas toutes.
Ajouter du code à <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>
pour qu'il reconnaisse les autres et écrire les instructions appropriées pour
qu'il les reconstruise dans les fichiers en sortie.</p></li><li class="listitem"><p>
Pour les partitions FAT12 et FAT16, nous ne formatons pas, n'écrivons pas de
zéro dans la partition de telle sorte que MS-DOS 6.x les reconnaisse
correctement. Reportez-vous aux notes sur <span class="command"><strong>fdisk</strong></span> pour une
explication du problème.</p></li><li class="listitem"><p>
Faire un script pour mettre les systèmes de fichiers ext2/3 sur disque
ZIP.</p></li><li class="listitem"><p>
Traduire ce guide dans d'autres langues.</p></li><li class="listitem"><p>
Déterminer dans quelle mesure loadlin ou des programmes de ce type affectent le
processus.</p></li><li class="listitem"><p>
J'ai mentionné le gestionnaire de paquets de (Red Hat Red Hat Package
Manager : rpm) de temps en temps. Quelles sont les commandes deb
équivalentes ?</p></li></ul></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="TheScripts"/>11. Les scripts</h2></div></div></div><p>
Reportez-vous aux notes situées au début de chaque script pour voir le résumé de
ce qu'il fait.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FirstStage"/>11.1. Première étape</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="make.fdisk"/>11.1.1. <code class="filename">make.fdisk</code></h4></div></div></div><p>

    Ce script, lancé pendant la sauvegarde, crée des scripts semblables 
    à <a class="link" href="#make.dev.hda" title="11.1.2. make.dev.hda"><code class="filename">make.dev.hda</code></a> et 
    <a class="link" href="#mount.dev.hda" title="11.1.3. mount.dev.hda"><code class="filename">mount.dev.x</code></a>, 
    plus bas, pour que vous les lanciez à la restauration. Il produit 
    aussi des fichiers de données semblables à <a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.hda</code></a>, plus bas. Le 
    nom du script et du fichier de données qui est produit dépend du 
    périphérique donné en paramètre à ce script. Ce script, lancé à la 
    restauration, crée les partitions sur le disque dur. 
    <code class="filename">make.fdisk</code> est appelé par <a class="link" href="#save.metadata" title="11.1.5. save.metadata"><code class="filename">save.metadata</code></a>, 
    plus bas.
    
</p><pre class="programlisting">
#! /usr/bin/perl

# A perl script to create a script and input file for fdisk to
# re-create the partitions on the hard disk, and format the Linux and
# Linux swap partitions. The first parameter is the fully qualified
# path of the device of the hard disk, e.g. /dev/hda. The two
# resulting files are the script make.dev.x and the data file dev.x
# (where x is the hard drive described, e.g. hda, sdc). make.dev.x is
# run at restore time to rebuild hard drive x, prior to running
# restore.metadata. dev.x is the input file for fdisk.

# Time-stamp: &lt;2004-04-10 13:51:37 root make.fdisk&gt;

# Copyright 2001 through the last date of modification Charles Curley
# except for the subroutine cut2fmt.

# cut2fmt Copyright (c) 1998 Tom Christiansen, Nathan Torkington and
# O'Reilly &amp; Associates, Inc.  Permission is granted to use this code
# freely EXCEPT for book publication.  You may use this code for book
# publication only with the explicit permission of O'Reilly &amp;
# Associates, Inc.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# In addition, as a special exception, Tom Christiansen, Nathan
# Torkington and O'Reilly &amp; Associates, Inc.  give permission to use
# the code of this program with the subroutine cut2fmt (or with
# modified versions of the subroutine cut2fmt that use the same
# license as the subroutine cut2fmt), and distribute linked
# combinations including the two.  You must obey the GNU General
# Public License in all respects for all of the code used other than
# the subroutine cut2fmt.  If you modify this file, you may extend
# this exception to your version of the file, but you are not
# obligated to do so.  If you do not wish to do so, delete this
# exception statement and the subroutine cut2fmt from your version.

# You can also contact the Free Software Foundation at
# http://www.fsf.org/

# Changes:

# 2004 04 10: fdisk v &gt; 2.11 has wider columns. Added code to select
# the appropriate cut string based on fdisk's version.

# 2004 04 09: Added support for Mandrake's idea of devfs. On Mandrake,
# everything is mounted with devfs. So the mount devices are buried
# deep in places like /dev/ide/host0/bus0/target0/lun0/part1 instead
# of places like /dev/hda1, where $DEITY intended they should be. We
# have to reverse from the long devfs device to the shorter old style
# that tomsrtbt uses. The alternative is to keep track in an array of
# which devfs device belongs to which short device.

# 2003 12 29: Changed the regex for detecting whether a file system is
# read-write in the code that builds the mount file(s). The old test
# does not work if mount returns multiple parameters in the 5th field,
# e.g. (rw,errors=remount-ro) on some debian systems. This regex
# assumes that the rw parameter is always listed first, which may not
# always be the case. If it fails, take out the '\('. Thanks to Pasi
# Oja-Nisula &lt;pon at iki dot fi&gt; for pointing this out.

# 2003 01 09: Added support for FAT32. We now create two scripts for
# each hard drive, make.dev.[as]dx and mount.dev.[as]dx. These create
# and make file systems on each partition, and make mount points and
# mount them.

# 2002 12 25: added support to handle W95 extended (LBA) (f) and W95
# FAT 32 partitions. I have tested this for primary but not logical
# partitions.

# 2002 09 08: Added minimal support for ext3fs. We now detect mounted
# ext3fs partitions &amp; rebuild but with no options. The detection
# depends on the command line "dumpe2fs &lt;device&gt; 2&gt;/dev/null | grep -i
# journal" producing no output for an ext2fs, and output (we don't
# care what) for an ext3fs.

# This could stand extension to support non-default ext3 options such
# as the type of journaling. Volunteers?

# 2002 07 25: Bad block checking is now a command line option (-c) at
# the time the product script is run.

# 2002 07 03: Corrected the mechanism for specifying the default
# drive.

# 2001 11 25: Changed the way mke2fs gets its bad block
# list. badblocks does not guess at the block size, so you have to get
# it (from dumpe2fs) and feed it to badblocks. It is simpler to just
# have mke2fs call badblocks, but you do loose the ability to have a
# writing test easily. -- C^2

# 2001 11 25: Changed the regex that extracts partition labels from
# the mount command. This change does not affect the results at all,
# it just makes it possible to use Emacs' perl mode to indent
# correctly. I just escaped the left bracket in the regex. -- C^2

# Discussion:

# fdisk will spit out a file of the form below if you run it as "fdisk
# -l".

# root@tester ~/bin $ fdisk -l /dev/hda

# Disk /dev/hda: 64 heads, 63 sectors, 1023 cylinders
# Units = cylinders of 4032 * 512 bytes

#    Device Boot    Start       End    Blocks   Id  System
# /dev/hda1             1         9     18112+  83  Linux
# /dev/hda2            10      1023   2044224    5  Extended
# /dev/hda5            10       368    723712+  83  Linux
# /dev/hda6           369       727    723712+  83  Linux
# /dev/hda7           728       858    264064+  83  Linux
# /dev/hda8           859       989    264064+  83  Linux
# /dev/hda9           990      1022     66496+  82  Linux swap

# What fdisk does not do is provide output suitable for later
# importing into fdisk, a la sfdisk. This script parses the output
# from fdisk and creates an input file for fdisk. Use the input file
# like so:

# fdisk /dev/hdx &lt; dev.hdx

# For the bare metal restore package, this script also builds a script
# that will execute the above command so you can run it from your zip
# disk. Because the bare metal restore scripts all are in /root/bin,
# the data file and script created by this script are also placed
# there. The same script also creates appropriate Linux file systems,
# either ext2fs, or Linux swap. There is limited support for FAT12,
# FAT16 and FAT32. For anything else, you're on your own.

# Note for FAT32: According to the MS KB, there are more than one
# reserved sectors for FAT32, usually 32, but it can vary. Do a search
# in M$'s KB for "boot sector" or BPB for the gory details. For more
# info than you really need on how boot sectors are used, see
# http://support.microsoft.com/support/kb/articles/Q140/4/18.asp

# You can also edit dev.x to change the sizes of partitions. Don't
# forget, if you change the size of a FAT partition across the 32MB
# boundary, you need to change the type as well! Run "fdisk /dev/hda"
# or some such, then the l command to see the available partition
# types. Then go ahead and edit dev.x appropriately. Also, when moving
# partition boundarys with hand edits, make sure you move both logical
# and extended partition boundaries appropriately.

# Bad block checking right now is a quick read of the partition. A
# writing check is also possible but more difficult. You have to run
# badblocks as a separate command, and pass the bad block list to
# mke2fs in a file (in /tmp, which is a ram disk). You also have to
# know how large the blocks are, which you learn by running
# dumpe2fs. It gets messy and I haven't done it yet. You probably
# don't need it for a new hard drive, but if you have had a hard drive
# crash on you and you are reusing it (while you are waiting for its
# replacement to come in, I presume), then I highly recommend it. Let
# me know how you do it.

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.


# cut2fmt figures out the format string for the unpack function we use
# to slice and dice the output from fdisk. From Christiansen and
# Torkington, Perl Cookbook 5.

sub cut2fmt {
    my (@positions) = @_;
    my $template    = '';
    my $lastpos     = 1;

    foreach $place (@positions) {
        $template .= "A" . ($place - $lastpos) . " ";
        $lastpos = $place;
    }

    $template .= "A*";
    return $template;
}


# Sub gpl, a subroutine to ship the GPL and other header information
# to the current output file.

sub gpl {

print OUTPUT &lt;&lt;FINIS;

# Copyright 2001 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

FINIS

}


# Begin main line code.



# Provide a default device.

# print "\$ARGV[0] is $ARGV[0].\n";

$device = defined ($ARGV[0]) ? $ARGV[0] : "/dev/hda";

# Need to check to see if $device is a sym link. If it is, the mount
# point is the target of the link. (Mandrake) Otherwise we search for
# mount points on $device. Fedora, Red Hat.

if ( -l $device) {

    # It is a sym link. Get the target of the link, then make it into
    # an absolute path, preserving the numbering.

    $mountdev = '/dev/' . readlink ($device);
    $mountdev =~ s|ide/host(\d+)/bus(\d+)/target(\d+)/lun(\d+)/disc|ide/host\1/bus\2/target\3/lun\4|;
} else {
    # not a sym link; just assign it.
    $mountdev = $device;
}

# print "Device is $device; mount device is $mountdev.\n";

# Prepare format string. Here are two format strings I have found
# useful. Here, column numbers are 1 based, i.e. the leftmost column
# is column 1, not column 0 as in Emacs.

# We select a format string according to fdisk's version.

$fdpid = open (FDVER, "fdisk -v |") or die "Couldn't fork: $!\n";
while (&lt;FDVER&gt;) {
    @_ = unpack ("A7 A*", $_);
    $fdver=$_[1];
    $fdver =~ s/[^\d.]//g; # strip non-numbers, non-periods, as in "2.12pre".
}

# print "fdisk version is $fdver\n";

if ($fdver &lt; 2.12) {
# fdisk to 2.11?? Red Hat, Fedora Core 1
    $fmt = cut2fmt (11, 19, 24, 34, 45, 49);
} else {
# fdisk 2.12 &amp; up?? Mandrake 10.0, Fedora Core 2
    $fmt = cut2fmt (12, 14, 26, 38, 50, 55);
}
# print "Format string is $fmt.\n";

# define fields in the array @_.
$dev = 0;
$bootable = 1;
$firstcyl = 2;
$lastcyl = 3;
$parttype = 5;
$partstring = 6;

$target = "\/target";

$outputfilename = $device;
$outputfilename =~ s/\//./g;
$outputfilename = substr ($outputfilename, 1, 100);

$outputfilepath = "\/root\/bin\/";


# Make a hash of the labels.
$mpid = open (MOUNT, "mount -l |") or die "Couldn't fork: $!\n";
while (&lt;MOUNT&gt;) {
    if ($_ =~ /^$mountdev/i) { # is this a line with a partition in it?
#       print $_;               # print it just for grins
        split;
        if ($_[6] ne "") {      # only process if there actually is a label
            $_[6] =~ s/[\[\]]//g; # strike [ and ].
            $labels{$_[0]} = $_[6];
#           print "The label of file device $_[0] is $labels{$_[0]}.\n";
        }


        # We only mount if it's ext2fs or ext3fs and read and write.

        if ($_[4] =~ /ext[23]/ and $_[5] =~ /\(rw/ ) {
            if ($_[0] =~ /ide/i) {

                # We have a devfs system, e.g. Mandrake. This code
                # converts back from the devfs designation to the old
                # /dev/hd* designation for tomsrtb. I have NOT checked
                # this out for drives other than /dev/hda. Also, this
                # code does not handle SCSI drives.

                if ( $_[0] =~ /target0/ &amp;&amp; $_[0] =~ /bus0/ ) {
                    $letter = 'a';
                } elsif ( $_[0] =~ /target1/ &amp;&amp; $_[0] =~ /bus0/) {
                    $letter = 'b';
                } elsif ( $_[0] =~ /target0/ &amp;&amp; $_[0] =~ /bus1/) {
                    $letter = 'c';
                } else {
                    $letter = 'd';
                }
                $_[0] =~ s|/ide/host\d+/bus\d+/target\d+/lun\d+/part|/hd|g;
                $_[0] =~ s/hd/hd$letter/;
            }
            $mountpoints{$_[2]} = $_[0];
#             print "$_[2] is the mountpoint for tomsrtbt device $mountpoints{$_[2]}.\n";
        }
    }
}
close (MOUNT);


$fpid = open (FDISK, "fdisk -l $device |") or die "Couldn't fork: $!\n";

open (OUTPUT, "&gt; $outputfilepath${outputfilename}")
    or die "Couldn't open output file $outputfilepath${outputfilename}.\n";

while (&lt;FDISK&gt;) {
    if ($_ =~ /^$device/i) {    # is this a line with a partition in it?
#       print $_;               # print it just for grins
        chop;                   # kill trailing \r
        @_ = unpack ($fmt, $_);

        # now strip white spaces from cylinder numbers
        @_[$firstcyl] =~ s/[ \t]+//;
        @_[$lastcyl] =~ s/[ \t]+//;
        @_[$parttype] =~ s/[ \t]+//;

        $partnumber = substr(@_[$dev], 8, 10); # get partition number for this line
        # just for grins
#       print "  $partnumber, @_[$firstcyl], @_[$lastcyl], @_[$parttype], @_[$partstring]\n";

        # Here we start creating the input to recreate the partition
        # this line represents.

        print OUTPUT "n\n";
        if ($partnumber &lt; 5) {
            # primary Linux partition
            if (@_[$parttype] == 83) {
                print OUTPUT "p\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) { # in case it's all on one cylinder
                    print OUTPUT "@_[$lastcyl]\n";
                }

                # Now detect if this is an ext3 (journaling)
                # partition. We do this using dumpe2fs to dump the
                # partition and grepping on "journal". If the
                # partition is ext2, there will be no output. If it is
                # ext3, there will be output, and we use that fact to
                # set a command line switch. The command line switch
                # goes into an associative array (hash) so we don't
                # have to remember to reset it to the null string when
                # we're done.

                $dpid = open (DUMPE2FS, "dumpe2fs @_[$dev] 2&gt;/dev/null | grep -i journal |")
                    or die "Couldn't fork: $!\n";
                while (&lt;DUMPE2FS&gt;) {
#                   print "Dumpe2fs: $_";
                    $ext3{$_[$dev]} = "-j ";
                    last;
                }
                close (DUMPE2FS);

                if ($labels{@_[$dev]}) { # do we have a label?
                    $format .= "echo\necho formatting $checking@_[$dev]\n";
                    $format .= "mke2fs $ext3{$_[$dev]}\$blockcheck -L $labels{@_[$dev]} @_[$dev]\n\n";
                } else {
                    $format .= "echo\necho formatting $checking@_[$dev]\n";
                    $format .= "mke2fs $ext3{$_[$dev]}\$blockcheck @_[$dev]\n\n";
                }

                # extended partition
            } elsif (@_[$parttype] == 5) {
                # print ("Creating Extended Partition.\n");
                print OUTPUT "e\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }

                # extended partition, Win95 Ext'd (LBA)
            } elsif (@_[$parttype] eq "f") {
                # print ("Creating Extended LBA Partition.\n");
                print OUTPUT "e\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\nf\n";

                # primary Linux swap partition
            } elsif (@_[$parttype] == 82) {
                print OUTPUT "p\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n82\n";
                $format .= "echo Making @_[$dev] a swap partition.\n";
                $format .= "mkswap \$blockcheck @_[$dev]\n\n";

                # Primary mess-dos partition. We don't handle hidden
                # partitions.
            } elsif ( @_[$parttype] == 1 || @_[$parttype] == 4 || @_[$parttype] == 6
                      || @_[$parttype] eq "b" || @_[$parttype] eq "c"
                      || @_[$parttype] eq "e" ) {
                # print ("Making DOS primary partition.\n");
                print ("dd if=@_[$dev] of=$outputfilepath$outputfilename$partnumber");
                print (" bs=512 count=1\n");
                system ("dd if=@_[$dev] of=$outputfilepath$outputfilename$partnumber bs=512 count=1");
                print OUTPUT "p\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) { # in case it's all on one cylinder
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n@_[$parttype]\n";
                $format .= "echo\necho formatting $checking@_[$dev]\n";
                $format .= "mkdosfs \$blockcheck";
                if ( @_[$parttype] == b || @_[$parttype] == c) {
                    # We have a W9x FAT32 partition. Add a command line switch.
                    $format .= " -F 32";
                }
                $format .= " @_[$dev]\n";
                $format .= "# restore FAT boot sector.\n";
                $format .= "dd if=$outputfilename$partnumber of=@_[$dev] bs=512 count=1\n\n";

            } else {
                # anything else partition
                print OUTPUT "p\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n@_[$parttype]\n";
            }

        } else {
            # logical Linux partition
            if (@_[$parttype] == 83) {
                print OUTPUT "l\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }

                # Now detect if this is an ext3 (journaling)
                # partition. We do this using dumpe2fs to dump the
                # partition and grepping on "journal". If the
                # partition is ext2, there will be no output. If it is
                # ext3, there will be output, and we use that fact to
                # set a command line switch. The command line switch
                # goes into an associative array (hash) so we don't
                # have to remember to reset it to the null string when
                # we're done.

                $dpid = open (DUMPE2FS, "dumpe2fs @_[$dev] 2&gt;/dev/null | grep -i journal |")
                    or die "Couldn't fork: $!\n";
                while (&lt;DUMPE2FS&gt;) {
#                   print "Dumpe2fs: $_";
                    $ext3{$_[$dev]} = "-j ";
                    last;
                }
                close (DUMPE2FS);

                if ($labels{@_[$dev]}) { # do we have a label?
                    $format .= "echo\necho formatting $checking@_[$dev]\n";
                    $format .= "mke2fs $ext3{@_[$dev]}\$blockcheck -L $labels{@_[$dev]} @_[$dev]\n\n";
                } else {
                    $format .= "echo\necho formatting $checking@_[$dev]\n";
                    $format .= "mke2fs $ext3{@_[$dev]}\$blockcheck @_[$dev]\n\n";
                }

                # logical Linux swap partition
            } elsif (@_[$parttype] == 82 ) {
                print OUTPUT "l\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n82\n";
                $format .= "echo Making @_[$dev] a swap partition.\n";
                $format .= "mkswap \$blockcheck @_[$dev]\n\n";

                # Logical mess-dos partition. We don't handle hidden
                # partitions.

            } elsif ( @_[$parttype] == 1 || @_[$parttype] == 4 || @_[$parttype] == 6
                      || @_[$parttype] eq "b" || @_[$parttype] eq "c"
                      || @_[$parttype] eq "e" ) {
#               print ("Making DOS logical partition.\n");
                print ("dd if=@_[$dev] of=$outputfilepath$outputfilename$partnumber");
                print (" bs=512 count=1\n");
                system ("dd if=@_[$dev] of=$outputfilepath$outputfilename$partnumber bs=512 count=1");
                print OUTPUT "l\n$partnumber\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) { # in case it's all on one cylinder
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n@_[$parttype]\n";
                $format .= "echo\necho formatting $checking@_[$dev]\n";
                $format .= "mkdosfs \$blockcheck";
                if ( @_[$parttype] == b || @_[$parttype] == c) {
                    # We have a W9x FAT32 partition. Add a command line switch.
                    $format .= " -F 32";
                }
                $format .= " @_[$dev]\n";
                $format .= "# restore FAT boot sector.\n";
                $format .= "dd if=$outputfilename$partnumber of=@_[$dev] bs=512 count=1\n\n";

            } else {
                # anything else partition
                print OUTPUT "l\n@_[$firstcyl]\n";
                if (@_[$firstcyl] ne @_[$lastcyl]) {
                    print OUTPUT "@_[$lastcyl]\n";
                }
                print OUTPUT "t\n$partnumber\n@_[$parttype]\n";
            }

        }

        # handle bootable partitions
        if (@_[$bootable] =~ /\*/) {
            print OUTPUT "a\n$partnumber\n";
        }
    }
}

print OUTPUT "v\nw\n";

close (OUTPUT);
close (FDISK);


open (OUTPUT, "&gt; ${outputfilepath}make.$outputfilename")
    or die "Couldn't open output file ${outputfilepath}make.$outputfilename.\n";

print OUTPUT &lt;&lt;FINIS;
#! /bin/sh

# A script to restore the partition data of a hard drive and format
# the partitions. Created at bare metal backup time by the Perl script
# make.fdisk.
FINIS

&amp;gpl;

print OUTPUT &lt;&lt;FINIS;

export blockcheck=\$1;

if [ "\$blockcheck" != "-c" ] &amp;&amp; [ -n "\$blockcheck" ]
then
    echo "\${0}: automated restore with no human interaction."
    echo "\${0}: -c: block check during file system making."
    exit 1;
fi

FINIS

# Clean the old partition table out.
print OUTPUT "dd if=/dev/zero of=$device bs=512 count=2\n\nsync\n\n";

print OUTPUT "fdisk $device \&lt; $outputfilename\n\nsync\n\n";
print OUTPUT $format;

print OUTPUT "fdisk -l \"$device\"\n";

close (OUTPUT);

# Now build the script that will build the mount points on the root
# and other partitions.

open (OUTPUT, "&gt; ${outputfilepath}mount.$outputfilename")
    or die "Couldn't open output file ${outputfilepath}make.$outputfilename.\n";

print OUTPUT &lt;&lt;FINIS;
#! /bin/sh

# A script to create a minimal directory tree on the target hard drive
# and mount the partitions on it. Created at bare metal backup time by
# the Perl script make.fdisk.
FINIS

&amp;gpl;

print OUTPUT &lt;&lt;FINIS;

# WARNING: If your Linux system mount partitions across hard drive
# boundaries, you will have multiple "mount.dev.* scripts. You must
# ensure that they run in the proper order. The root partition should
# be mounted first, then the rest in the order they cascade. If they
# cross mount, you'll have to handle that manually.

FINIS


# We have a hash of mount points and devices in %mountpoints. However,
# we have to process them such that directories are built on the
# appropriate target partition. E.g. where /usr/local is on its own
# partition, we have to mount /usr before we build /usr/local. We can
# ensure this by sorting them. Shorter mount point paths will be built
# first. We can't sort a hash directly, so we use an array.

# We build commands to create the appropriate mount points and then
# mount the partitions to the mount points. This is in preparation for
# untarring the contents of the ZIP disk, done in restore.metadata.

foreach $point ( sort keys %mountpoints) {
    print OUTPUT "\n# $point is the mountpoint for tomsrtbt device $mountpoints{$point}.\n";
    print OUTPUT "mkdir $target$point\n";
    print OUTPUT "mount $mountpoints{$point} $target$point\n";
}

print OUTPUT "\nmount | grep -i \"$device\"\n";

close (OUTPUT);

# These scripts are dangerous &amp; should only be visible to root.

chmod 0700, "${outputfilepath}make.$outputfilename";
chmod 0700, "${outputfilepath}mount.$outputfilename";
chmod 0600, "${outputfilepath}$outputfilename";


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="make.dev.hda"/>11.1.2. <code class="filename">make.dev.hda</code></h4></div></div></div><p>
	
    Ce script est un exemple de la production de <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>, plus 
    haut. Il fait appel à des fichiers de données comme <a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.hda</code></a>, plus bas. Il 
    crée des partitions et des systèmes de fichiers sur certains d'entre 
    elles. C'est le premier script lancé à la restauration.

</p><p>

    Si vous êtes suffisamment courageux pour éditer <a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.hda</code></a> (voir plus 
    haut), pour, disons, ajouter une nouvelle partition, il se peut que 
    vous deviez éditer ce script.</p><p>

Si vous voulez que make.dev.hda vérifie les secteurs défectueux quand il
installe un système de fichiers sur les partitions, saisissez en ligne de
commande l'option "-c".</p><pre class="programlisting">
#! /bin/sh

# A script to restore the partition data of a hard drive and format
# the partitions. Created at bare metal backup time by the Perl script
# make.fdisk.

# Copyright 2001 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.


export blockcheck=$1;

if [ "$blockcheck" != "-c" ] &amp;&amp; [ -n "$blockcheck" ]
then
    echo "${0}: automated restore with no human interaction."
    echo "${0}: -c: block check during file system making."
    exit 1;
fi

dd if=/dev/zero of=/dev/hda bs=512 count=2

sync

fdisk /dev/hda &lt; dev.hda

sync

echo
echo formatting /dev/hda1
mkdosfs $blockcheck /dev/hda1
# restore FAT boot sector.
dd if=dev.hda1 of=/dev/hda1 bs=512 count=1

echo
echo formatting /dev/hda2
mke2fs -j $blockcheck -L /boot /dev/hda2

echo
echo formatting /dev/hda3
mke2fs -j $blockcheck -L / /dev/hda3

echo Making /dev/hda5 a swap partition.
mkswap $blockcheck /dev/hda5

fdisk -l "/dev/hda"


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="mount.dev.hda"/>11.1.3. <code class="filename">mount.dev.hda</code></h4></div></div></div><p>

Ce script est un exemple de la production de <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>, plus haut. 
Il crée des points de montage et monte les partitions, préparant le 
système de fichiers cible à la restauration des fichiers. C'est le 
second script lancé à la restauration.

</p><p>

Si vous êtes suffisamment courageux pour éditer <a class="link" href="#dev.hda" title="11.1.4. dev.hda"><code class="filename">dev.hda</code></a> (voir plus haut), 
pour, disons, ajouter une nouvelle partition, il se peut que vous deviez 
éditer ce script.

</p><pre class="programlisting">
#! /bin/sh

# A script to create a minimal directory tree on the target hard drive
# and mount the partitions on it. Created at bare metal backup time by
# the Perl script make.fdisk.

# Copyright 2001 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.


# WARNING: If your Linux system mount partitions across hard drive
# boundaries, you will have multiple "mount.dev.* scripts. You must
# ensure that they run in the proper order. The root partition should
# be mounted first, then the rest in the order they cascade. If they
# cross mount, you'll have to handle that manually.


# / is the mountpoint for /dev/hda3.
mkdir /target/
mount /dev/hda3 /target/

# /boot is the mountpoint for /dev/hda2.
mkdir /target/boot
mount /dev/hda2 /target/boot

mount | grep -i "/dev/hda"


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="dev.hda"/>11.1.4. <code class="filename">dev.hda</code></h4></div></div></div><p>

    Ce fichier de données est utilisé au moment de la restauration. Il 
    est utilisé par <span class="command"><strong>fdisk</strong></span> et est alimenté par <a class="link" href="#make.dev.hda" title="11.1.2. make.dev.hda"><code class="filename">make.dev.hda</code></a>. Il 
    est produit pendant la sauvegarde par <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>. Ceux 
    qui connaissent bien <span class="command"><strong>fdisk</strong></span> reconnaîtront que 
    chaque ligne est une commande ou une valeur de 
    <span class="command"><strong>fdisk</strong></span>, tel qu'un numéro de cylindre. Donc, il est 
    possible de changer les tailles des partitions et d'ajouter de 
    nouvelles partitions en éditant ce fichier. C'est pourquoi la 
    pénultième commande est <span class="command"><strong>v</strong></span>, qui vérifiera la table 
    des partitions avant qu'elle soit écrite.

</p><pre class="programlisting">
n
p
1
1
29
t
1
6
a
1
n
p
2
30
44
n
e
3
45
1023
n
l
45
944
n
l
945
1023
t
6
82
v
w


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="save.metadata"/>11.1.5. <code class="filename">save.metadata</code></h4></div></div></div><p>

C'est le premier script lancé dans le processus de sauvegarde. Il 
appelle <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a>, plus haut. 
Si vous devez sauvegarder un disque dur SCSI ou plusieurs disques durs, 
faites de sorte que l'appel à <a class="link" href="#make.fdisk" title="11.1.1. make.fdisk"><code class="filename">make.fdisk</code></a> soit 
effectué de façon correcte.

</p><pre class="programlisting">
#! /bin/sh

# A script to save certain meta-data off to the boot partition. Useful for
# restoration.

# Time-stamp: &lt;2004-04-29 15:36:52 root save.metadata&gt;

# Copyright 2000 through the last date of modification, Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/


# 2003 01 08: We now age the output from rpm -VA to make back
# comparisons easier.

# The loop that creates directories now has the -p option for mkdir,
# which means you can create parents on the fly if they don't already
# exist.

# initrd is now in the list of directories to create automatically.

# We now exclude more stuff when building the tarballs.

# 2002 07 01: Went to bzip2 to compress the archives, for smaller
# results. This is important in a 100MB ZIP disk. Also some general
# code cleanup.

# 2002 07 01: The function crunch will tar and BZIP2 the
# archives. This is cleaner than the old code, and has better safety
# checking.


# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.


# Crunch: A function to compress the contents of a directory and put
# the archive onto the ZIP disk.

# The first parameter is the name of the archive file to be
# created. The backup location, $zip, will be prepended and the
# extension, "tar.bz2" will be appended.

# All following parameters will be taken as additional directories or
# files to be put into the archive.

function crunch {

if [ -z "$1" ] || [ -z "$2" ]	# Checks if parameter #1 or #2 is zero length.
then
   echo "-Parameter #1 or #2 is missing.-"  # Also if no parameter is passed.
   return 1
else
   local file=$1		# The archive file to create
   shift			# Discard the file name
   local dirs=$@		# The director[y|ies] to archive
   local tarcmd="tar -cjf"	# The tar command.

   $tarcmd  $zip/$file.tar.bz2 $dirs # do it!!

   error=$?			# Preserve the exit code

   if [ $error != 0 ]		# Did we fail?
   then				# Yes
      echo "Tar failed with error $error"
      echo $tarcmd $zip/$file.tar.bz2 $dirs
      exit $error		# return tar's exit code as ours
   fi

   return 0			# For error testing if needed.
fi
}

# Begin the main line code
export zip="/mnt/zip";		# Where we will put archives
#  export save="/mnt/save";

RPMVABACKS=/etc			# where we keep our backups
RPMVAROOT=rpmVa			# The root name of the pg backups
ANC=${RPMVABACKS}/${RPMVAROOT}.anc	# name for the oldest (ancient) backup
OLD=${RPMVABACKS}/${RPMVAROOT}.old	# name for the middling oldest backup
NEW=${RPMVABACKS}/${RPMVAROOT}.txt	# name for the newest backup

if [ -f ${ANC} ]; then
echo "Deleting ${ANC}"
rm ${ANC}
fi

if [ -f ${OLD} ]; then
echo "Aging ${OLD}"
mv ${OLD} ${ANC}
fi

if [ -f ${NEW} ]; then
echo "Aging ${NEW}"
mv ${NEW} ${OLD}
fi


# Now we save hard drive information. Run make.fdisk on each hard
# drive in the order in which it mounted from the root partition. That
# is, run it first on the hard drive with your root partition, then
# any hard drives that mount to the first hard drive, then any hard
# drives that mount to those. For example, if your root partition is
# on /dev/sdc, run "make.fdisk /dev/sdc" first.

# The reason for this is that make.fdisk produces a script to make
# mount points and then mount the appropriate partition to them during
# first stage restore. Mount points must be created on the partition
# where they will reside. The partitions must be mounted in this
# order. For example, if your /var and /var/ftp are both separate
# partitions, then you must mount /, create /var, then mount /var,
# then create /var/ftp. The order in which the script "first.stage"
# runs the mounting scripts is based on their time of creation.

# If necessary, put a line, "sleep 1" between calls to make.fdisk.

echo "Saving hard drive info"
make.fdisk /dev/hda

# back up RPM metadata

echo "Verifying RPMs."

rpm -Va | sort +2 -t ' ' &gt; ${NEW}

echo "Finished verifying RPMs; now mounting the ZIP drive."

# Make sure we have the ZIP drive mounted.
umount $zip
modprobe ppa			# Driver for 100MB parallel port ZIP disk
mount $zip			# It should have ext2fs on partition 1.

# clean it all out
rm -r $zip/*
mkdir $zip/lost+found

echo "`hostname` bare metal ZIP disk, created `date`. `uname -a`" &gt; $zip/README.txt

echo "Building the ZIP drive backups."

# These are in case we need to refer to them while rebuilding. The
# rebuilding process should be mostly automated, but you never
# know....

fdisk -l /dev/hda &gt; $zip/fdisk.hda

ls -al /mnt &gt; $zip/ls.mnt.txt
ls -al / &gt; $zip/ls.root.txt

cd /

# Build our minimal archives on the ZIP disk. These appear to be
# required so we can restore later on.

crunch boot boot
crunch root root --exclude root/.cpan --exclude root/.mozilla
crunch etc etc --exclude etc/samba --exclude X11
crunch lib lib

crunch usr.sbin usr/sbin
crunch usr.bin usr/bin --exclude usr/bin/emacs --exclude usr/bin/emacs-21.2 --exclude usr/bin/emacsclient --exclude usr/bin/emacs-nox --exclude usr/bin/gs --exclude usr/bin/pine --exclude usr/bin/gimp-1.2 --exclude usr/bin/doxygen --exclude usr/bin/postgres --exclude usr/bin/gdb --exclude usr/bin/kmail --exclude usr/bin/splint --exclude usr/bin/odbctest --exclude usr/bin/php --exclude usr/bin/xchat --exclude usr/bin/gnucash --exclude usr/bin/pdfetex  --exclude usr/bin/pdftex --exclude usr/bin/smbcacls --exclude usr/bin/evolution-calendar --exclude usr/bin/xpdf --exclude usr/bin/xmms
crunch sbin sbin
crunch bin bin
crunch dev dev
crunch kerberos usr/kerberos/lib/

# Now optional saves.

# arkeia specific:
# crunch arkeia usr/knox

# save these so we can use ssh for restore. *crack* for RH 7.0 login
# authentication.
crunch usr.lib usr/lib/*crack* usr/lib/libz* usr/lib/libssl* usr/lib/libcrypto*

# save the scripts we used to create the ZIP disk and the ones we will
# use to restore it.
mkdir $zip/root.bin
cp -p /root/bin/* $zip/root.bin
rm $zip/root.bin/*~ $zip/root.bin/#*#

echo "Testing our results."
find $zip -iname "*.bz2" | xargs bunzip2 -t

# Not a normal part of the process: we duplicate the ZIP disk onto an
# NFS mount elsewhere.

#  echo "Backing the ZIP drive to the NFS mount."

#  umount $save
#  mount $save

#  rm -r $save/zip
#  mkdir $save/zip
#  cp -pr $zip $save

du -hs ${zip}*
df -m


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="restore.metadata"/>11.1.6. <code class="filename">restore.metadata</code></h4></div></div></div><p>

Ce script restaure les métadonnées du disque ZIP à la première étape de 
la restauration.

</p><pre class="programlisting">
#! /bin/sh

# A script to restore the meta-data from the ZIP disk. This runs under
# tomsrtbt only after partitions have been rebuilt, file systems made,
# and mounted. It also assumes the ZIP disk has already been
# mounted. Mounting the ZIP disk read only is probably a good idea.

# Time-stamp: &lt;2003-08-23 10:09:16 ccurley restore.metadata&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# 2003 08 23: Oops: tar on tomsrtbt does not respect -p. Try setting
# umask to 0000 instead.

# 2003 02 13: Tar was not preserving permissions on restore. Fixed
# that.

# 2002 07 01: Went to bzip2 to compress the archives, for smaller
# results. This is important in a 100MB ZIP disk. Also some general
# code cleanup.

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

umask 0000

zip="/mnt";			# Where we mount the zip drive.
target="/target";		# Where the hard drive to restore is mounted.

ls -lt $zip			# Warm fuzzies for the user.

cd $target

# Restore the archived metadata files.
for archive in $( ls $zip/*.bz2 ); do
echo $archive
ls -al $archive
bzip2 -dc $archive | tar -xf -
done

# Build the mount points for our second stage restoration and other
# things.

# If you boot via an initrd, make sure you build a directory here so
# the kernel can mount the initrd at boot.

for dir in mnt/zip mnt/cdrom mnt/floppy mnt/imports proc initrd; do
mkdir -p $target/$dir
done

chmod a-w $target/proc		# Restore /proc's read-only permissions

# Restore the scripts we used to create the ZIP disk and the ones we will
# use to restore it. These should be the latest &amp; greatest in case we had
# to do any editing during 1st stage restore.
cp -p $zip/root.bin/* $target/root/bin

# Now install the boot sector.
chroot $target /sbin/lilo -C /etc/lilo.conf

df -m


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="first.stage"/>11.1.7. <code class="filename">first.stage</code></h4></div></div></div><p>

Ce script effectue complètement la première étape de la restauration 
sans intervention humaine.

</p><p>

Si vous désirez vérifier les secteurs défectueux pendant la création des 
systèmes de fichiers des partitions, utilisez l'option de ligne de 
commande <span class="quote">« <span class="quote">-c</span> »</span>.

</p><pre class="programlisting">
#! /bin/sh

# A master script to run the other, detailed scripts. Use this script
# only if you want no human intervention in the restore process. The
# only option is -c, which forces bad block checking during formatting
# of the partitions.

# Time-stamp: &lt;2003-04-24 10:03:07 ccurley first.stage&gt;

# Copyright 2002 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

export blockcheck=$1;

if [ "$blockcheck" != "-c" ] &amp;&amp; [ -n "$blockcheck" ]
then
    echo "${0}: automated restore with no human interaction."
    echo "${0}: -c: block check during file system making."
    exit 1;
fi

cd /mnt/root.bin		# just in case we aren't already where we should be.

for drive in $( ls make.dev.* ); do
    ./$drive $blockcheck;
done


# WARNING: If your Linux system mount partitions across hard drive
# boundaries, you will have multiple "mount.dev.* scripts. You must
# ensure that they run in the proper order, which the loop below may
# not do. The root partition should be mounted first, then the rest in
# the order they cascade. If they cross mount, you'll have to handle
# that manually.

# The "ls -tr" will list the scripts in the order they are created, so
# it might be a good idea to create them (in the script save.metadata)
# in the order in which you should run them.

for drive in $( ls -tr mount.dev.* ); do
    ./$drive;
done

./restore.metadata

# People who are really confident may comment this line in.
# reboot

</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SecondStage"/>11.2. Deuxième étape</h3></div></div></div><p>

Ces scripts sont lancés sur l'ordinateur à sauvegarder ou restaurer.

</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="back.up.all"/>11.2.1. <code class="filename">back.up.all</code></h4></div></div></div><p>

    Ce script effectue une sauvegarde vers un autre ordinateur via un 
    montage NFS. Vous pouvez l'adapter pour effectuer vos sauvegardes 
    vers une bande ou d'autres supports.

</p><pre class="programlisting">
#! /bin/sh

# Back up the entire system to another computer's drive. To make this
# work, we need a convenient chunk of disk space on the remote computer we
# can nfs mount as /mnt/save.

# Time-stamp: &lt;2003-04-24 09:56:05 ccurley back.up.all&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

save="/mnt/save"

# Make sure it's there
umount $save
mount $save

cd /

rm $save/tester.tar.old.gz
mv $save/tester.tar.gz $save/tester.tar.old.gz

# save everything except /mnt, /proc, and nfs mounted directories.

time tar cf - / --exclude /mnt --exclude /proc --exclude $save\
    | gzip -c &gt; $save/tester.tar.gz



</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="back.up.all.ssh"/>11.2.2. <code class="filename">back.up.all.ssh</code></h4></div></div></div><p>

    Ce script fait exactement la même chose que <a class="link" href="#back.up.all" title="11.2.1. back.up.all"><code class="filename">back.up.all</code></a> mais 
    il utilise ssh à la place de nfs.
    
</p><pre class="programlisting">
#! /bin/sh

# Back up the entire system to another computer's drive. To make this
# work, we need a convenient chunk of disk space on the remote
# computer. This version uses ssh to do its transfer, and compresses
# using bz2. This means this script has to know more about the other
# computer, which does not make for good modularization.

# Time-stamp: &lt;2003-04-24 09:56:52 ccurley back.up.all.ssh&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

save="/backs/tester"
backup_server="charlesc"

# rotate the old backups. Do it all in one line to minimze authentication overhead.
ssh $backup_server "rm $save/tester.tar.old.bz2; mv $save/tester.tar.bz2 \
    $save/tester.tar.old.bz2"

# save everything except /mnt, /proc, and squid directories.

time tar cf - / --exclude /mnt --exclude /proc --exclude /var/spool/squid\
    | ssh $backup_server "bzip2 -9 &gt; $save/tester.tar.bz2"


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="restore.all"/>11.2.3. <code class="filename">restore.all</code></h4></div></div></div><p>

Vous utiliserez ce script de restauration si votre sauvegarde a été 
effectuée avec <a class="link" href="#back.up.all" title="11.2.1. back.up.all"><code class="filename">back.up.all</code></a>.</p><pre class="programlisting">
#! /bin/sh

# A script to restore all of the data from an nfs mount. This is our final
# stage restore.

# Time-stamp: &lt;2003-04-24 09:58:51 ccurley restore.all&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

export save="/mnt/save"

mount $save

cd /
gunzip -dc $save/tester.tar.gz | tar -xpkf -

rm /var/run/*.pid

lilo


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="restore.all.ssh"/>11.2.4. <code class="filename">restore.all.ssh</code></h4></div></div></div><p>

Vous utiliserez ce script de restauration si votre sauvegarde a été 
effectuée avec <a class="link" href="#back.up.all.ssh" title="11.2.2. back.up.all.ssh"><code class="filename">back.up.all.ssh</code></a>.

</p><pre class="programlisting">
#! /bin/sh

# A script to restore all of the data using ssh and bunzip2. This is
# our final stage restore.

# Copyright 2000 through the last date of modification Charles Curley.

# Time-stamp: &lt;2003-04-24 09:59:10 ccurley restore.all.ssh&gt;

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

save="/backs/tester/"
backup_server="charlesc"

cd /

ssh $backup_server "cat $save/tester.tar.bz2" | bunzip2 | tar -xpkf -

rm /var/run/*.pid

lilo


</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="BackupServerScripts"/>11.3. Scripts de sauvegarde du serveur</h3></div></div></div><p>

Les scripts ssh décrits ci-dessus sont susceptibles de poser un problème 
de sécurité. Si vous les lancez derrière un pare-feu, le pare-feu doit 
permettre à ssh d'accéder au serveur de sauvegarde. Dans ce cas, il se 
peut qu'un pirate intelligent soit aussi capable de pirater le serveur 
de sauvegarde. Il serait plus sûr d'exécuter les scripts de sauvegarde 
et de restauration sur le serveur de sauvegarde, et de laisser le 
serveur de sauvegarde accéder au pare-feu. Ces scripts sont conçus pour 
fonctionner ainsi. Renommez-les en <code class="filename">get.x</code> et en 
<code class="filename">restore.x</code><code class="filename">x</code> est le nom de 
l'ordinateur cible. Éditez-les (la variable $target 
d'initialisation définissant la cible) pour qu'ils utilisent le nom 
d'hôte de l'ordinateur cible, ou réécrivez-les pour qu'ils utilisent un 
argument de ligne de commande.

</p><p>

    Ces scripts effectuent complètement la sauvegarde et la restauration 
    de la cible, et pas uniquement la première étape de la sauvegarde et 
    de la restauration. Remarquez aussi que 
    <code class="filename">get.tester</code> sauvegarde aussi le disque ZIP, au 
    cas où vous auriez besoin de remplacer un disque ZIP défectueux.

</p><p>

    J'utilise couramment ces scripts.

</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="get.tester"/>11.3.1. <code class="filename">get.tester</code></h4></div></div></div><pre class="programlisting">
#! /bin/sh

# Back up another computer's drive to this system. To make this work, we
# need a convenient chunk of disk space on this computer. This version
# uses ssh to do its transfer, and compresses using bz2. This version was
# developed so that the system to be backed up won't be authenticated to
# log onto the backup computer. This script is intended to be used on a
# firewall. You don't want the firewall to be authenticated to the backup
# system in case the firewall is cracked.

# Time-stamp: &lt;2004-04-03 12:24:12 ccurley get.tester&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

# 2004 04 03: added /sys to the list of excludes. It is a read-only
# pseudo-file system like /proc.

# 2002 07 01: We now set the path on the target to the zip drive with
# a variable. This fixes a bug in the command to eject the zip disk.

# 2002 07 01: The zip disk archives are now in bzip2 format, so this
# script has been changed to reflect that.



# The host name of the computer to be backed up.
target=tester
zip=/mnt/zip

echo Backing up $target

echo Aging the ZIP disk backups.

rm -r $target.old.zip

mv $target.zip $target.old.zip

ssh $target "modprobe ppa ; mount -r $zip"

echo Copying the ZIP disk.

# -r for recursive copy, -p to preserve times and permissions, -q for
# quiet: no progress meter.

scp -qpr $target:$zip $target.zip

du -hs $target.zip


echo Aging the archives

rm $target.tar.old.bz2

mv $target.tar.bz2 $target.tar.old.bz2


echo Backing up $target to the backup server.

ssh $target tar -cf - / --exclude /sys --exclude /mnt --exclude /proc\
    --exclude /var/spool/squid\
    | bzip2 -9 | cat &gt; $target.tar.bz2

echo Testing the results.
find . -iname "*.bz2" | xargs bunzip2 -t

ssh $target "eject $zip"


</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="restore.tester"/>11.3.2. <code class="filename">restore.tester</code></h4></div></div></div><pre class="programlisting">
#! /bin/sh

# A script to restore all of the data to tester via ssh. This is our final
# stage restore.

# Time-stamp: &lt;2003-04-24 09:59:45 ccurley restore.tester&gt;

# Copyright 2000 through the last date of modification Charles Curley.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.

# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

# You can also contact the Free Software Foundation at http://www.fsf.org/

# For more information contact the author, Charles Curley, at
# http://www.charlescurley.com/.

# The host name of the computer to be restored.

target=tester

bunzip2 -dc $target.tar.bz2 | ssh $target "cd / ; tar -xpkf - "

ssh $target lilo


</pre></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="resources"/>12. Ressources</h2></div></div></div><p>

    Dans le désordre. Il y a des points que vous avez peut-être envie 
    d'approfondir. Une présence dans cette liste ne doit pas être 
    comprise comme une approbation. En fait, bien souvent, je n'ai pas 
    utilisé le produit et ne peux pas le commenter.
    
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>

<a class="ulink" href="http://www.oreilly.com/catalog/unixbr/author.html" target="_top">W. Curtis 
Preston</a> et son excellent <a class="ulink" href="http://www.oreilly.com/catalog/unixbr/" target="_top"><em class="citetitle">Unix Backup &amp; Recovery</em></a>. Voici le 
livre qui m'a fait démarrer ce travail de restauration intégrale de 
systèmes. Je le recommande chaleureusement ; <a class="ulink" href="http://www2.linuxjournal.com/lj-issues/issue78/3839.html" target="_top">lire mon 
bilan</a>.

</p></li><li class="listitem"><p>


Une vieille (datant de 2000) liste de <a class="ulink" href="http://www.fokus.gmd.de/linux/linux-distrib-small.html" target="_top">petites 
distributions Linux.</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.toms.net/rb" target="_top"> tomsrtbt</a>, 
<span class="quote">« <span class="quote">l'essentiel de Linux sur une disquette.</span> »</span> Tom est aussi lié 
à d'autres petites distributions.

</p></li><li class="listitem"><p>

    Le <a class="ulink" href="http://www.tldp.org/" target="_top">projet de documentation 
    Linux</a>. En particulier, jetez un coup d'œil à 
    « <span class="citetitle">LILO, Linux Crash Rescue 
    HOW-TO</span> ».

</p></li><li class="listitem"><p>

Le programme de la Free Software Foundation <a class="ulink" href="http://www.gnu.org/software/parted" target="_top"><code class="filename">parted</code></a> 
pour éditer (agrandir, diminuer, déplacer) les partitions.

</p></li><li class="listitem"><p>

<a class="ulink" href="http://qtparted.sourceforge.net/" target="_top">QtParted</a> semble 
faire la même chose mais avec une interface graphique.

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.partimage.org/" target="_top">Partition Image</a> pour les 
sauvegardes des partitions.

</p><p>

De sa page eb : <span class="quote">« <span class="quote">Partition Image est un utilitaire 
Linux/UNIX qui sauvegarde des partitions d'un grand nombre de formats 
(voir plus bas) dans un fichier image. Le fichier image peut être 
comprimé au format GZIP/BZIP2 pour économiser de l'espace, et être 
découpé en plusieurs fichiers destinés à être copiés sur des supports 
amovibles (des disques ZIP par exemple) La partition peut être 
sauvegardée sur le réseau depuis la version 0.6.0.</span> »</span>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://sourceforge.net/projects/bacula" target="_top"> Bacula</a> est 
un produit de sauvegarde sous licence GPL comprenant du code pour 
effectuer une restauration intégrale de système, qui a été inspiré en 
partie par ce guide pratique.

</p></li><li class="listitem"><p>

<span class="quote">« <span class="quote"><a class="ulink" href="http://www.feyrer.de/g4u/" target="_top">g4u ghost pour unix 
('ghost for unix')</a> est une disquette/CDROM de 
démarrage basée sur NetBSD qui permet de cloner facilement des disques 
durs de PC devant être déployés via FTP avec une configuration commune 
sur un certain nombre de PC. La disquette (ou le CDROM) a deux 
fonctions. La première est de transférer l'image comprimée d'un disque 
dur local vers un serveur FTP. L'autre est de restaurer cette image par 
FTP, la décompresser et la restaurer sur un disque; la configuration 
réseau est obtenu par DHCP. Le disque dur étant traité comme une image, 
n'importe quel système d'exploitation ou de fichiers peut être déployé à 
l'aide de g4u.</span> »</span>

</p></li><li class="listitem"><p>

<span class="quote">« <span class="quote">Nous présentons <a class="ulink" href="http://www.cs.utah.edu/flux/papers/frisbee-usenix03-base.html" target="_top">Frisbee</a>,
qui est un système destiné à sauvegarder, transférer et installer les
images de disques entiers, avec comme objectifs d'être rapide et
extensible dans un environnement de réseau local. Techniquement, Frisbee
utilise une méthode particulière de compression qui tient compte des
systèmes de fichiers, un protocole maison de diffusion sélective de
niveau application et un découpage de trames flexible de niveau
application. De cette conception, il en résulte un système capable de
distribuer rapidement et de façon fiable l'image d'un disque à de
nombreux clients simultanés. Par exemple, Frisbee est capable d'écrire
un total de 50 giga-octets de données sur 80 disques en 34 secondes,
ceci sur des PC standards. Nous décrivons la conception et la mise en
œuvre de Frisbee, examinons les décisions importantes de
conception et évaluons ses performances.</span> »</span>

</p></li><li class="listitem"><p>

Il y a un certain nombre de distributions disponibles sous forme de clés 
USB. Rendez-vous sur le site de <a class="ulink" href="http://www.distrowatch.com/" target="_top">DistroWatch</a> pour plus de 
détails.

</p></li><li class="listitem"><p>

Kits de secours basées sur CDROM. Ceci n'est pas une liste 
exhaustive. Si vous en connaissez une (ou du moins qui prétend en être 
une), <a class="ulink" href="charlescurley CHEZ charlescurley POINT com" target="_top">faites-le moi savoir.</a> Vous 
trouverez des informations plus récentes sur <a class="ulink" href="http://www.distrowatch.com/" target="_top">DistroWatch</a>.

</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>

Le <a class="ulink" href="http://www.microwerks.net/~hugo/" target="_top">Mondo</a> de Hugo 
Rabson <span class="quote">« <span class="quote">... crée un ou plusieurs CDROM (ou disquettes + bandes) 
amorçables de secours contenant tout ou partie de votre système 
de fichiers. En cas de perte catastrophique de données, vous pourrez 
restaurer intégralement.</span> »</span>

</p></li><li class="listitem"><p>

Le <a class="ulink" href="http://crashrecovery.org/" target="_top">kit de récupération après une 
panne irrécupérable (Crash Recovery Kit for Linux)</a>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www-106.ibm.com/developerworks/linux/library/l-knopx.html?ca=dgr- lnxw04Knoppix" target="_top"><span class="quote">« <span class="quote">Récupération 
de système avec Knoppix (System recovery with Knoppix)</span> »</span></a> 
est une bonne introduction à la récupération de système en général et 
dispose de liens <a class="ulink" href="http://www.knoppix.org/" target="_top">Knoppix</a>utiles.

</p></li><li class="listitem"><p>

<span class="quote">« <span class="quote"><a class="ulink" href="http://emergencycd2.sourceforge.net/" target="_top">Cool Linux 
CD</a> est une version de Linux sur CDROM. Il est basé sur le 
noyau 2.4 et on y trouve des logiciels libres et de 
démonstration.</span> »</span>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://www.sysresccd.org/index.en.php" target="_top">SystemRescueCd</a> <span class="quote">« <span class="quote"> 
est un système linux monté sur un CDROM amorçable, destiné à réparer 
votre système et vos données après une panne irrécupérable. Il a aussi 
pour but de faciliter les tâches d'administration de votre ordinateur, 
telles que créer et éditer les partitions du disque dur. Il contient un 
bon nombre d'utilitaires système (parted, partimage, fstools, ...) et 
basiques (éditeurs, midnight commander, outils réseau). Il a pour 
objectif d'être facile à utiliser : démarrez simplement avec le 
CDROM et vous pourrez tout faire. Son noyau supporte les principaux 
systèmes de fichiers (ext2/ext3, reiserfs, xfs, jfs, vfat, ntfs, 
iso9660) et réseaux (samba et nfs).</span> »</span>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://syslinux.zytor.com/" target="_top">Syslinux</a> crée le code de 
démarrage pour des images de disquettes, de CDROM et de PXE 
(Environnement de pré-exécution) Intel. Il ne dépend pas d'une image de 
disquette. Vous pourrez créer vos propres CDROM à l'aide de certains 
outils, tels que <a class="ulink" href="http://www.toms.net/rb" target="_top">tomsrtbt</a>.

</p></li><li class="listitem"><p>

Au cas où voudriez vous débrouiller tout seul : <span class="quote">« <span class="quote"><a class="ulink" href="http://www.linux-live.org/" target="_top">Linux Live</a> est un ensemble de 
scripts bash qui vous permet de créer votre propre LiveCD à partir de 
n'importe quelle distribution Linux. Installez simplement votre 
distribution favorite, enlevez tous les fichiers superflus (les pages de 
manuel, par exemple, et tous les autres fichiers que vous n'estimez pas 
importants).</span> »</span>

</p></li><li class="listitem"><p>

<span class="quote">« <span class="quote">Le <a class="ulink" href="http://www.linbox.com/en/ppart.html" target="_top">CDROM 
PPART</a> vous permet de générer un CD amorçable de récupération de 
système à partir de disques durs précédemment sauvegardés.</span> »</span>

</p></li><li class="listitem"><p>

<a class="ulink" href="http://rescuecd.sourceforge.net/" target="_top">Timo's Rescue CD Set (Le 
CD de secours de Timo)</a> : <span class="quote">« <span class="quote">Cette boîte à outils 
constitue mon approche pour générer facilement un CD amorçable de 
sauvegarde de système, qui peut aisément être adapté à vos besoins. Le 
projet est en train de se transformer en une distribution "debian sur 
CDROM", ce qui fait qu'il n'est pas seulement utilisable comme CD de 
secours mais que l'on peut aussi installer une debian complète sur le 
CD.</span> »</span>

</p></li><li class="listitem"><p>

La <a class="ulink" href="http://www.frozentech.com/content/livecd.php" target="_top">liste des 
distributions basées sur CDROM</a> comprend plus de distributions 
basées sur CDROM.

</p></li></ul></div></li></ul></div></div><div class="appendix"><h2 class="title"><a id="appendix1gfdl"/>A. License GNU Free Documentation</h2><p>
Version 1.1, March 2000</p><div class="blockquote"><blockquote class="blockquote"><p>
Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p></blockquote></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl02"/>0. 
PREAMBULE</h2></div></div></div><p>
The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.</p><p>
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.</p><p>
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl03"/>1. 
APPLICABILITY AND DEFINITIONS</h2></div></div></div><p>
This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".</p><p>
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.</p><p>
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.</p><p>
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.</p><p>
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.</p><p>
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".</p><p>
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.</p><p>
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl04"/>2. 
VERBATIM COPYING</h2></div></div></div><p>
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.</p><p>
You may also lend copies, under the same conditions stated above, and you may publicly display copies.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl05"/>3. 
COPYING IN QUANTITY</h2></div></div></div><p>
If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.</p><p>
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.</p><p>
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.</p><p>
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl06"/>4. 
MODIFICATIONS</h2></div></div></div><p>
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:</p><div class="orderedlist"><ol class="orderedlist" type="A"><li class="listitem"><p>
Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.</p></li><li class="listitem"><p>
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).</p></li><li class="listitem"><p>
State on the Title page the name of the publisher of the Modified Version, as the publisher.</p></li><li class="listitem"><p>
Preserve all the copyright notices of the Document.</p></li><li class="listitem"><p>
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.</p></li><li class="listitem"><p>
Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.</p></li><li class="listitem"><p>
Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.</p></li><li class="listitem"><p>
Include an unaltered copy of this License.</p></li><li class="listitem"><p>
Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.</p></li><li class="listitem"><p>
Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.</p></li><li class="listitem"><p>
In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.</p></li><li class="listitem"><p>
Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.</p></li><li class="listitem"><p>
Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.</p></li><li class="listitem"><p>
Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.</p></li></ol></div><p>
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.</p><p>
You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.</p><p>
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.</p><p>
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl07"/>5. 
COMBINING DOCUMENTS</h2></div></div></div><p>
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.</p><p>
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.</p><p>
In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl08"/>6. 
COLLECTIONS OF DOCUMENTS</h2></div></div></div><p>
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.</p><p>
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl09"/>7. 
AGGREGATION WITH INDEPENDENT WORKS</h2></div></div></div><p>
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.</p><p>
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl10"/>8. 
TRANSLATION</h2></div></div></div><p>
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl11"/>9. 
TERMINATION</h2></div></div></div><p>
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl12"/>10. 
FUTURE REVISIONS OF THIS LICENSE</h2></div></div></div><p>
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See <a class="ulink" href="http://www.gnu.org/copyleft/" target="_top">
http://www.gnu.org/copyleft/</a>
.</p><p>
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="gfdl13"/>11. 
How to use this License for your documents</h2></div></div></div><p>
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:</p><div class="blockquote"><blockquote class="blockquote"><p>
 Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". </p></blockquote></div><p>
If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.</p><p>
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.</p></div></div><div class="footnotes"><br/><hr width="100" align="left"/><div id="ftn.d0e819" class="footnote"><p><a href="#d0e819" class="para"><sup class="para">[1] </sup></a>

Je fais ressortir copie parce que <span class="command"><strong>mkisofs</strong></span> détruira le 
fichier dans le répertoire où il fabrique l'image ISO.

</p></div></div></div></body></html>