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
|
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>backup2l: READMEREADME</title>
<style>
html {
line-height: 1.35;
font-family: Georgia, serif;
font-size: 18px;
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 42em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 720px) {
body {
font-size: 0.9em;
padding: 1em;
}
h1 {
font-size: 1.8em;
}
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
font-size: 75%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
line-height: 1.15;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<h1
id="backup2l---a-low-maintenance-backuprestore-tool"><em>backup2l</em> -
A Low-Maintenance Backup/Restore Tool</h1>
<p>by Gundolf Kiefer, 2001-2022</p>
<h2 id="description">Description</h2>
<p><em>backup2l</em> is a lightweight command line tool for generating,
maintaining and restoring backups on a mountable file system (e. g. hard
disk). The main design goals are are low maintenance effort, efficiency,
transparency and robustness. In a default installation, backups are
created autonomously by a cron script.</p>
<p><em>backup2l</em> supports hierarchical differential backups with a
user-specified number of levels and backups per level. With this scheme,
the total number of archives that have to be stored only increases
logarithmically with the number of differential backups since the last
full backup. Hence, small incremental backups can be generated at short
intervals while time- and space-consuming full backups are only sparsely
needed.</p>
<p>The restore function allows to easily restore the state of the file
system or arbitrary directories/files of previous points in time. The
ownership and permission attributes of files and directories are
correctly restored.</p>
<p>An open driver architecture allows to use virtually any archiving
program as a backend. Built-in drivers support .tar.gz, .tar.bz2, or
.afioz files. Further user-defined drivers can be added as described in
the supplied sample configuration file ‘first-time.conf’.</p>
<p>An integrated split-and-collect function allows to comfortably
transfer all or selected archives to a set of CDs or other removable
media.</p>
<p>All control files are stored together with the archives on the backup
device, and their contents are mostly self-explaining. Hence, in the
case of an emergency, a user does not only have to rely on the restore
functionality of <em>backup2l</em>, but can - if necessary - browse the
files and extract archives manually.</p>
<p>For deciding whether a file is new or modified, <em>backup2l</em>
looks at its name, modification time, size, ownership and permissions.
Unlike other backup tools, the i-node is not considered in order to
avoid problems with non-Unix file systems like FAT32.</p>
<h2 id="screenshots">Screenshots</h2>
<p><strong>a) Generating a backup: mail received from cron
daemon</strong></p>
<p>The monitored area covers 26803 (=23733+3053) files and directories
and over 2.2 GB of data. Look at the time stamps!</p>
<pre><code>backup2l v1.6 by Gundolf Kiefer
Wed Nov 6 07:58:00 CET 2019
Mounting /disk2...
Running pre-backup procedure...
writing dpkg selections to /root/getselections.log...
Removing old backups...
Preparing differential level-3 backup <all.1104> based on <all.1103>...
657 / 23745 file(s), 94 / 3058 dir(s), 63945 / 2332639 KB (uncompressed)
skipping: 498 file(s), 14 dir(s), 3144527 KB (uncompressed)
Creating archive...
Checking TOC of tar file (< real file, > archive entry)...
Creating check file for <all.1104>...
Wed Nov 6 07:58:41 CET 2019
Summary
=======
Archive Date | Size (KB) | Skipped Files+Dirs | New Obs. | Errors
------------------------------------------------------------------------------
all.1 2019-07-15 | 1475248 | 620 17795 |17795 0 | 45
all.101 2019-07-27 | 235720 | 617 17002 | 812 1605 | 2
all.102 2019-08-19 | 210648 | 626 23446 | 7077 633 | 1
all.103 2019-08-30 | 125396 | 670 23796 | 1963 1613 | 0
all.104 2019-09-07 | 203880 | 669 25597 | 5353 3552 | 1
all.105 2019-09-20 | 87076 | 409 24333 | 2192 3456 | 6
all.106 2019-10-01 | 88492 | 409 27611 | 4591 1313 | 1
all.107 2019-10-12 | 67624 | 409 26589 | 1194 2216 | 0
all.108 2019-10-21 | 111580 | 506 26553 | 1351 1387 | 0
all.1081 2019-10-21 | 948 | 506 26554 | 70 69 | 0
all.1082 2019-10-22 | 164 | 506 26554 | 90 90 | 0
all.1083 2019-10-23 | 46680 | 506 27814 | 1465 205 | 0
all.1084 2019-10-24 | 29672 | 506 28578 | 1111 347 | 0
all.1085 2019-10-25 | 28272 | 506 26869 | 282 1991 | 0
all.1086 2019-10-26 | 45000 | 506 26866 | 314 317 | 0
all.1087 2019-10-27 | 33136 | 506 27162 | 610 314 | 0
all.1088 2019-10-28 | 12280 | 506 27645 | 673 190 | 0
all.11 2019-10-29 | 822056 | 506 27725 |13582 3652 | 8
all.1101 2019-10-30 | 20888 | 506 23707 | 858 4876 | 0
all.1102 2019-10-31 | 11336 | 512 26807 | 3372 272 | 0
all.1103 2019-11-05 | 312 | 512 26786 | 173 194 | 0
all.1104 2019-11-06 | 49592 | 512 26803 | 751 734 | 0
Filesystem Size Used Avail Use% Mounted on
/dev/hde1 5.8G 3.5G 2.3G 61% /disk2
Unmounting /disk2...</code></pre>
<p><strong>b) Restoring directory from snapshot into working
directory</strong></p>
<p>Restoring the directory <em>/home/home/gundolf/prog/</em> from
snapshot <em><all.1102></em> into the current working
directory:</p>
<pre><code>lilienthal:/scratch# backup2l -t 1102 -r /home/gundolf/prog/
backup2l v1.6 by Gundolf Kiefer
Mounting /disk2...
Active files in <all.1102>: 246
found in all.1102: 119 ( 127 left)
found in all.1101: 7 ( 120 left)
found in all.11: 120 ( 0 left)
Restoring 35 directories...
Restoring files...
all.11: 120 file(s)
all.1101: 7 file(s)
all.1102: 119 file(s)
Unmounting /disk2...
lilienthal:/scratch#</code></pre>
<h2 id="installation-from-main-source-directory">Installation (from main
source directory)</h2>
<ul>
<li>Debian Linux: Type ‘debuild’ to get a binary deb archive.</li>
<li>Others: Run ‘./install-sh’ or ‘sh install-sh’ and follow the
instructions.</li>
</ul>
<h2 id="release-notes">Release Notes</h2>
<ul>
<li>Releases from 1.5 upwards are git-tagged accordingly.</li>
<li>Git repository: https://github.com/gkiefer/backup2l</li>
</ul>
</body>
</html>
|