1 |
dpavlin |
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2 |
|
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
3 |
|
|
<head> |
4 |
|
|
<title>BackupPC</title> |
5 |
|
|
<link rev="made" href="mailto:craig@atheros.com" /> |
6 |
|
|
</head> |
7 |
|
|
|
8 |
|
|
<body style="background-color: white"> |
9 |
|
|
<table border="0" width="100%" cellspacing="0" cellpadding="3"> |
10 |
|
|
<tr><td class="block" style="background-color: #cccccc" valign="middle"> |
11 |
|
|
<big><strong><span class="block"> BackupPC</span></strong></big> |
12 |
|
|
</td></tr> |
13 |
|
|
</table> |
14 |
|
|
|
15 |
|
|
<p><a name="__index__"></a></p> |
16 |
|
|
<!-- INDEX BEGIN --> |
17 |
|
|
|
18 |
|
|
<ul> |
19 |
|
|
|
20 |
|
|
<li><a href="#backuppc_introduction">BackupPC Introduction</a></li> |
21 |
|
|
<ul> |
22 |
|
|
|
23 |
|
|
<li><a href="#overview">Overview</a></li> |
24 |
|
|
<li><a href="#backup_basics">Backup basics</a></li> |
25 |
|
|
<li><a href="#resources">Resources</a></li> |
26 |
|
|
<li><a href="#road_map">Road map</a></li> |
27 |
|
|
<li><a href="#you_can_help">You can help</a></li> |
28 |
|
|
</ul> |
29 |
|
|
|
30 |
|
|
<li><a href="#installing_backuppc">Installing BackupPC</a></li> |
31 |
|
|
<ul> |
32 |
|
|
|
33 |
|
|
<li><a href="#requirements">Requirements</a></li> |
34 |
|
|
<li><a href="#how_much_disk_space_do_i_need">How much disk space do I need?</a></li> |
35 |
|
|
<li><a href="#step_1__getting_backuppc">Step 1: Getting BackupPC</a></li> |
36 |
|
|
<li><a href="#step_2__installing_the_distribution">Step 2: Installing the distribution</a></li> |
37 |
|
|
<li><a href="#step_3__setting_up_config_pl">Step 3: Setting up config.pl</a></li> |
38 |
|
|
<li><a href="#step_4__setting_up_the_hosts_file">Step 4: Setting up the hosts file</a></li> |
39 |
|
|
<li><a href="#step_5__client_setup">Step 5: Client Setup</a></li> |
40 |
|
|
<li><a href="#step_6__running_backuppc">Step 6: Running BackupPC</a></li> |
41 |
|
|
<li><a href="#step_7__talking_to_backuppc">Step 7: Talking to BackupPC</a></li> |
42 |
|
|
<li><a href="#step_8__cgi_interface">Step 8: CGI interface</a></li> |
43 |
|
|
<li><a href="#how_backuppc_finds_hosts">How BackupPC Finds Hosts</a></li> |
44 |
|
|
<li><a href="#other_installation_topics">Other installation topics</a></li> |
45 |
|
|
<li><a href="#fixing_installation_problems">Fixing installation problems</a></li> |
46 |
|
|
</ul> |
47 |
|
|
|
48 |
|
|
<li><a href="#restore_functions">Restore functions</a></li> |
49 |
|
|
<ul> |
50 |
|
|
|
51 |
|
|
<li><a href="#cgi_restore_options">CGI restore options</a></li> |
52 |
|
|
<li><a href="#commandline_restore_options">Command-line restore options</a></li> |
53 |
|
|
</ul> |
54 |
|
|
|
55 |
|
|
<li><a href="#archive_functions">Archive functions</a></li> |
56 |
|
|
<ul> |
57 |
|
|
|
58 |
|
|
<li><a href="#configuring_an_archive_host">Configuring an Archive Host</a></li> |
59 |
|
|
<li><a href="#starting_an_archive">Starting an Archive</a></li> |
60 |
|
|
</ul> |
61 |
|
|
|
62 |
|
|
<li><a href="#backuppc_design">BackupPC Design</a></li> |
63 |
|
|
<ul> |
64 |
|
|
|
65 |
|
|
<li><a href="#some_design_issues">Some design issues</a></li> |
66 |
|
|
<li><a href="#backuppc_operation">BackupPC operation</a></li> |
67 |
|
|
<li><a href="#storage_layout">Storage layout</a></li> |
68 |
|
|
<li><a href="#compressed_file_format">Compressed file format</a></li> |
69 |
|
|
<li><a href="#rsync_checksum_caching">Rsync checksum caching</a></li> |
70 |
|
|
<li><a href="#file_name_mangling">File name mangling</a></li> |
71 |
|
|
<li><a href="#special_files">Special files</a></li> |
72 |
|
|
<li><a href="#attribute_file_format">Attribute file format</a></li> |
73 |
|
|
<li><a href="#optimizations">Optimizations</a></li> |
74 |
|
|
<li><a href="#limitations">Limitations</a></li> |
75 |
|
|
<li><a href="#security_issues">Security issues</a></li> |
76 |
|
|
</ul> |
77 |
|
|
|
78 |
|
|
<li><a href="#configuration_file">Configuration File</a></li> |
79 |
|
|
<ul> |
80 |
|
|
|
81 |
|
|
<li><a href="#modifying_the_main_configuration_file">Modifying the main configuration file</a></li> |
82 |
|
|
<li><a href="#configuration_file_includes">Configuration file includes</a></li> |
83 |
|
|
</ul> |
84 |
|
|
|
85 |
|
|
<li><a href="#configuration_parameters">Configuration Parameters</a></li> |
86 |
|
|
<ul> |
87 |
|
|
|
88 |
|
|
<li><a href="#general_server_configuration">General server configuration</a></li> |
89 |
|
|
<li><a href="#what_to_backup_and_when_to_do_it">What to backup and when to do it</a></li> |
90 |
|
|
<li><a href="#general_perpc_configuration_settings">General per-PC configuration settings</a></li> |
91 |
|
|
<li><a href="#email_reminders__status_and_messages">Email reminders, status and messages</a></li> |
92 |
|
|
<li><a href="#cgi_user_interface_configuration_settings">CGI user interface configuration settings</a></li> |
93 |
|
|
</ul> |
94 |
|
|
|
95 |
|
|
<li><a href="#version_numbers">Version Numbers</a></li> |
96 |
|
|
<li><a href="#author">Author</a></li> |
97 |
|
|
<li><a href="#copyright">Copyright</a></li> |
98 |
|
|
<li><a href="#credits">Credits</a></li> |
99 |
|
|
<li><a href="#license">License</a></li> |
100 |
|
|
</ul> |
101 |
|
|
<!-- INDEX END --> |
102 |
|
|
|
103 |
|
|
<hr /> |
104 |
|
|
<p> |
105 |
|
|
</p> |
106 |
|
|
<h1><a name="backuppc_introduction">BackupPC Introduction</a></h1> |
107 |
|
|
<p>This documentation describes BackupPC version 2.1.0, |
108 |
|
|
released on 20 Jun 2004.</p> |
109 |
|
|
<p> |
110 |
|
|
</p> |
111 |
|
|
<h2><a name="overview">Overview</a></h2> |
112 |
|
|
<p>BackupPC is a high-performance, enterprise-grade system for backing up |
113 |
|
|
Unix, Linux and WinXX PCs, desktops and laptops to a server's disk. |
114 |
|
|
BackupPC is highly configurable and easy to install and maintain.</p> |
115 |
|
|
<p>Given the ever decreasing cost of disks and raid systems, it is now |
116 |
|
|
practical and cost effective to backup a large number of machines onto |
117 |
|
|
a server's local disk or network storage. For some sites this might be |
118 |
|
|
the complete backup solution. For other sites additional permanent |
119 |
|
|
archives could be created by periodically backing up the server to tape.</p> |
120 |
|
|
<p>Features include:</p> |
121 |
|
|
<ul> |
122 |
|
|
<li> |
123 |
|
|
A clever pooling scheme minimizes disk storage and disk I/O. |
124 |
|
|
Identical files across multiple backups of the same or different PC |
125 |
|
|
are stored only once (using hard links), resulting in substantial |
126 |
|
|
savings in disk storage and disk writes. |
127 |
|
|
<p></p> |
128 |
|
|
<li> |
129 |
|
|
Optional compression provides additional reductions in storage |
130 |
|
|
(around 40%). The CPU impact of compression is low since only |
131 |
|
|
new files (those not already in the pool) need to be compressed. |
132 |
|
|
<p></p> |
133 |
|
|
<li> |
134 |
|
|
A powerful http/cgi user interface allows administrators to view log |
135 |
|
|
files, configuration, current status and allows users to initiate and |
136 |
|
|
cancel backups and browse and restore files from backups. |
137 |
|
|
<p></p> |
138 |
|
|
<li> |
139 |
|
|
The http/cgi user interface has internationalization (i18n) support, |
140 |
|
|
currently providing English, French, German, Spanish, Italian |
141 |
|
|
and Dutch. |
142 |
|
|
<p></p> |
143 |
|
|
<li> |
144 |
|
|
No client-side software is needed. On WinXX the standard smb |
145 |
|
|
protocol is used to extract backup data. On linux or unix clients, |
146 |
|
|
rsync or tar (over ssh/rsh/nfs) is used to extract backup data. |
147 |
|
|
Alternatively, rsync can also be used on WinXX (using cygwin), |
148 |
|
|
and Samba could be installed on the linux or unix client to |
149 |
|
|
provide smb shares). |
150 |
|
|
<p></p> |
151 |
|
|
<li> |
152 |
|
|
Flexible restore options. Single files can be downloaded from |
153 |
|
|
any backup directly from the CGI interface. Zip or Tar archives |
154 |
|
|
for selected files or directories from any backup can also be |
155 |
|
|
downloaded from the CGI interface. Finally, direct restore to |
156 |
|
|
the client machine (using smb or tar) for selected files or |
157 |
|
|
directories is also supported from the CGI interface. |
158 |
|
|
<p></p> |
159 |
|
|
<li> |
160 |
|
|
BackupPC supports mobile environments where laptops are only |
161 |
|
|
intermittently connected to the network and have dynamic IP addresses |
162 |
|
|
(DHCP). Configuration settings allow machines connected via slower WAN |
163 |
|
|
connections (eg: dial up, DSL, cable) to not be backed up, even if they |
164 |
|
|
use the same fixed or dynamic IP address as when they are connected |
165 |
|
|
directly to the LAN. |
166 |
|
|
<p></p> |
167 |
|
|
<li> |
168 |
|
|
Flexible configuration parameters allow multiple backups to be performed |
169 |
|
|
in parallel, specification of which shares to backup, which directories |
170 |
|
|
to backup or not backup, various schedules for full and incremental |
171 |
|
|
backups, schedules for email reminders to users and so on. Configuration |
172 |
|
|
parameters can be set system-wide or also on a per-PC basis. |
173 |
|
|
<p></p> |
174 |
|
|
<li> |
175 |
|
|
Users are sent periodic email reminders if their PC has not |
176 |
|
|
recently been backed up. Email content, timing and policies |
177 |
|
|
are configurable. |
178 |
|
|
<p></p> |
179 |
|
|
<li> |
180 |
|
|
BackupPC is Open Source software hosted by SourceForge. |
181 |
|
|
<p></p></ul> |
182 |
|
|
<p> |
183 |
|
|
</p> |
184 |
|
|
<h2><a name="backup_basics">Backup basics</a></h2> |
185 |
|
|
<dl> |
186 |
|
|
<dt><strong><a name="item_full_backup">Full Backup</a></strong><br /> |
187 |
|
|
</dt> |
188 |
|
|
<dd> |
189 |
|
|
A full backup is a complete backup of a share. BackupPC can be |
190 |
|
|
configured to do a full backup at a regular interval (typically |
191 |
|
|
weekly). BackupPC can be configured to keep a certain number |
192 |
|
|
of full backups. Exponential expiry is also supported, allowing |
193 |
|
|
full backups with various vintages to be kept (for example, a |
194 |
|
|
settable number of most recent weekly fulls, plus a settable |
195 |
|
|
number of older fulls that are 2, 4, 8, or 16 weeks apart). |
196 |
|
|
</dd> |
197 |
|
|
<p></p> |
198 |
|
|
<dt><strong><a name="item_incremental_backup">Incremental Backup</a></strong><br /> |
199 |
|
|
</dt> |
200 |
|
|
<dd> |
201 |
|
|
An incremental backup is a backup of files that have changed (based on |
202 |
|
|
their modification time) since the last successful full backup. For |
203 |
|
|
SMB and tar, BackupPC backups all files that have changed since one |
204 |
|
|
hour prior to the start of the last successful full backup. Rsync is |
205 |
|
|
more clever: any files whose attributes have changed (ie: uid, gid, |
206 |
|
|
mtime, modes, size) since the last full are backed up. Deleted, new |
207 |
|
|
files and renamed files are detected by Rsync incrementals. |
208 |
|
|
In constrast, SMB and tar incrementals are not able to detect deleted |
209 |
|
|
files, renamed files or new files whose modification time is prior to |
210 |
|
|
the last full dump. |
211 |
|
|
</dd> |
212 |
|
|
<dd> |
213 |
|
|
<p>BackupPC can also be configured to keep a certain number of incremental |
214 |
|
|
backups, and to keep a smaller number of very old incremental backups. |
215 |
|
|
(BackupPC does not support multi-level incremental backups, although it |
216 |
|
|
will in a future version.)</p> |
217 |
|
|
</dd> |
218 |
|
|
<dd> |
219 |
|
|
<p>BackupPC's CGI interface ``fills-in'' incremental backups based on the |
220 |
|
|
last full backup, giving every backup a ``full'' appearance. This makes |
221 |
|
|
browsing and restoring backups easier.</p> |
222 |
|
|
</dd> |
223 |
|
|
<p></p> |
224 |
|
|
<dt><strong><a name="item_partial_backup">Partial Backup</a></strong><br /> |
225 |
|
|
</dt> |
226 |
|
|
<dd> |
227 |
|
|
When a full backup fails or is canceled, and some files have already |
228 |
|
|
been backed up, BackupPC keeps a partial backup containing just the |
229 |
|
|
files that were backed up successfully. The partial backup is removed |
230 |
|
|
when the next successful backup completes, or if another full backup |
231 |
|
|
fails resulting in a newer partial backup. A failed full backup |
232 |
|
|
that has not backed up any files, or any failed incremental backup, |
233 |
|
|
is removed; no partial backup is saved in these cases. |
234 |
|
|
</dd> |
235 |
|
|
<dd> |
236 |
|
|
<p>The partial backup may be browsed or used to restore files just like |
237 |
|
|
a successful full or incremental backup.</p> |
238 |
|
|
</dd> |
239 |
|
|
<dd> |
240 |
|
|
<p>With the rsync transfer method the partial backup is used to resume |
241 |
|
|
the next full backup, avoiding the need to retransfer the file data |
242 |
|
|
already in the partial backup.</p> |
243 |
|
|
</dd> |
244 |
|
|
<p></p> |
245 |
|
|
<dt><strong><a name="item_identical_files">Identical Files</a></strong><br /> |
246 |
|
|
</dt> |
247 |
|
|
<dd> |
248 |
|
|
BackupPC pools identical files using hardlinks. By ``identical |
249 |
|
|
files'' we mean files with identical contents, not necessary the |
250 |
|
|
same permissions, ownership or modification time. Two files might |
251 |
|
|
have different permissions, ownership, or modification time but |
252 |
|
|
will still be pooled whenever the contents are identical. This |
253 |
|
|
is possible since BackupPC stores the file meta-data (permissions, |
254 |
|
|
ownership, and modification time) separately from the file contents. |
255 |
|
|
</dd> |
256 |
|
|
<p></p> |
257 |
|
|
<dt><strong><a name="item_backup_policy">Backup Policy</a></strong><br /> |
258 |
|
|
</dt> |
259 |
|
|
<dd> |
260 |
|
|
Based on your site's requirements you need to decide what your backup |
261 |
|
|
policy is. BackupPC is not designed to provide exact re-imaging of |
262 |
|
|
failed disks. See <a href="#limitations">Limitations</a> for more information. |
263 |
|
|
However, the addition of tar transport for linux/unix clients, plus |
264 |
|
|
full support for special file types and unix attributes in v1.4.0 |
265 |
|
|
likely means an exact image of a linux/unix file system can be made. |
266 |
|
|
</dd> |
267 |
|
|
<dd> |
268 |
|
|
<p>BackupPC saves backups onto disk. Because of pooling you can relatively |
269 |
|
|
economically keep several weeks of old backups.</p> |
270 |
|
|
</dd> |
271 |
|
|
<dd> |
272 |
|
|
<p>At some sites the disk-based backup will be adequate, without a |
273 |
|
|
secondary tape backup. This system is robust to any single failure: if a |
274 |
|
|
client disk fails or loses files, the BackupPC server can be used to |
275 |
|
|
restore files. If the server disk fails, BackupPC can be restarted on a |
276 |
|
|
fresh file system, and create new backups from the clients. The chance |
277 |
|
|
of the server disk failing can be made very small by spending more money |
278 |
|
|
on increasingly better RAID systems. However, there is still the risk |
279 |
|
|
of catastrophic events like fires or earthquakes that can destroy |
280 |
|
|
both the BackupPC server and the clients it is backing up if they |
281 |
|
|
are physically nearby.</p> |
282 |
|
|
</dd> |
283 |
|
|
<dd> |
284 |
|
|
<p>Some sites might choose to do periodic backups to tape or cd/dvd. |
285 |
|
|
This backup can be done perhaps weekly using the archive function of |
286 |
|
|
BackupPC.</p> |
287 |
|
|
</dd> |
288 |
|
|
<dd> |
289 |
|
|
<p>Other users have reported success with removable disks to rotate the |
290 |
|
|
BackupPC data drives, or using rsync to mirror the BackupPC data pool |
291 |
|
|
offsite.</p> |
292 |
|
|
</dd> |
293 |
|
|
<p></p></dl> |
294 |
|
|
<p> |
295 |
|
|
</p> |
296 |
|
|
<h2><a name="resources">Resources</a></h2> |
297 |
|
|
<dl> |
298 |
|
|
<dt><strong><a name="item_backuppc_home_page">BackupPC home page</a></strong><br /> |
299 |
|
|
</dt> |
300 |
|
|
<dd> |
301 |
|
|
The BackupPC Open Source project is hosted on SourceForge. The |
302 |
|
|
home page can be found at: |
303 |
|
|
</dd> |
304 |
|
|
<dd> |
305 |
|
|
<pre> |
306 |
|
|
<a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a></pre> |
307 |
|
|
</dd> |
308 |
|
|
<dd> |
309 |
|
|
<p>This page has links to the current documentation, the SourceForge |
310 |
|
|
project page and general information.</p> |
311 |
|
|
</dd> |
312 |
|
|
<p></p> |
313 |
|
|
<dt><strong><a name="item_sourceforge_project">SourceForge project</a></strong><br /> |
314 |
|
|
</dt> |
315 |
|
|
<dd> |
316 |
|
|
The SourceForge project page is at: |
317 |
|
|
</dd> |
318 |
|
|
<dd> |
319 |
|
|
<pre> |
320 |
|
|
<a href="http://sourceforge.net/projects/backuppc">http://sourceforge.net/projects/backuppc</a></pre> |
321 |
|
|
</dd> |
322 |
|
|
<dd> |
323 |
|
|
<p>This page has links to the current releases of BackupPC.</p> |
324 |
|
|
</dd> |
325 |
|
|
<p></p> |
326 |
|
|
<dt><strong><a name="item_backuppc_faq">BackupPC FAQ</a></strong><br /> |
327 |
|
|
</dt> |
328 |
|
|
<dd> |
329 |
|
|
BackupPC has a FAQ at <a href="http://backuppc.sourceforge.net/faq">http://backuppc.sourceforge.net/faq</a>. |
330 |
|
|
</dd> |
331 |
|
|
<p></p> |
332 |
|
|
<dt><strong><a name="item_mail_lists">Mail lists</a></strong><br /> |
333 |
|
|
</dt> |
334 |
|
|
<dd> |
335 |
|
|
Three BackupPC mailing lists exist for announcements (backuppc-announce), |
336 |
|
|
developers (backuppc-devel), and a general user list for support, asking |
337 |
|
|
questions or any other topic relevant to BackupPC (backuppc-users). |
338 |
|
|
</dd> |
339 |
|
|
<dd> |
340 |
|
|
<p>The lists are archived on SourceForge and Gmane. The SourceForge lists |
341 |
|
|
are not always up to date and the searching is limited, so Gmane is |
342 |
|
|
a good alternative. See:</p> |
343 |
|
|
</dd> |
344 |
|
|
<dd> |
345 |
|
|
<pre> |
346 |
|
|
<a href="http://news.gmane.org/index.php?prefix=gmane.comp.sysutils.backup.backuppc">http://news.gmane.org/index.php?prefix=gmane.comp.sysutils.backup.backuppc</a> |
347 |
|
|
<a href="http://sourceforge.net/mailarchive/forum.php?forum_id=503">http://sourceforge.net/mailarchive/forum.php?forum_id=503</a></pre> |
348 |
|
|
</dd> |
349 |
|
|
<dd> |
350 |
|
|
<p>You can subscribe to these lists by visiting:</p> |
351 |
|
|
</dd> |
352 |
|
|
<dd> |
353 |
|
|
<pre> |
354 |
|
|
<a href="http://lists.sourceforge.net/lists/listinfo/backuppc-announce">http://lists.sourceforge.net/lists/listinfo/backuppc-announce</a> |
355 |
|
|
<a href="http://lists.sourceforge.net/lists/listinfo/backuppc-users">http://lists.sourceforge.net/lists/listinfo/backuppc-users</a> |
356 |
|
|
<a href="http://lists.sourceforge.net/lists/listinfo/backuppc-devel">http://lists.sourceforge.net/lists/listinfo/backuppc-devel</a></pre> |
357 |
|
|
</dd> |
358 |
|
|
<dd> |
359 |
|
|
<p>The backuppc-announce list is moderated and is used only for |
360 |
|
|
important announcements (eg: new versions). It is low traffic. |
361 |
|
|
You only need to subscribe to one of backuppc-announce and |
362 |
|
|
backuppc-users: backuppc-users also receives any messages on |
363 |
|
|
backuppc-announce.</p> |
364 |
|
|
</dd> |
365 |
|
|
<dd> |
366 |
|
|
<p>The backuppc-devel list is only for developers who are working on BackupPC. |
367 |
|
|
Do not post questions or support requests there. But detailed technical |
368 |
|
|
discussions should happen on this list.</p> |
369 |
|
|
</dd> |
370 |
|
|
<dd> |
371 |
|
|
<p>To post a message to the backuppc-users list, send an email to</p> |
372 |
|
|
</dd> |
373 |
|
|
<dd> |
374 |
|
|
<pre> |
375 |
|
|
backuppc-users@lists.sourceforge.net</pre> |
376 |
|
|
</dd> |
377 |
|
|
<dd> |
378 |
|
|
<p>Do not send subscription requests to this address!</p> |
379 |
|
|
</dd> |
380 |
|
|
<p></p> |
381 |
|
|
<dt><strong><a name="item_other_programs_of_interest">Other Programs of Interest</a></strong><br /> |
382 |
|
|
</dt> |
383 |
|
|
<dd> |
384 |
|
|
If you want to mirror linux or unix files or directories to a remote server |
385 |
|
|
you should consider rsync, <a href="http://rsync.samba.org">http://rsync.samba.org</a>. BackupPC now uses |
386 |
|
|
rsync as a transport mechanism; if you are already an rsync user you |
387 |
|
|
can think of BackupPC as adding efficient storage (compression and |
388 |
|
|
pooling) and a convenient user interface to rsync. |
389 |
|
|
</dd> |
390 |
|
|
<dd> |
391 |
|
|
<p>Unison is a utility that can do two-way, interactive, synchronization. |
392 |
|
|
See <a href="http://www.cis.upenn.edu/~bcpierce/unison">http://www.cis.upenn.edu/~bcpierce/unison</a>.</p> |
393 |
|
|
</dd> |
394 |
|
|
<dd> |
395 |
|
|
<p>Three popular open source packages that do tape backup are |
396 |
|
|
Amanda (<a href="http://www.amanda.org">http://www.amanda.org</a>), |
397 |
|
|
afbackup (<a href="http://sourceforge.net/projects/afbackup">http://sourceforge.net/projects/afbackup</a>), and |
398 |
|
|
Bacula (<a href="http://www.bacula.org">http://www.bacula.org</a>). |
399 |
|
|
Amanda can also backup WinXX machines to tape using samba. |
400 |
|
|
These packages can be used as back ends to BackupPC to backup the |
401 |
|
|
BackupPC server data to tape.</p> |
402 |
|
|
</dd> |
403 |
|
|
<dd> |
404 |
|
|
<p>Various programs and scripts use rsync to provide hardlinked backups. |
405 |
|
|
See, for example, Mike Rubel's site (<a href="http://www.mikerubel.org/computers/rsync_snapshots">http://www.mikerubel.org/computers/rsync_snapshots</a>), |
406 |
|
|
JW Schultz's dirvish (<a href="http://www.pegasys.ws/dirvish">http://www.pegasys.ws/dirvish</a> (although as of |
407 |
|
|
June 2004 this link doesn't work)), |
408 |
|
|
Ben Escoto's rdiff-backup (<a href="http://rdiff-backup.stanford.edu">http://rdiff-backup.stanford.edu</a>), |
409 |
|
|
and John Bowman's rlbackup (<a href="http://www.math.ualberta.ca/imaging/rlbackup">http://www.math.ualberta.ca/imaging/rlbackup</a>).</p> |
410 |
|
|
</dd> |
411 |
|
|
<dd> |
412 |
|
|
<p>BackupPC provides many additional features, such as compressed storage, |
413 |
|
|
hardlinking any matching files (rather than just files with the same name), |
414 |
|
|
and storing special files without root privileges. But these other scripts |
415 |
|
|
provide simple and effective solutions and are worthy of consideration.</p> |
416 |
|
|
</dd> |
417 |
|
|
<p></p></dl> |
418 |
|
|
<p> |
419 |
|
|
</p> |
420 |
|
|
<h2><a name="road_map">Road map</a></h2> |
421 |
|
|
<p>The new features planned for future releases of BackupPC |
422 |
|
|
are at <a href="http://backuppc.sourceforge.net/faq/roadMap.html">http://backuppc.sourceforge.net/faq/roadMap.html</a>.</p> |
423 |
|
|
<p>Comments and suggestions are welcome.</p> |
424 |
|
|
<p> |
425 |
|
|
</p> |
426 |
|
|
<h2><a name="you_can_help">You can help</a></h2> |
427 |
|
|
<p>BackupPC is free. I work on BackupPC because I enjoy doing it and I like |
428 |
|
|
to contribute to the open source community.</p> |
429 |
|
|
<p>BackupPC already has more than enough features for my own needs. The |
430 |
|
|
main compensation for continuing to work on BackupPC is knowing that |
431 |
|
|
more and more people find it useful. So feedback is certainly |
432 |
|
|
appreciated, both positive and negative.</p> |
433 |
|
|
<p>Beyond being a satisfied user and telling other people about it, everyone |
434 |
|
|
is encouraged to add links to <a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a> |
435 |
|
|
(I'll see then via Google) or otherwise publicize BackupPC. Unlike |
436 |
|
|
the commercial products in this space, I have a zero budget (in both |
437 |
|
|
time and money) for marketing, PR and advertising, so it's up to |
438 |
|
|
all of you! Feel free to vote for BackupPC at |
439 |
|
|
<a href="http://freshmeat.net/projects/backuppc">http://freshmeat.net/projects/backuppc</a>.</p> |
440 |
|
|
<p>Also, everyone is encouraged to contribute patches, bug reports, feature |
441 |
|
|
and design suggestions, new code, FAQs, and documentation corrections or |
442 |
|
|
improvements. Answering questions on the mail list is a big help too.</p> |
443 |
|
|
<p> |
444 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
445 |
|
|
</p> |
446 |
|
|
<hr /> |
447 |
|
|
<h1><a name="installing_backuppc">Installing BackupPC</a></h1> |
448 |
|
|
<p> |
449 |
|
|
</p> |
450 |
|
|
<h2><a name="requirements">Requirements</a></h2> |
451 |
|
|
<p>BackupPC requires:</p> |
452 |
|
|
<ul> |
453 |
|
|
<li> |
454 |
|
|
A linux, solaris, or unix based server with a substantial amount of free |
455 |
|
|
disk space (see the next section for what that means). The CPU and disk |
456 |
|
|
performance on this server will determine how many simultaneous backups |
457 |
|
|
you can run. You should be able to run 4-8 simultaneous backups on a |
458 |
|
|
moderately configured server. |
459 |
|
|
<p>Several users have reported significantly better performance using |
460 |
|
|
reiser compared to ext3 for the BackupPC data file system. It is |
461 |
|
|
also recommended you consider either an LVM or raid setup (either |
462 |
|
|
in HW or SW; eg: 3Ware RAID5) so that you can expand the |
463 |
|
|
file system as necessary.</p> |
464 |
|
|
<p>When BackupPC starts with an empty pool, all the backup data will be |
465 |
|
|
written to the pool on disk. After more backups are done, a higher |
466 |
|
|
percentage of incoming files will already be in the pool. BackupPC is |
467 |
|
|
able to avoid writing to disk new files that are already in the pool. |
468 |
|
|
So over time disk writes will reduce significantly (by perhaps a factor |
469 |
|
|
of 20 or more), since eventually 95% or more of incoming backup files |
470 |
|
|
are typically in the pool. Disk reads from the pool are still needed to |
471 |
|
|
do file compares to verify files are an exact match. So, with a mature |
472 |
|
|
pool, if a relatively fast client generates data at say 1MB/sec, and you |
473 |
|
|
run 4 simultaneous backups, there will be an average server disk load of |
474 |
|
|
about 4MB/sec reads and 0.2MB/sec writes (assuming 95% of the incoming |
475 |
|
|
files are in the pool). These rates will be perhaps 40% lower if |
476 |
|
|
compression is on.</p> |
477 |
|
|
<p></p> |
478 |
|
|
<li> |
479 |
|
|
Perl version 5.6.0 or later. BackupPC has been tested with |
480 |
|
|
version 5.6.x, and 5.8.x. If you don't have perl, please |
481 |
|
|
see <a href="http://www.cpan.org">http://www.cpan.org</a>. |
482 |
|
|
<p></p> |
483 |
|
|
<li> |
484 |
|
|
Perl modules Compress::Zlib, Archive::Zip and File::RsyncP. Try ``perldoc |
485 |
|
|
Compress::Zlib'' and ``perldoc Archive::Zip'' to see if you have these |
486 |
|
|
modules. If not, fetch them from <a href="http://www.cpan.org">http://www.cpan.org</a> and see the |
487 |
|
|
instructions below for how to build and install them. |
488 |
|
|
<p>The File::RsyncP module is available from <a href="http://perlrsync.sourceforge.net">http://perlrsync.sourceforge.net</a> |
489 |
|
|
or CPAN. You'll need to install the File::RsyncP module if you want to use |
490 |
|
|
Rsync as a transport method.</p> |
491 |
|
|
<p></p> |
492 |
|
|
<li> |
493 |
|
|
If you are using smb to backup WinXX machines you need smbclient and |
494 |
|
|
nmblookup from the samba package. You will also need nmblookup if |
495 |
|
|
you are backing up linux/unix DHCP machines. See <a href="http://www.samba.org">http://www.samba.org</a>. |
496 |
|
|
Version 2.2.0 or later of Samba is required. |
497 |
|
|
Samba versions 3.x are stable and now recommended instead of 2.x. |
498 |
|
|
<p>See <a href="http://www.samba.org">http://www.samba.org</a> for source and binaries. It's pretty easy to |
499 |
|
|
fetch and compile samba, and just grab smbclient and nmblookup, without |
500 |
|
|
doing the installation. Alternatively, <a href="http://www.samba.org">http://www.samba.org</a> has binary |
501 |
|
|
distributions for most platforms.</p> |
502 |
|
|
<p></p> |
503 |
|
|
<li> |
504 |
|
|
If you are using tar to backup linux/unix machines you should have version |
505 |
|
|
1.13.7 at a minimum, with version 1.13.20 or higher recommended. Use |
506 |
|
|
``tar --version'' to check your version. Various GNU mirrors have the newest |
507 |
|
|
versions of tar, see for example <a href="http://www.funet.fi/pub/gnu/alpha/gnu/tar">http://www.funet.fi/pub/gnu/alpha/gnu/tar</a>. |
508 |
|
|
As of June 2003 the latest version is 1.13.25. |
509 |
|
|
<p></p> |
510 |
|
|
<li> |
511 |
|
|
If you are using rsync to backup linux/unix machines you should have |
512 |
|
|
version 2.5.5 or higher on each client machine. See |
513 |
|
|
<a href="http://rsync.samba.org">http://rsync.samba.org</a>. Use ``rsync --version'' to check your version. |
514 |
|
|
<p>For BackupPC to use Rsync you will also need to install the perl |
515 |
|
|
File::RsyncP module, which is available from |
516 |
|
|
<a href="http://perlrsync.sourceforge.net">http://perlrsync.sourceforge.net</a>. |
517 |
|
|
Version 0.52 or later is required.</p> |
518 |
|
|
<p></p> |
519 |
|
|
<li> |
520 |
|
|
The Apache web server, see <a href="http://www.apache.org">http://www.apache.org</a>, preferably built |
521 |
|
|
with mod_perl support. |
522 |
|
|
<p></p></ul> |
523 |
|
|
<p> |
524 |
|
|
</p> |
525 |
|
|
<h2><a name="how_much_disk_space_do_i_need">How much disk space do I need?</a></h2> |
526 |
|
|
<p>Here's one real example for an environment that is backing up 65 laptops |
527 |
|
|
with compression off. Each full backup averages 3.2GB. Each incremental |
528 |
|
|
backup averages about 0.2GB. Storing one full backup and two incremental |
529 |
|
|
backups per laptop is around 240GB of raw data. But because of the |
530 |
|
|
pooling of identical files, only 87GB is used. This is without |
531 |
|
|
compression.</p> |
532 |
|
|
<p>Another example, with compression on: backing up 95 laptops, where |
533 |
|
|
each backup averages 3.6GB and each incremental averages about 0.3GB. |
534 |
|
|
Keeping three weekly full backups, and six incrementals is around |
535 |
|
|
1200GB of raw data. Because of pooling and compression, only 150GB |
536 |
|
|
is needed.</p> |
537 |
|
|
<p>Here's a rule of thumb. Add up the disk usage of all the machines you |
538 |
|
|
want to backup (210GB in the first example above). This is a rough |
539 |
|
|
minimum space estimate that should allow a couple of full backups and at |
540 |
|
|
least half a dozen incremental backups per machine. If compression is on |
541 |
|
|
you can reduce the storage requirements by maybe 30-40%. Add some margin |
542 |
|
|
in case you add more machines or decide to keep more old backups.</p> |
543 |
|
|
<p>Your actual mileage will depend upon the types of clients, operating |
544 |
|
|
systems and applications you have. The more uniform the clients and |
545 |
|
|
applications the bigger the benefit from pooling common files.</p> |
546 |
|
|
<p>For example, the Eudora email tool stores each mail folder in a separate |
547 |
|
|
file, and attachments are extracted as separate files. So in the sadly |
548 |
|
|
common case of a large attachment emailed to many recipients, Eudora |
549 |
|
|
will extract the attachment into a new file. When these machines are |
550 |
|
|
backed up, only one copy of the file will be stored on the server, even |
551 |
|
|
though the file appears in many different full or incremental backups. In |
552 |
|
|
this sense Eudora is a ``friendly'' application from the point of view of |
553 |
|
|
backup storage requirements.</p> |
554 |
|
|
<p>An example at the other end of the spectrum is Outlook. Everything |
555 |
|
|
(email bodies, attachments, calendar, contact lists) is stored in a |
556 |
|
|
single file, which often becomes huge. Any change to this file requires |
557 |
|
|
a separate copy of the file to be saved during backup. Outlook is even |
558 |
|
|
more troublesome, since it keeps this file locked all the time, so it |
559 |
|
|
cannot be read by smbclient whenever Outlook is running. See the |
560 |
|
|
<a href="#limitations">Limitations</a> section for more discussion of this problem.</p> |
561 |
|
|
<p>In addition to total disk space, you shold make sure you have |
562 |
|
|
plenty of inodes on your BackupPC data partition. Some users have |
563 |
|
|
reported running out of inodes on their BackupPC data partition. |
564 |
|
|
So even if you have plenty of disk space, BackupPC will report |
565 |
|
|
failures when the inodes are exhausted. This is a particular |
566 |
|
|
problem with ext2/ext3 file systems that have a fixed number of |
567 |
|
|
inodes when the file system is built. Use ``df -i'' to see your |
568 |
|
|
inode usage.</p> |
569 |
|
|
<p> |
570 |
|
|
</p> |
571 |
|
|
<h2><a name="step_1__getting_backuppc">Step 1: Getting BackupPC</a></h2> |
572 |
|
|
<p>Some linux distributions now include BackupPC. The Debian |
573 |
|
|
distribution, supprted by Ludovic Drolez, can be found at |
574 |
|
|
<a href="http://packages.debian.org/backuppc">http://packages.debian.org/backuppc</a>; it should be included |
575 |
|
|
in the next stable Debian release. On Debian, BackupPC can |
576 |
|
|
be installed with the command:</p> |
577 |
|
|
<pre> |
578 |
|
|
apt-get install backuppc</pre> |
579 |
|
|
<p>In the future there might be packages for Gentoo and other |
580 |
|
|
linux flavors. If the packaged version is older than the |
581 |
|
|
released version then you will probably want to install the |
582 |
|
|
lastest version as described below.</p> |
583 |
|
|
<p>Otherwise, manually fetching and installing BackupPC is easy. |
584 |
|
|
Start by downloading the latest version from |
585 |
|
|
<a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a>. Hit the ``Code'' button, |
586 |
|
|
then select the ``backuppc'' or ``backuppc-beta'' package and |
587 |
|
|
download the latest version.</p> |
588 |
|
|
<p> |
589 |
|
|
</p> |
590 |
|
|
<h2><a name="step_2__installing_the_distribution">Step 2: Installing the distribution</a></h2> |
591 |
|
|
<p>First off, there are three perl modules you should install. |
592 |
|
|
These are all optional, but highly recommended:</p> |
593 |
|
|
<dl> |
594 |
|
|
<dt><strong><a name="item_compress_3a_3azlib">Compress::Zlib</a></strong><br /> |
595 |
|
|
</dt> |
596 |
|
|
<dd> |
597 |
|
|
To enable compression, you will need to install Compress::Zlib |
598 |
|
|
from <a href="http://www.cpan.org">http://www.cpan.org</a>. |
599 |
|
|
You can run ``perldoc Compress::Zlib'' to see if this module is installed. |
600 |
|
|
</dd> |
601 |
|
|
<p></p> |
602 |
|
|
<dt><strong><a name="item_archive_3a_3azip">Archive::Zip</a></strong><br /> |
603 |
|
|
</dt> |
604 |
|
|
<dd> |
605 |
|
|
To support restore via Zip archives you will need to install |
606 |
|
|
Archive::Zip, also from <a href="http://www.cpan.org">http://www.cpan.org</a>. |
607 |
|
|
You can run ``perldoc Archive::Zip'' to see if this module is installed. |
608 |
|
|
</dd> |
609 |
|
|
<p></p> |
610 |
|
|
<dt><strong><a name="item_file_3a_3arsyncp">File::RsyncP</a></strong><br /> |
611 |
|
|
</dt> |
612 |
|
|
<dd> |
613 |
|
|
To use rsync and rsyncd with BackupPC you will need to install File::RsyncP. |
614 |
|
|
You can run ``perldoc File::RsyncP'' to see if this module is installed. |
615 |
|
|
File::RsyncP is available from <a href="http://perlrsync.sourceforge.net">http://perlrsync.sourceforge.net</a>. |
616 |
|
|
Version 0.52 or later is required. |
617 |
|
|
</dd> |
618 |
|
|
<p></p></dl> |
619 |
|
|
<p>To build and install these packages, fetch the tar.gz file and |
620 |
|
|
then run these commands:</p> |
621 |
|
|
<pre> |
622 |
|
|
tar zxvf Archive-Zip-1.01.tar.gz |
623 |
|
|
cd Archive-Zip-1.01 |
624 |
|
|
perl Makefile.PL |
625 |
|
|
make |
626 |
|
|
make test |
627 |
|
|
make install</pre> |
628 |
|
|
<p>The same sequence of commands can be used for each module.</p> |
629 |
|
|
<p>Now let's move onto BackupPC itself. After fetching |
630 |
|
|
BackupPC-2.1.0.tar.gz, run these commands as root:</p> |
631 |
|
|
<pre> |
632 |
|
|
tar zxf BackupPC-2.1.0.tar.gz |
633 |
|
|
cd BackupPC-2.1.0 |
634 |
|
|
perl configure.pl</pre> |
635 |
|
|
<p>In the future this release might also have patches available on the |
636 |
|
|
SourceForge site. These patch files are text files, with a name of |
637 |
|
|
the form</p> |
638 |
|
|
<pre> |
639 |
|
|
BackupPC-2.1.0plN.diff</pre> |
640 |
|
|
<p>where N is the patch level, eg: pl5 is patch-level 5. These |
641 |
|
|
patch files are cumulative: you only need apply the last patch |
642 |
|
|
file, not all the earlier patch files. If a patch file is |
643 |
|
|
available, eg: BackupPC-2.1.0pl5.diff, you should apply |
644 |
|
|
the patch after extracting the tar file:</p> |
645 |
|
|
<pre> |
646 |
|
|
# fetch BackupPC-2.1.0.tar.gz |
647 |
|
|
# fetch BackupPC-2.1.0pl5.diff |
648 |
|
|
tar zxf BackupPC-2.1.0.tar.gz |
649 |
|
|
cd BackupPC-2.1.0 |
650 |
|
|
patch -p0 < ../BackupPC-2.1.0pl5.diff |
651 |
|
|
perl configure.pl</pre> |
652 |
|
|
<p>A patch file includes comments that describe that bug fixes |
653 |
|
|
and changes. Feel free to review it before you apply the patch.</p> |
654 |
|
|
<p>The configure.pl script also accepts command-line options if you |
655 |
|
|
wish to run it in a non-interactive manner. It has self-contained |
656 |
|
|
documentation for all the command-line options, which you can |
657 |
|
|
read with perldoc:</p> |
658 |
|
|
<pre> |
659 |
|
|
perldoc configure.pl</pre> |
660 |
|
|
<p>When you run configure.pl you will be prompted for the full paths |
661 |
|
|
of various executables, and you will be prompted for the following |
662 |
|
|
information:</p> |
663 |
|
|
<dl> |
664 |
|
|
<dt><strong><a name="item_backuppc_user">BackupPC User</a></strong><br /> |
665 |
|
|
</dt> |
666 |
|
|
<dd> |
667 |
|
|
It is best if BackupPC runs as a special user, eg backuppc, that has |
668 |
|
|
limited privileges. It is preferred that backuppc belongs to a system |
669 |
|
|
administrator group so that sys admin members can browse backuppc files, |
670 |
|
|
edit the configuration files and so on. Although configurable, the |
671 |
|
|
default settings leave group read permission on pool files, so make |
672 |
|
|
sure the BackupPC user's group is chosen restrictively. |
673 |
|
|
</dd> |
674 |
|
|
<dd> |
675 |
|
|
<p>On this installation, this is __BACKUPPCUSER__.</p> |
676 |
|
|
</dd> |
677 |
|
|
<p></p> |
678 |
|
|
<dt><strong><a name="item_data_directory">Data Directory</a></strong><br /> |
679 |
|
|
</dt> |
680 |
|
|
<dd> |
681 |
|
|
You need to decide where to put the data directory, below which |
682 |
|
|
all the BackupPC data is stored. This needs to be a big file system. |
683 |
|
|
</dd> |
684 |
|
|
<dd> |
685 |
|
|
<p>On this installation, this is __TOPDIR__.</p> |
686 |
|
|
</dd> |
687 |
|
|
<p></p> |
688 |
|
|
<dt><strong><a name="item_install_directory">Install Directory</a></strong><br /> |
689 |
|
|
</dt> |
690 |
|
|
<dd> |
691 |
|
|
You should decide where the BackupPC scripts, libraries and documentation |
692 |
|
|
should be installed, eg: /opt/local/BackupPC. |
693 |
|
|
</dd> |
694 |
|
|
<dd> |
695 |
|
|
<p>On this installation, this is __INSTALLDIR__.</p> |
696 |
|
|
</dd> |
697 |
|
|
<p></p> |
698 |
|
|
<dt><strong><a name="item_cgi_bin_directory">CGI bin Directory</a></strong><br /> |
699 |
|
|
</dt> |
700 |
|
|
<dd> |
701 |
|
|
You should decide where the BackupPC CGI script resides. This will |
702 |
|
|
usually below Apache's cgi-bin directory. |
703 |
|
|
</dd> |
704 |
|
|
<dd> |
705 |
|
|
<p>On this installation, this is __CGIDIR__.</p> |
706 |
|
|
</dd> |
707 |
|
|
<p></p> |
708 |
|
|
<dt><strong><a name="item_apache_image_directory">Apache image directory</a></strong><br /> |
709 |
|
|
</dt> |
710 |
|
|
<dd> |
711 |
|
|
A directory where BackupPC's images are stored so that Apache can |
712 |
|
|
serve them. This should be somewhere under Apache's DocumentRoot |
713 |
|
|
directory. |
714 |
|
|
</dd> |
715 |
|
|
<p></p></dl> |
716 |
|
|
<p> |
717 |
|
|
</p> |
718 |
|
|
<h2><a name="step_3__setting_up_config_pl">Step 3: Setting up config.pl</a></h2> |
719 |
|
|
<p>After running configure.pl, browse through the config file, |
720 |
|
|
__INSTALLDIR__/conf/config.pl, and make sure all the default settings |
721 |
|
|
are correct. In particular, you will need to decide whether to use |
722 |
|
|
smb, tar or rsync transport (or whether to set it on a per-PC basis) |
723 |
|
|
and set the relevant parameters for that transport method. |
724 |
|
|
See the section <a href="#step_5__client_setup">Client Setup</a> for more details.</p> |
725 |
|
|
<p> |
726 |
|
|
</p> |
727 |
|
|
<h2><a name="step_4__setting_up_the_hosts_file">Step 4: Setting up the hosts file</a></h2> |
728 |
|
|
<p>The file __TOPDIR__/conf/hosts contains the list of clients to backup. |
729 |
|
|
BackupPC reads this file in three cases:</p> |
730 |
|
|
<ul> |
731 |
|
|
<li> |
732 |
|
|
Upon startup. |
733 |
|
|
<p></p> |
734 |
|
|
<li> |
735 |
|
|
When BackupPC is sent a HUP (-1) signal. Assuming you installed the |
736 |
|
|
init.d script, you can also do this with ``/etc/init.d/backuppc reload''. |
737 |
|
|
<p></p> |
738 |
|
|
<li> |
739 |
|
|
When the modification time of the hosts file changes. BackupPC |
740 |
|
|
checks the modification time once during each regular wakeup. |
741 |
|
|
<p></p></ul> |
742 |
|
|
<p>Whenever you change the hosts file (to add or remove a host) you can |
743 |
|
|
either do a kill -HUP BackupPC_pid or simply wait until the next regular |
744 |
|
|
wakeup period.</p> |
745 |
|
|
<p>Each line in the hosts file contains three fields, separated |
746 |
|
|
by white space:</p> |
747 |
|
|
<dl> |
748 |
|
|
<dt><strong><a name="item_host_name">Host name</a></strong><br /> |
749 |
|
|
</dt> |
750 |
|
|
<dd> |
751 |
|
|
This is typically the host name or NetBios name of the client machine |
752 |
|
|
and should be in lower case. The host name can contain spaces (escape |
753 |
|
|
with a backslash), but it is not recommended. |
754 |
|
|
</dd> |
755 |
|
|
<dd> |
756 |
|
|
<p>Please read the section <a href="#how_backuppc_finds_hosts">How BackupPC Finds Hosts</a>.</p> |
757 |
|
|
</dd> |
758 |
|
|
<dd> |
759 |
|
|
<p>In certain cases you might want several distinct clients to refer |
760 |
|
|
to the same physical machine. For example, you might have a database |
761 |
|
|
you want to backup, and you want to bracket the backup of the database |
762 |
|
|
with shutdown/restart using <a href="#item_%24conf%7bdumppreusercmd%7d">$Conf{DumpPreUserCmd}</A> and <a href="#item_%24conf%7bdumppostusercmd%7d">$Conf{DumpPostUserCmd}</A>. |
763 |
|
|
But you also want to backup the rest of the machine while the database |
764 |
|
|
is still running. In the case you can specify two different clients in |
765 |
|
|
the host file, using any mnemonic name (eg: myhost_mysql and myhost), and |
766 |
|
|
use <a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> in myhost_mysql's config.pl to specify the |
767 |
|
|
real host name of the machine.</p> |
768 |
|
|
</dd> |
769 |
|
|
<p></p> |
770 |
|
|
<dt><strong><a name="item_dhcp_flag">DHCP flag</a></strong><br /> |
771 |
|
|
</dt> |
772 |
|
|
<dd> |
773 |
|
|
Starting with v2.0.0 the way hosts are discovered has changed and now |
774 |
|
|
in most cases you should specify 0 for the DHCP flag, even if the host |
775 |
|
|
has a dynamically assigned IP address. |
776 |
|
|
Please read the section <a href="#how_backuppc_finds_hosts">How BackupPC Finds Hosts</a> |
777 |
|
|
to understand whether you need to set the DHCP flag. |
778 |
|
|
</dd> |
779 |
|
|
<dd> |
780 |
|
|
<p>You only need to set DHCP to 1 if your client machine doesn't |
781 |
|
|
respond to the NetBios multicast request:</p> |
782 |
|
|
</dd> |
783 |
|
|
<dd> |
784 |
|
|
<pre> |
785 |
|
|
nmblookup myHost</pre> |
786 |
|
|
</dd> |
787 |
|
|
<dd> |
788 |
|
|
<p>but does respond to a request directed to its IP address:</p> |
789 |
|
|
</dd> |
790 |
|
|
<dd> |
791 |
|
|
<pre> |
792 |
|
|
nmblookup -A W.X.Y.Z</pre> |
793 |
|
|
</dd> |
794 |
|
|
<dd> |
795 |
|
|
<p>If you do set DHCP to 1 on any client you will need to specify the range of |
796 |
|
|
DHCP addresses to search is specified in <a href="#item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges}</A>.</p> |
797 |
|
|
</dd> |
798 |
|
|
<dd> |
799 |
|
|
<p>Note also that the <a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> feature does not work for |
800 |
|
|
clients with DHCP set to 1.</p> |
801 |
|
|
</dd> |
802 |
|
|
<p></p> |
803 |
|
|
<dt><strong><a name="item_user_name">User name</a></strong><br /> |
804 |
|
|
</dt> |
805 |
|
|
<dd> |
806 |
|
|
This should be the unix login/email name of the user who ``owns'' or uses |
807 |
|
|
this machine. This is the user who will be sent email about this |
808 |
|
|
machine, and this user will have permission to stop/start/browse/restore |
809 |
|
|
backups for this host. Leave this blank if no specific person should |
810 |
|
|
receive email or be allowed to stop/start/browse/restore backups |
811 |
|
|
for this host. Administrators will still have full permissions. |
812 |
|
|
</dd> |
813 |
|
|
<p></p> |
814 |
|
|
<dt><strong><a name="item_more_users">More users</a></strong><br /> |
815 |
|
|
</dt> |
816 |
|
|
<dd> |
817 |
|
|
Additional user names, separate by commas and with no white space, |
818 |
|
|
can be specified. These users will also have full permission in |
819 |
|
|
the CGI interface to stop/start/browse/restore backups for this host. |
820 |
|
|
These users will not be sent email about this host. |
821 |
|
|
</dd> |
822 |
|
|
<p></p></dl> |
823 |
|
|
<p>The first non-comment line of the hosts file is special: it contains |
824 |
|
|
the names of the columns and should not be edited.</p> |
825 |
|
|
<p>Here's a simple example of a hosts file:</p> |
826 |
|
|
<pre> |
827 |
|
|
host dhcp user moreUsers |
828 |
|
|
farside 0 craig jim,dave |
829 |
|
|
larson 1 gary andy</pre> |
830 |
|
|
<p> |
831 |
|
|
</p> |
832 |
|
|
<h2><a name="step_5__client_setup">Step 5: Client Setup</a></h2> |
833 |
|
|
<p>Two methods for getting backup data from a client are supported: smb and |
834 |
|
|
tar. Smb or rsync are the preferred methods for WinXX clients and rsync or |
835 |
|
|
tar are the preferred methods for linux/unix clients.</p> |
836 |
|
|
<p>The transfer method is set using the <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> configuration |
837 |
|
|
setting. If you have a mixed environment (ie: you will use smb for some |
838 |
|
|
clients and tar for others), you will need to pick the most common |
839 |
|
|
choice for <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> for the main config.pl file, and then |
840 |
|
|
override it in the per-PC config file for those hosts that will use |
841 |
|
|
the other method. (Or you could run two completely separate instances |
842 |
|
|
of BackupPC, with different data directories, one for WinXX and the |
843 |
|
|
other for linux/unix, but then common files between the different |
844 |
|
|
machine types will duplicated.)</p> |
845 |
|
|
<p>Here are some brief client setup notes:</p> |
846 |
|
|
<dl> |
847 |
|
|
<dt><strong><a name="item_winxx">WinXX</a></strong><br /> |
848 |
|
|
</dt> |
849 |
|
|
<dd> |
850 |
|
|
The preferred setup for WinXX clients is to set <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> to ``smb''. |
851 |
|
|
(Actually, for v2.0.0, rsyncd is the better method for WinXX if you are |
852 |
|
|
prepared to run rsync/cygwin on your WinXX client. More information |
853 |
|
|
about this will be provided via the FAQ.) |
854 |
|
|
</dd> |
855 |
|
|
<dd> |
856 |
|
|
<p>If you want to use rsyncd for WinXX clients you can find a pre-packaged |
857 |
|
|
zip file on <a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a>. The package is called |
858 |
|
|
cygwin-rsync. It contains rsync.exe, template setup files and the |
859 |
|
|
minimal set of cygwin libraries for everything to run. The README file |
860 |
|
|
contains instructions for running rsync as a service, so it starts |
861 |
|
|
automatically everytime you boot your machine.</p> |
862 |
|
|
</dd> |
863 |
|
|
<dd> |
864 |
|
|
<p>If you build your own rsync, for rsync 2.6.2 it is strongly |
865 |
|
|
recommended you apply the patch in the cygwin-rsync package on |
866 |
|
|
<a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a>. This patch adds the --checksum-seed |
867 |
|
|
option for checksum caching, and also sends all errors to the client, |
868 |
|
|
which is important so BackupPC can log all file access errors.</p> |
869 |
|
|
</dd> |
870 |
|
|
<dd> |
871 |
|
|
<p>Otherwise, to use SMB, you need to create shares for the data you want |
872 |
|
|
to backup. Open ``My Computer'', right click on the drive (eg: C), and |
873 |
|
|
select ``Sharing...'' (or select ``Properties'' and select the ``Sharing'' |
874 |
|
|
tab). In this dialog box you can enable sharing, select the share name |
875 |
|
|
and permissions. Many machines will be configured by default to share |
876 |
|
|
the entire C drive as C$ using the administrator password.</p> |
877 |
|
|
</dd> |
878 |
|
|
<dd> |
879 |
|
|
<p>If this machine uses DHCP you will also need to make sure the |
880 |
|
|
NetBios name is set. Go to Control Panel|System|Network Identification |
881 |
|
|
(on Win2K) or Control Panel|System|Computer Name (on WinXP). |
882 |
|
|
Also, you should go to Control Panel|Network Connections|Local Area |
883 |
|
|
Connection|Properties|Internet Protocol (TCP/IP)|Properties|Advanced|WINS |
884 |
|
|
and verify that NetBios is not disabled.</p> |
885 |
|
|
</dd> |
886 |
|
|
<dd> |
887 |
|
|
<p>The relevant configuration settings are <a href="#item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName}</A>, |
888 |
|
|
<a href="#item_%24conf%7bsmbshareusername%7d">$Conf{SmbShareUserName}</A>, <a href="#item_%24conf%7bsmbsharepasswd%7d">$Conf{SmbSharePasswd}</A>, <a href="#item_%24conf%7bsmbclientpath%7d">$Conf{SmbClientPath}</A>, |
889 |
|
|
<a href="#item_%24conf%7bsmbclientfullcmd%7d">$Conf{SmbClientFullCmd}</A>, <a href="#item_%24conf%7bsmbclientincrcmd%7d">$Conf{SmbClientIncrCmd}</A> and |
890 |
|
|
<a href="#item_%24conf%7bsmbclientrestorecmd%7d">$Conf{SmbClientRestoreCmd}</A>.</p> |
891 |
|
|
</dd> |
892 |
|
|
<dd> |
893 |
|
|
<p>BackupPC needs to know the smb share user name and password for a |
894 |
|
|
client machine that uses smb. The user name is specified in |
895 |
|
|
<a href="#item_%24conf%7bsmbshareusername%7d">$Conf{SmbShareUserName}</A>. There are four ways to tell BackupPC the |
896 |
|
|
smb share password:</p> |
897 |
|
|
</dd> |
898 |
|
|
<ul> |
899 |
|
|
<li> |
900 |
|
|
As an environment variable BPC_SMB_PASSWD set before BackupPC starts. |
901 |
|
|
If you start BackupPC manually the BPC_SMB_PASSWD variable must be set |
902 |
|
|
manually first. For backward compatibility for v1.5.0 and prior, the |
903 |
|
|
environment variable PASSWD can be used if BPC_SMB_PASSWD is not set. |
904 |
|
|
Warning: on some systems it is possible to see environment variables of |
905 |
|
|
running processes. |
906 |
|
|
<p></p> |
907 |
|
|
<li> |
908 |
|
|
Alternatively the BPC_SMB_PASSWD setting can be included in |
909 |
|
|
/etc/init.d/backuppc, in which case you must make sure this file |
910 |
|
|
is not world (other) readable. |
911 |
|
|
<p></p> |
912 |
|
|
<li> |
913 |
|
|
As a configuration variable <a href="#item_%24conf%7bsmbsharepasswd%7d">$Conf{SmbSharePasswd}</A> in |
914 |
|
|
__TOPDIR__/conf/config.pl. If you put the password |
915 |
|
|
here you must make sure this file is not world (other) readable. |
916 |
|
|
<p></p> |
917 |
|
|
<li> |
918 |
|
|
As a configuration variable <a href="#item_%24conf%7bsmbsharepasswd%7d">$Conf{SmbSharePasswd}</A> in the per-PC |
919 |
|
|
configuration file, __TOPDIR__/pc/$host/config.pl. You will have to |
920 |
|
|
use this option if the smb share password is different for each host. |
921 |
|
|
If you put the password here you must make sure this file is not |
922 |
|
|
world (other) readable. |
923 |
|
|
<p></p></ul> |
924 |
|
|
<p>Placement and protection of the smb share password is a possible |
925 |
|
|
security risk, so please double-check the file and directory |
926 |
|
|
permissions. In a future version there might be support for |
927 |
|
|
encryption of this password, but a private key will still have to |
928 |
|
|
be stored in a protected place. Suggestions are welcome.</p> |
929 |
|
|
<p>As an alternative to setting <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> to ``smb'' (using |
930 |
|
|
smbclient) for WinXX clients, you can use an smb network filesystem (eg: |
931 |
|
|
ksmbfs or similar) on your linux/unix server to mount the share, |
932 |
|
|
and then set <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> to ``tar'' (use tar on the network |
933 |
|
|
mounted file system).</p> |
934 |
|
|
<p>Also, to make sure that file names with 8-bit characters are correctly |
935 |
|
|
transferred by smbclient you should add this to samba's smb.conf file |
936 |
|
|
for samba 2.x:</p> |
937 |
|
|
<pre> |
938 |
|
|
[global] |
939 |
|
|
# Accept the windows charset |
940 |
|
|
client code page = 850 |
941 |
|
|
character set = ISO8859-1</pre> |
942 |
|
|
<p>For samba 3.x this should instead be:</p> |
943 |
|
|
<pre> |
944 |
|
|
[global] |
945 |
|
|
unix charset = ISO8859-1</pre> |
946 |
|
|
<p>This setting should work for western europe. |
947 |
|
|
See <a href="http://www.oreilly.com/catalog/samba/chapter/book/ch08_03.html">http://www.oreilly.com/catalog/samba/chapter/book/ch08_03.html</a> |
948 |
|
|
for more information about settings for other languages.</p> |
949 |
|
|
<dt><strong><a name="item_linux_2funix">Linux/Unix</a></strong><br /> |
950 |
|
|
</dt> |
951 |
|
|
<dd> |
952 |
|
|
The preferred setup for linux/unix clients is to set <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> |
953 |
|
|
to ``rsync'', ``rsyncd'' or ``tar''. |
954 |
|
|
</dd> |
955 |
|
|
<dd> |
956 |
|
|
<p>You can use either rsync, smb, or tar for linux/unix machines. Smb requires |
957 |
|
|
that the Samba server (smbd) be run to provide the shares. Since the smb |
958 |
|
|
protocol can't represent special files like symbolic links and fifos, |
959 |
|
|
tar and rsync are the better transport methods for linux/unix machines. |
960 |
|
|
(In fact, by default samba makes symbolic links look like the file or |
961 |
|
|
directory that they point to, so you could get an infinite loop if a |
962 |
|
|
symbolic link points to the current or parent directory. If you really |
963 |
|
|
need to use Samba shares for linux/unix backups you should turn off the |
964 |
|
|
``follow symlinks'' samba config setting. See the smb.conf manual page.)</p> |
965 |
|
|
</dd> |
966 |
|
|
<dd> |
967 |
|
|
<p>The requirements for each Xfer Method are:</p> |
968 |
|
|
</dd> |
969 |
|
|
<dl> |
970 |
|
|
<dt><strong><a name="item_tar">tar</a></strong><br /> |
971 |
|
|
</dt> |
972 |
|
|
<dd> |
973 |
|
|
You must have GNU tar on the client machine. Use ``tar --version'' |
974 |
|
|
or ``gtar --version'' to verify. The version should be at least |
975 |
|
|
1.13.7, and 1.13.20 or greater is recommended. Tar is run on |
976 |
|
|
the client machine via rsh or ssh. |
977 |
|
|
</dd> |
978 |
|
|
<dd> |
979 |
|
|
<p>The relevant configuration settings are <a href="#item_%24conf%7btarclientpath%7d">$Conf{TarClientPath}</A>, |
980 |
|
|
<a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A>, <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A>, <a href="#item_%24conf%7btarfullargs%7d">$Conf{TarFullArgs}</A>, |
981 |
|
|
<a href="#item_%24conf%7btarincrargs%7d">$Conf{TarIncrArgs}</A>, and <a href="#item_%24conf%7btarclientrestorecmd%7d">$Conf{TarClientRestoreCmd}</A>.</p> |
982 |
|
|
</dd> |
983 |
|
|
<p></p> |
984 |
|
|
<dt><strong><a name="item_rsync">rsync</a></strong><br /> |
985 |
|
|
</dt> |
986 |
|
|
<dd> |
987 |
|
|
You should have at least rsync 2.5.5, and the latest version 2.5.6 |
988 |
|
|
is recommended. Rsync is run on the remote client via rsh or ssh. |
989 |
|
|
</dd> |
990 |
|
|
<dd> |
991 |
|
|
<p>The relevant configuration settings are <a href="#item_%24conf%7brsyncclientpath%7d">$Conf{RsyncClientPath}</A>, |
992 |
|
|
<a href="#item_%24conf%7brsyncclientcmd%7d">$Conf{RsyncClientCmd}</A>, <a href="#item_%24conf%7brsyncclientrestorecmd%7d">$Conf{RsyncClientRestoreCmd}</A>, <a href="#item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName}</A>, |
993 |
|
|
<a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>, and <a href="#item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs}</A>.</p> |
994 |
|
|
</dd> |
995 |
|
|
<p></p> |
996 |
|
|
<dt><strong><a name="item_rsyncd">rsyncd</a></strong><br /> |
997 |
|
|
</dt> |
998 |
|
|
<dd> |
999 |
|
|
You should have at least rsync 2.5.5, and the latest version 2.6.2 |
1000 |
|
|
is recommended. In this case the rsync daemon should be running on |
1001 |
|
|
the client machine and BackupPC connects directly to it. |
1002 |
|
|
</dd> |
1003 |
|
|
<dd> |
1004 |
|
|
<p>The relevant configuration settings are <a href="#item_%24conf%7brsyncdclientport%7d">$Conf{RsyncdClientPort}</A>, |
1005 |
|
|
<a href="#item_%24conf%7brsyncdusername%7d">$Conf{RsyncdUserName}</A>, <a href="#item_%24conf%7brsyncdpasswd%7d">$Conf{RsyncdPasswd}</A>, <a href="#item_%24conf%7brsyncdauthrequired%7d">$Conf{RsyncdAuthRequired}</A>, |
1006 |
|
|
<a href="#item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName}</A>, <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>, and <a href="#item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs}</A>. |
1007 |
|
|
<a href="#item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName}</A> is the name of an rsync module (ie: the thing |
1008 |
|
|
in square brackets in rsyncd's conf file -- see rsyncd.conf), not a |
1009 |
|
|
file system path.</p> |
1010 |
|
|
</dd> |
1011 |
|
|
<dd> |
1012 |
|
|
<p>Be aware that rsyncd will remove the leading '/' from path names in |
1013 |
|
|
symbolic links if you specify ``use chroot = no'' in the rsynd.conf file. |
1014 |
|
|
See the rsyncd.conf manual page for more information.</p> |
1015 |
|
|
</dd> |
1016 |
|
|
<p></p></dl> |
1017 |
|
|
<p>For linux/unix machines you should not backup ``/proc''. This directory |
1018 |
|
|
contains a variety of files that look like regular files but they are |
1019 |
|
|
special files that don't need to be backed up (eg: /proc/kcore is a |
1020 |
|
|
regular file that contains physical memory). See <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A>. |
1021 |
|
|
It is safe to back up /dev since it contains mostly character-special |
1022 |
|
|
and block-special files, which are correctly handed by BackupPC |
1023 |
|
|
(eg: backing up /dev/hda5 just saves the block-special file information, |
1024 |
|
|
not the contents of the disk).</p> |
1025 |
|
|
<p>Alternatively, rather than backup all the file systems as a single |
1026 |
|
|
share (``/''), it is easier to restore a single file system if you backup |
1027 |
|
|
each file system separately. To do this you should list each file system |
1028 |
|
|
mount point in <a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> or <a href="#item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName}</A>, and add the |
1029 |
|
|
--one-file-system option to <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> or add --one-file-system |
1030 |
|
|
(note the different punctuation) to <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>. In this case there |
1031 |
|
|
is no need to exclude /proc explicitly since it looks like a different |
1032 |
|
|
file system.</p> |
1033 |
|
|
<p>Next you should decide whether to run tar over ssh, rsh or nfs. Ssh is |
1034 |
|
|
the preferred method. Rsh is not secure and therefore not recommended. |
1035 |
|
|
Nfs will work, but you need to make sure that the BackupPC user (running |
1036 |
|
|
on the server) has sufficient permissions to read all the files below |
1037 |
|
|
the nfs mount.</p> |
1038 |
|
|
<p>Ssh allows BackupPC to run as a privileged user on the client (eg: |
1039 |
|
|
root), since it needs sufficient permissions to read all the backup |
1040 |
|
|
files. Ssh is setup so that BackupPC on the server (an otherwise low |
1041 |
|
|
privileged user) can ssh as root on the client, without being prompted |
1042 |
|
|
for a password. There are two common versions of ssh: v1 and v2. Here |
1043 |
|
|
are some instructions for one way to setup ssh. (Check which version |
1044 |
|
|
of SSH you have by typing ``ssh'' or ``man ssh''.)</p> |
1045 |
|
|
<dt><strong><a name="item_mac_os_x">Mac OS X</a></strong><br /> |
1046 |
|
|
</dt> |
1047 |
|
|
<dd> |
1048 |
|
|
In general this should be similar to Linux/Unix machines. |
1049 |
|
|
Mark Stosberg reports that you can also use hfstar. |
1050 |
|
|
See <a href="http://fink.sourceforge.net/pdb/package.php/hfstar">http://fink.sourceforge.net/pdb/package.php/hfstar</a>. |
1051 |
|
|
</dd> |
1052 |
|
|
<p></p> |
1053 |
|
|
<dt><strong><a name="item_ssh_setup">SSH Setup</a></strong><br /> |
1054 |
|
|
</dt> |
1055 |
|
|
<dd> |
1056 |
|
|
SSH is a secure way to run tar or rsync on a backup client to extract |
1057 |
|
|
the data. SSH provides strong authentication and encryption of |
1058 |
|
|
the network data. |
1059 |
|
|
</dd> |
1060 |
|
|
<dd> |
1061 |
|
|
<p>Note that if you run rsyncd (rsync daemon), ssh is not used. |
1062 |
|
|
In this case, rsyncd provides its own authentication, but there |
1063 |
|
|
is no encryption of network data. If you want encryption of |
1064 |
|
|
network data you can use ssh to create a tunnel, or use a |
1065 |
|
|
program like stunnel. If someone submits instructions I</p> |
1066 |
|
|
</dd> |
1067 |
|
|
<dd> |
1068 |
|
|
<p>Setup instructions for ssh are at |
1069 |
|
|
<a href="http://backuppc.sourceforge.net/faq/ssh.html">http://backuppc.sourceforge.net/faq/ssh.html</a>.</p> |
1070 |
|
|
</dd> |
1071 |
|
|
<p></p> |
1072 |
|
|
<dt><strong><a name="item_clients_that_use_dhcp">Clients that use DHCP</a></strong><br /> |
1073 |
|
|
</dt> |
1074 |
|
|
<dd> |
1075 |
|
|
If a client machine uses DHCP BackupPC needs some way to find the |
1076 |
|
|
IP address given the host name. One alternative is to set dhcp |
1077 |
|
|
to 1 in the hosts file, and BackupPC will search a pool of IP |
1078 |
|
|
addresses looking for hosts. More efficiently, it is better to |
1079 |
|
|
set dhcp = 0 and provide a mechanism for BackupPC to find the |
1080 |
|
|
IP address given the host name. |
1081 |
|
|
</dd> |
1082 |
|
|
<dd> |
1083 |
|
|
<p>For WinXX machines BackupPC uses the NetBios name server to determine |
1084 |
|
|
the IP address given the host name. |
1085 |
|
|
For unix machines you can run nmbd (the NetBios name server) from |
1086 |
|
|
the Samba distribution so that the machine responds to a NetBios |
1087 |
|
|
name request. See the manual page and Samba documentation for more |
1088 |
|
|
information.</p> |
1089 |
|
|
</dd> |
1090 |
|
|
<dd> |
1091 |
|
|
<p>Alternatively, you can set <a href="#item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd}</A> to any command |
1092 |
|
|
that returns the IP address given the host name.</p> |
1093 |
|
|
</dd> |
1094 |
|
|
<dd> |
1095 |
|
|
<p>Please read the section <a href="#how_backuppc_finds_hosts">How BackupPC Finds Hosts</a> |
1096 |
|
|
for more details.</p> |
1097 |
|
|
</dd> |
1098 |
|
|
<p></p></dl> |
1099 |
|
|
<p> |
1100 |
|
|
</p> |
1101 |
|
|
<h2><a name="step_6__running_backuppc">Step 6: Running BackupPC</a></h2> |
1102 |
|
|
<p>The installation contains an init.d backuppc script that can be copied |
1103 |
|
|
to /etc/init.d so that BackupPC can auto-start on boot. |
1104 |
|
|
See init.d/README for further instructions.</p> |
1105 |
|
|
<p>BackupPC should be ready to start. If you installed the init.d script, |
1106 |
|
|
then you should be able to run BackupPC with:</p> |
1107 |
|
|
<pre> |
1108 |
|
|
/etc/init.d/backuppc start</pre> |
1109 |
|
|
<p>(This script can also be invoked with ``stop'' to stop BackupPC and ``reload'' |
1110 |
|
|
to tell BackupPC to reload config.pl and the hosts file.)</p> |
1111 |
|
|
<p>Otherwise, just run</p> |
1112 |
|
|
<pre> |
1113 |
|
|
__INSTALLDIR__/bin/BackupPC -d</pre> |
1114 |
|
|
<p>as user __BACKUPPCUSER__. The -d option tells BackupPC to run as a daemon |
1115 |
|
|
(ie: it does an additional fork).</p> |
1116 |
|
|
<p>Any immediate errors will be printed to stderr and BackupPC will quit. |
1117 |
|
|
Otherwise, look in __TOPDIR__/log/LOG and verify that BackupPC reports |
1118 |
|
|
it has started and all is ok.</p> |
1119 |
|
|
<p> |
1120 |
|
|
</p> |
1121 |
|
|
<h2><a name="step_7__talking_to_backuppc">Step 7: Talking to BackupPC</a></h2> |
1122 |
|
|
<p>Note: as of version 1.5.0, BackupPC no longer supports telnet |
1123 |
|
|
to its TCP port. First off, a unix domain socket is used |
1124 |
|
|
instead of a TCP port. (The TCP port can still be re-enabled |
1125 |
|
|
if your installation has apache and BackupPC running on different |
1126 |
|
|
machines.) Secondly, even if you still use the TCP port, the |
1127 |
|
|
messages exchanged over this interface are now protected by |
1128 |
|
|
an MD5 digest based on a shared secret (see <a href="#item_%24conf%7bservermesgsecret%7d">$Conf{ServerMesgSecret}</A>) |
1129 |
|
|
as well as sequence numbers and per-session unique keys, preventing |
1130 |
|
|
forgery and replay attacks.</p> |
1131 |
|
|
<p>You should verify that BackupPC is running by using BackupPC_serverMesg. |
1132 |
|
|
This sends a message to BackupPC via the unix (or TCP) socket and prints |
1133 |
|
|
the response.</p> |
1134 |
|
|
<p>You can request status information and start and stop backups using this |
1135 |
|
|
interface. This socket interface is mainly provided for the CGI interface |
1136 |
|
|
(and some of the BackupPC sub-programs use it too). But right now we just |
1137 |
|
|
want to make sure BackupPC is happy. Each of these commands should |
1138 |
|
|
produce some status output:</p> |
1139 |
|
|
<pre> |
1140 |
|
|
__INSTALLDIR__/bin/BackupPC_serverMesg status info |
1141 |
|
|
__INSTALLDIR__/bin/BackupPC_serverMesg status jobs |
1142 |
|
|
__INSTALLDIR__/bin/BackupPC_serverMesg status hosts</pre> |
1143 |
|
|
<p>The output should be some hashes printed with Data::Dumper. If it |
1144 |
|
|
looks cryptic and confusing, and doesn't look like an error message, |
1145 |
|
|
then all is ok.</p> |
1146 |
|
|
<p>The jobs status should initially show just BackupPC_trashClean. |
1147 |
|
|
The hosts status should produce a list of every host you have listed |
1148 |
|
|
in __TOPDIR__/conf/hosts as part of a big cryptic output line.</p> |
1149 |
|
|
<p>You can also request that all hosts be queued:</p> |
1150 |
|
|
<pre> |
1151 |
|
|
__INSTALLDIR__/bin/BackupPC_serverMesg backup all</pre> |
1152 |
|
|
<p>At this point you should make sure the CGI interface works since |
1153 |
|
|
it will be much easier to see what is going on. That's our |
1154 |
|
|
next subject.</p> |
1155 |
|
|
<p> |
1156 |
|
|
</p> |
1157 |
|
|
<h2><a name="step_8__cgi_interface">Step 8: CGI interface</a></h2> |
1158 |
|
|
<p>The CGI interface script, BackupPC_Admin, is a powerful and flexible |
1159 |
|
|
way to see and control what BackupPC is doing. It is written for an |
1160 |
|
|
Apache server. If you don't have Apache, see <a href="http://www.apache.org">http://www.apache.org</a>.</p> |
1161 |
|
|
<p>There are two options for setting up the CGI interface: standard |
1162 |
|
|
mode and using mod_perl. Mod_perl provides much higher performance |
1163 |
|
|
(around 15x) and is the best choice if your Apache was built with |
1164 |
|
|
mod_perl support. To see if your apache was built with mod_perl |
1165 |
|
|
run this command:</p> |
1166 |
|
|
<pre> |
1167 |
|
|
httpd -l | egrep mod_perl</pre> |
1168 |
|
|
<p>If this prints mod_perl.c then your Apache supports mod_perl.</p> |
1169 |
|
|
<p>Using mod_perl with BackupPC_Admin requires a dedicated Apache |
1170 |
|
|
to be run as the BackupPC user (__BACKUPPCUSER__). This is |
1171 |
|
|
because BackupPC_Admin needs permission to access various files |
1172 |
|
|
in BackupPC's data directories. In contrast, the standard |
1173 |
|
|
installation (without mod_perl) solves this problem by having |
1174 |
|
|
BackupPC_Admin installed as setuid to the BackupPC user, so that |
1175 |
|
|
BackupPC_Admin runs as the BackuPC user.</p> |
1176 |
|
|
<p>Here are some specifics for each setup:</p> |
1177 |
|
|
<dl> |
1178 |
|
|
<dt><strong><a name="item_standard_setup">Standard Setup</a></strong><br /> |
1179 |
|
|
</dt> |
1180 |
|
|
<dd> |
1181 |
|
|
The CGI interface should have been installed by the configure.pl script |
1182 |
|
|
in __CGIDIR__/BackupPC_Admin. BackupPC_Admin should have been installed |
1183 |
|
|
as setuid to the BackupPC user (__BACKUPPCUSER__), in addition to user |
1184 |
|
|
and group execute permission. |
1185 |
|
|
</dd> |
1186 |
|
|
<dd> |
1187 |
|
|
<p>You should be very careful about permissions on BackupPC_Admin and |
1188 |
|
|
the directory __CGIDIR__: it is important that normal users cannot |
1189 |
|
|
directly execute or change BackupPC_Admin, otherwise they can access |
1190 |
|
|
backup files for any PC. You might need to change the group ownership |
1191 |
|
|
of BackupPC_Admin to a group that Apache belongs to so that Apache |
1192 |
|
|
can execute it (don't add ``other'' execute permission!). |
1193 |
|
|
The permissions should look like this:</p> |
1194 |
|
|
</dd> |
1195 |
|
|
<dd> |
1196 |
|
|
<pre> |
1197 |
|
|
ls -l __CGIDIR__/BackupPC_Admin |
1198 |
|
|
-swxr-x--- 1 __BACKUPPCUSER__ web 82406 Jun 17 22:58 __CGIDIR__/BackupPC_Admin</pre> |
1199 |
|
|
</dd> |
1200 |
|
|
<dd> |
1201 |
|
|
<p>The setuid script won't work unless perl on your machine was installed |
1202 |
|
|
with setuid emulation. This is likely the problem if you get an error |
1203 |
|
|
saying such as ``Wrong user: my userid is 25, instead of 150'', meaning |
1204 |
|
|
the script is running as the httpd user, not the BackupPC user. |
1205 |
|
|
This is because setuid scripts are disabled by the kernel in most |
1206 |
|
|
flavors of unix and linux.</p> |
1207 |
|
|
</dd> |
1208 |
|
|
<dd> |
1209 |
|
|
<p>To see if your perl has setuid emulation, see if there is a program |
1210 |
|
|
called sperl5.6.0 (or sperl5.8.2 etc, based on your perl version) |
1211 |
|
|
in the place where perl is installed. If you can't find this program, |
1212 |
|
|
then you have two options: rebuild and reinstall perl with the setuid |
1213 |
|
|
emulation turned on (answer ``y'' to the question ``Do you want to do |
1214 |
|
|
setuid/setgid emulation?'' when you run perl's configure script), or |
1215 |
|
|
switch to the mod_perl alternative for the CGI script (which doesn't |
1216 |
|
|
need setuid to work).</p> |
1217 |
|
|
</dd> |
1218 |
|
|
<p></p> |
1219 |
|
|
<dt><strong><a name="item_mod_perl_setup">Mod_perl Setup</a></strong><br /> |
1220 |
|
|
</dt> |
1221 |
|
|
<dd> |
1222 |
|
|
The advantage of the mod_perl setup is that no setuid script is needed, |
1223 |
|
|
and there is a huge performance advantage. Not only does all the perl |
1224 |
|
|
code need to be parsed just once, the config.pl and hosts files, plus |
1225 |
|
|
the connection to the BackupPC server are cached between requests. The |
1226 |
|
|
typical speedup is around 15 times. |
1227 |
|
|
</dd> |
1228 |
|
|
<dd> |
1229 |
|
|
<p>To use mod_perl you need to run Apache as user __BACKUPPCUSER__. |
1230 |
|
|
If you need to run multiple Apache's for different services then |
1231 |
|
|
you need to create multiple top-level Apache directories, each |
1232 |
|
|
with their own config file. You can make copies of /etc/init.d/httpd |
1233 |
|
|
and use the -d option to httpd to point each http to a different |
1234 |
|
|
top-level directory. Or you can use the -f option to explicitly |
1235 |
|
|
point to the config file. Multiple Apache's will run on different |
1236 |
|
|
Ports (eg: 80 is standard, 8080 is a typical alternative port accessed |
1237 |
|
|
via <a href="http://yourhost.com:8080).">http://yourhost.com:8080).</a></p> |
1238 |
|
|
</dd> |
1239 |
|
|
<dd> |
1240 |
|
|
<p>Inside BackupPC's Apache http.conf file you should check the |
1241 |
|
|
settings for ServerRoot, DocumentRoot, User, Group, and Port. See |
1242 |
|
|
<a href="http://httpd.apache.org/docs/server-wide.html">http://httpd.apache.org/docs/server-wide.html</a> for more details.</p> |
1243 |
|
|
</dd> |
1244 |
|
|
<dd> |
1245 |
|
|
<p>For mod_perl, BackupPC_Admin should not have setuid permission, so |
1246 |
|
|
you should turn it off:</p> |
1247 |
|
|
</dd> |
1248 |
|
|
<dd> |
1249 |
|
|
<pre> |
1250 |
|
|
chmod u-s __CGIDIR__/BackupPC_Admin</pre> |
1251 |
|
|
</dd> |
1252 |
|
|
<dd> |
1253 |
|
|
<p>To tell Apache to use mod_perl to execute BackupPC_Admin, add this |
1254 |
|
|
to Apache's 1.x httpd.conf file:</p> |
1255 |
|
|
</dd> |
1256 |
|
|
<dd> |
1257 |
|
|
<pre> |
1258 |
|
|
<IfModule mod_perl.c> |
1259 |
|
|
PerlModule Apache::Registry |
1260 |
|
|
PerlTaintCheck On |
1261 |
|
|
<Location /cgi-bin/BackupPC/BackupPC_Admin> # <--- change path as needed |
1262 |
|
|
SetHandler perl-script |
1263 |
|
|
PerlHandler Apache::Registry |
1264 |
|
|
Options ExecCGI |
1265 |
|
|
PerlSendHeader On |
1266 |
|
|
</Location> |
1267 |
|
|
</IfModule></pre> |
1268 |
|
|
</dd> |
1269 |
|
|
<dd> |
1270 |
|
|
<p>Apache 2.0.44 with Perl 5.8.0 on RedHat 7.1, Don Silvia reports that |
1271 |
|
|
this works (with tweaks from Michael Tuzi):</p> |
1272 |
|
|
</dd> |
1273 |
|
|
<dd> |
1274 |
|
|
<pre> |
1275 |
|
|
LoadModule perl_module modules/mod_perl.so |
1276 |
|
|
PerlModule Apache2</pre> |
1277 |
|
|
</dd> |
1278 |
|
|
<dd> |
1279 |
|
|
<pre> |
1280 |
|
|
<Directory /path/to/cgi/> |
1281 |
|
|
SetHandler perl-script |
1282 |
|
|
PerlResponseHandler ModPerl::Registry |
1283 |
|
|
PerlOptions +ParseHeaders |
1284 |
|
|
Options +ExecCGI |
1285 |
|
|
Order deny,allow |
1286 |
|
|
Deny from all |
1287 |
|
|
Allow from 192.168.0 |
1288 |
|
|
AuthName "Backup Admin" |
1289 |
|
|
AuthType Basic |
1290 |
|
|
AuthUserFile /path/to/user_file |
1291 |
|
|
Require valid-user |
1292 |
|
|
</Directory></pre> |
1293 |
|
|
</dd> |
1294 |
|
|
<dd> |
1295 |
|
|
<p>There are other optimizations and options with mod_perl. For |
1296 |
|
|
example, you can tell mod_perl to preload various perl modules, |
1297 |
|
|
which saves memory compared to loading separate copies in every |
1298 |
|
|
Apache process after they are forked. See Stas's definitive |
1299 |
|
|
mod_perl guide at <a href="http://perl.apache.org/guide">http://perl.apache.org/guide</a>.</p> |
1300 |
|
|
</dd> |
1301 |
|
|
<p></p></dl> |
1302 |
|
|
<p>BackupPC_Admin requires that users are authenticated by Apache. |
1303 |
|
|
Specifically, it expects that Apache sets the REMOTE_USER environment |
1304 |
|
|
variable when it runs. There are several ways to do this. One way |
1305 |
|
|
is to create a .htaccess file in the cgi-bin directory that looks like:</p> |
1306 |
|
|
<pre> |
1307 |
|
|
AuthGroupFile /etc/httpd/conf/group # <--- change path as needed |
1308 |
|
|
AuthUserFile /etc/http/conf/passwd # <--- change path as needed |
1309 |
|
|
AuthType basic |
1310 |
|
|
AuthName "access" |
1311 |
|
|
require valid-user</pre> |
1312 |
|
|
<p>You will also need ``AllowOverride Indexes AuthConfig'' in the Apache |
1313 |
|
|
httpd.conf file to enable the .htaccess file. Alternatively, everything |
1314 |
|
|
can go in the Apache httpd.conf file inside a Location directive. The |
1315 |
|
|
list of users and password file above can be extracted from the NIS |
1316 |
|
|
passwd file.</p> |
1317 |
|
|
<p>One alternative is to use LDAP. In Apache's http.conf add these lines:</p> |
1318 |
|
|
<pre> |
1319 |
|
|
LoadModule auth_ldap_module modules/auth_ldap.so |
1320 |
|
|
AddModule auth_ldap.c</pre> |
1321 |
|
|
<pre> |
1322 |
|
|
# cgi-bin - auth via LDAP (for BackupPC) |
1323 |
|
|
<Location /cgi-binBackupPC/BackupPC_Admin> # <--- change path as needed |
1324 |
|
|
AuthType Basic |
1325 |
|
|
AuthName "BackupPC login" |
1326 |
|
|
# replace MYDOMAIN, PORT, ORG and CO as needed |
1327 |
|
|
AuthLDAPURL ldap://ldap.MYDOMAIN.com:PORT/o=ORG,c=CO?uid?sub?(objectClass=*) |
1328 |
|
|
require valid-user |
1329 |
|
|
</Location></pre> |
1330 |
|
|
<p>If you want to disable the user authentication you can set |
1331 |
|
|
<a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A> to '*', which allows any user to have |
1332 |
|
|
full access to all hosts and backups. In this case the REMOTE_USER |
1333 |
|
|
environment variable does not have to be set by Apache.</p> |
1334 |
|
|
<p>Alternatively, you can force a particular user name by getting Apache |
1335 |
|
|
to set REMOTE_USER, eg, to hardcode the user to www you could add |
1336 |
|
|
this to Apache's httpd.conf:</p> |
1337 |
|
|
<pre> |
1338 |
|
|
<Location /cgi-bin/BackupPC/BackupPC_Admin> # <--- change path as needed |
1339 |
|
|
Setenv REMOTE_USER www |
1340 |
|
|
</Location></pre> |
1341 |
|
|
<p>Finally, you should also edit the config.pl file and adjust, as necessary, |
1342 |
|
|
the CGI-specific settings. They're near the end of the config file. In |
1343 |
|
|
particular, you should specify which users or groups have administrator |
1344 |
|
|
(privileged) access: see the config settings <a href="#item_%24conf%7bcgiadminusergroup%7d">$Conf{CgiAdminUserGroup}</A> |
1345 |
|
|
and <a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A>. Also, the configure.pl script placed various |
1346 |
|
|
images into <a href="#item_%24conf%7bcgiimagedir%7d">$Conf{CgiImageDir}</A> that BackupPC_Admin needs to serve |
1347 |
|
|
up. You should make sure that <a href="#item_%24conf%7bcgiimagedirurl%7d">$Conf{CgiImageDirURL}</A> is the correct |
1348 |
|
|
URL for the image directory.</p> |
1349 |
|
|
<p>See the section <a href="#fixing_installation_problems">Fixing installation problems</a> for suggestions on debugging the Apache authentication setup.</p> |
1350 |
|
|
<p> |
1351 |
|
|
</p> |
1352 |
|
|
<h2><a name="how_backuppc_finds_hosts">How BackupPC Finds Hosts</a></h2> |
1353 |
|
|
<p>Starting with v2.0.0 the way hosts are discovered has changed. In most |
1354 |
|
|
cases you should specify 0 for the DHCP flag in the conf/hosts file, |
1355 |
|
|
even if the host has a dynamically assigned IP address.</p> |
1356 |
|
|
<p>BackupPC (starting with v2.0.0) looks up hosts with DHCP = 0 in this manner:</p> |
1357 |
|
|
<ul> |
1358 |
|
|
<li> |
1359 |
|
|
First DNS is used to lookup the IP address given the client's name |
1360 |
|
|
using perl's <code>gethostbyname()</code> function. This should succeed for machines |
1361 |
|
|
that have fixed IP addresses that are known via DNS. You can manually |
1362 |
|
|
see whether a given host have a DNS entry according to perls' |
1363 |
|
|
gethostbyname function with this command: |
1364 |
|
|
<pre> |
1365 |
|
|
perl -e 'print(gethostbyname("myhost") ? "ok\n" : "not found\n");'</pre> |
1366 |
|
|
<p></p> |
1367 |
|
|
<li> |
1368 |
|
|
If <code>gethostbyname()</code> fails, BackupPC then attempts a NetBios multicast to |
1369 |
|
|
find the host. Provided your client machine is configured properly, |
1370 |
|
|
it should respond to this NetBios multicast request. Specifically, |
1371 |
|
|
BackupPC runs a command of this form: |
1372 |
|
|
<pre> |
1373 |
|
|
nmblookup myhost</pre> |
1374 |
|
|
<p>If this fails you will see output like:</p> |
1375 |
|
|
<pre> |
1376 |
|
|
querying myhost on 10.10.255.255 |
1377 |
|
|
name_query failed to find name myhost</pre> |
1378 |
|
|
<p>If this success you will see output like:</p> |
1379 |
|
|
<pre> |
1380 |
|
|
querying myhost on 10.10.255.255 |
1381 |
|
|
10.10.1.73 myhost<00></pre> |
1382 |
|
|
<p>Depending on your netmask you might need to specify the -B option to |
1383 |
|
|
nmblookup. For example:</p> |
1384 |
|
|
<pre> |
1385 |
|
|
nmblookup -B 10.10.1.255 myhost</pre> |
1386 |
|
|
<p>If necessary, experiment on the nmblookup command that will return the |
1387 |
|
|
IP address of the client given its name. Then update |
1388 |
|
|
<a href="#item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd}</A> with any necessary options to nmblookup.</p> |
1389 |
|
|
<p></p></ul> |
1390 |
|
|
<p>For hosts that have the DHCP flag set to 1, these machines are |
1391 |
|
|
discovered as follows:</p> |
1392 |
|
|
<ul> |
1393 |
|
|
<li> |
1394 |
|
|
A DHCP address pool (<a href="#item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges}</A>) needs to be specified. |
1395 |
|
|
BackupPC will check the NetBIOS name of each machine in the range using |
1396 |
|
|
a command of the form: |
1397 |
|
|
<pre> |
1398 |
|
|
nmblookup -A W.X.Y.Z</pre> |
1399 |
|
|
<p>where W.X.Y.Z is each candidate address from <a href="#item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges}</A>. |
1400 |
|
|
Any host that has a valid NetBIOS name returned by this command (ie: |
1401 |
|
|
matching an entry in the hosts file) will be backed up. You can |
1402 |
|
|
modify the specific nmblookup command if necessary via <a href="#item_%24conf%7bnmblookupcmd%7d">$Conf{NmbLookupCmd}</A>.</p> |
1403 |
|
|
<p></p> |
1404 |
|
|
<li> |
1405 |
|
|
You only need to use this DHCP feature if your client machine doesn't |
1406 |
|
|
respond to the NetBios multicast request: |
1407 |
|
|
<pre> |
1408 |
|
|
nmblookup myHost</pre> |
1409 |
|
|
<p>but does respond to a request directed to its IP address:</p> |
1410 |
|
|
<pre> |
1411 |
|
|
nmblookup -A W.X.Y.Z</pre> |
1412 |
|
|
<p></p></ul> |
1413 |
|
|
<p> |
1414 |
|
|
</p> |
1415 |
|
|
<h2><a name="other_installation_topics">Other installation topics</a></h2> |
1416 |
|
|
<dl> |
1417 |
|
|
<dt><strong><a name="item_removing_a_client">Removing a client</a></strong><br /> |
1418 |
|
|
</dt> |
1419 |
|
|
<dd> |
1420 |
|
|
If there is a machine that no longer needs to be backed up (eg: a retired |
1421 |
|
|
machine) you have two choices. First, you can keep the backups accessible |
1422 |
|
|
and browsable, but disable all new backups. Alternatively, you can |
1423 |
|
|
completely remove the client and all its backups. |
1424 |
|
|
</dd> |
1425 |
|
|
<dd> |
1426 |
|
|
<p>To disable backups for a client there are two special values for |
1427 |
|
|
<a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> in that client's per-PC config.pl file:</p> |
1428 |
|
|
</dd> |
1429 |
|
|
<dl> |
1430 |
|
|
<dt><strong><a name="item__2d1">-1</a></strong><br /> |
1431 |
|
|
</dt> |
1432 |
|
|
<dd> |
1433 |
|
|
Don't do any regular backups on this machine. Manually |
1434 |
|
|
requested backups (via the CGI interface) will still occur. |
1435 |
|
|
</dd> |
1436 |
|
|
<p></p> |
1437 |
|
|
<dt><strong><a name="item__2d2">-2</a></strong><br /> |
1438 |
|
|
</dt> |
1439 |
|
|
<dd> |
1440 |
|
|
Don't do any backups on this machine. Manually requested |
1441 |
|
|
backups (via the CGI interface) will be ignored. |
1442 |
|
|
</dd> |
1443 |
|
|
<p></p></dl> |
1444 |
|
|
<p>This will still allow that client's old backups to be browsable |
1445 |
|
|
and restorable.</p> |
1446 |
|
|
<p>To completely remove a client and all its backups, you should remove its |
1447 |
|
|
entry in the conf/hosts file, and then delete the __TOPDIR__/pc/$host |
1448 |
|
|
directory. Whenever you change the hosts file, you should send |
1449 |
|
|
BackupPC a HUP (-1) signal so that it re-reads the hosts file. |
1450 |
|
|
If you don't do this, BackupPC will automatically re-read the |
1451 |
|
|
hosts file at the next regular wakeup.</p> |
1452 |
|
|
<p>Note that when you remove a client's backups you won't initially recover |
1453 |
|
|
a lot of disk space. That's because the client's files are still in |
1454 |
|
|
the pool. Overnight, when BackupPC_nightly next runs, all the unused |
1455 |
|
|
pool files will be deleted and this will recover the disk space used |
1456 |
|
|
by the client's backups.</p> |
1457 |
|
|
<dt><strong><a name="item_copying_the_pool">Copying the pool</a></strong><br /> |
1458 |
|
|
</dt> |
1459 |
|
|
<dd> |
1460 |
|
|
If the pool disk requirements grow you might need to copy the entire |
1461 |
|
|
data directory to a new (bigger) file system. Hopefully you are lucky |
1462 |
|
|
enough to avoid this by having the data directory on a RAID file system |
1463 |
|
|
or LVM that allows the capacity to be grown in place by adding disks. |
1464 |
|
|
</dd> |
1465 |
|
|
<dd> |
1466 |
|
|
<p>The backup data directories contain large numbers of hardlinks. If |
1467 |
|
|
you try to copy the pool the target directory will occupy a lot more |
1468 |
|
|
space if the hardlinks aren't re-established.</p> |
1469 |
|
|
</dd> |
1470 |
|
|
<dd> |
1471 |
|
|
<p>The GNU cp program with the -a option is aware of hardlinks and knows |
1472 |
|
|
to re-establish them. So GNU cp -a is the recommended way to copy |
1473 |
|
|
the data directory and pool. Don't forget to stop BackupPC while |
1474 |
|
|
the copy runs.</p> |
1475 |
|
|
</dd> |
1476 |
|
|
<p></p> |
1477 |
|
|
<dt><strong><a name="item_compressing_an_existing_pool">Compressing an existing pool</a></strong><br /> |
1478 |
|
|
</dt> |
1479 |
|
|
<dd> |
1480 |
|
|
If you are upgrading BackupPC and want to turn compression on you have |
1481 |
|
|
two choices: |
1482 |
|
|
</dd> |
1483 |
|
|
<ul> |
1484 |
|
|
<li> |
1485 |
|
|
Simply turn on compression. All new backups will be compressed. Both old |
1486 |
|
|
(uncompressed) and new (compressed) backups can be browsed and viewed. |
1487 |
|
|
Eventually, the old backups will expire and all the pool data will be |
1488 |
|
|
compressed. However, until the old backups expire, this approach could |
1489 |
|
|
require 60% or more additional pool storage space to store both |
1490 |
|
|
uncompressed and compressed versions of the backup files. |
1491 |
|
|
<p></p> |
1492 |
|
|
<li> |
1493 |
|
|
Convert all the uncompressed pool files and backups to compressed. |
1494 |
|
|
The script __INSTALLDIR__/bin/BackupPC_compressPool does this. |
1495 |
|
|
BackupPC must not be running when you run BackupPC_compressPool. |
1496 |
|
|
Also, there must be no existing compressed backups when you |
1497 |
|
|
run BackupPC_compressPool. |
1498 |
|
|
<p>BackupPC_compressPool compresses all the files in the uncompressed pool |
1499 |
|
|
(__TOPDIR__/pool) and moves them to the compressed pool |
1500 |
|
|
(__TOPDIR__/cpool). It rewrites the files in place, so that the |
1501 |
|
|
existing hardlinks are not disturbed.</p> |
1502 |
|
|
<p></p></ul> |
1503 |
|
|
<p>The rest of this section discusses how to run BackupPC_compressPool.</p> |
1504 |
|
|
<p>BackupPC_compressPool takes three command line options:</p> |
1505 |
|
|
<dl> |
1506 |
|
|
<dt><strong><a name="item__2dt">-t</a></strong><br /> |
1507 |
|
|
</dt> |
1508 |
|
|
<dd> |
1509 |
|
|
Test mode: do everything except actually replace the pool files. |
1510 |
|
|
Useful for estimating total run time without making any real |
1511 |
|
|
changes. |
1512 |
|
|
</dd> |
1513 |
|
|
<p></p> |
1514 |
|
|
<dt><strong><a name="item__2dr">-r</a></strong><br /> |
1515 |
|
|
</dt> |
1516 |
|
|
<dd> |
1517 |
|
|
Read check: re-read the compressed file and compare it against |
1518 |
|
|
the original uncompressed file. Can only be used in test mode. |
1519 |
|
|
</dd> |
1520 |
|
|
<p></p> |
1521 |
|
|
<dt><strong><a name="item__2dc__23">-c #</a></strong><br /> |
1522 |
|
|
</dt> |
1523 |
|
|
<dd> |
1524 |
|
|
Number of children to fork. BackupPC_compressPool can take a long time |
1525 |
|
|
to run, so to speed things up it spawns four children, each working on a |
1526 |
|
|
different part of the pool. You can change the number of children with |
1527 |
|
|
the -c option. |
1528 |
|
|
</dd> |
1529 |
|
|
<p></p></dl> |
1530 |
|
|
<p>Here are the recommended steps for running BackupPC_compressPool:</p> |
1531 |
|
|
<ul> |
1532 |
|
|
<li> |
1533 |
|
|
Stop BackupPC (eg: ``/etc/init.d/backuppc stop''). |
1534 |
|
|
<p></p> |
1535 |
|
|
<li> |
1536 |
|
|
Set <a href="#item_%24conf%7bcompresslevel%7d">$Conf{CompressLevel}</A> to a non-zero number (eg: 3). |
1537 |
|
|
<p></p> |
1538 |
|
|
<li> |
1539 |
|
|
Do a dry run of BackupPC_compressPool. Make sure you run this as |
1540 |
|
|
the BackupPC user (__BACKUPPCUSER__): |
1541 |
|
|
<pre> |
1542 |
|
|
BackupPC_compressPool -t -r</pre> |
1543 |
|
|
<p>The -t option (test mode) makes BackupPC_compressPool do all the steps, |
1544 |
|
|
but not actually change anything. The -r option re-reads the compressed |
1545 |
|
|
file and compares it against the original.</p> |
1546 |
|
|
<p>BackupPC_compressPool gives a status as it completes each 1% of the job. |
1547 |
|
|
It also shows the cumulative compression ratio and estimated completion |
1548 |
|
|
time. Once you are comfortable that things look ok, you can kill |
1549 |
|
|
BackupPC_compressPool or wait for it to finish.</p> |
1550 |
|
|
<p></p> |
1551 |
|
|
<li> |
1552 |
|
|
Now you are ready to run BackupPC_compressPool for real. Once again, |
1553 |
|
|
as the BackupPC user (__BACKUPPCUSER__), run: |
1554 |
|
|
<pre> |
1555 |
|
|
BackupPC_compressPool</pre> |
1556 |
|
|
<p>You should put the output into a file and tail this file. (The running |
1557 |
|
|
time could be twice as long as the test mode since the test mode file |
1558 |
|
|
writes are immediately followed by an unlink, so in test mode it is |
1559 |
|
|
likely the file writes never make it to disk.)</p> |
1560 |
|
|
<p>It is <strong>critical</strong> that BackupPC_compressPool runs to completion before |
1561 |
|
|
re-starting BackupPC. Before BackupPC_compressPool completes, none of |
1562 |
|
|
the existing backups will be in a consistent state. If you must stop |
1563 |
|
|
BackupPC_compressPool for some reason, send it an INT or TERM signal |
1564 |
|
|
and give it several seconds (or more) to clean up gracefully. |
1565 |
|
|
After that, you can re-run BackupPC_compressPool and it will start |
1566 |
|
|
again where it left off. Once again, it is critical that it runs |
1567 |
|
|
to 100% completion.</p> |
1568 |
|
|
<p></p></ul> |
1569 |
|
|
<p>After BackupPC_compressPool completes you should have a complete set |
1570 |
|
|
of compressed backups (and your disk usage should be lower). You |
1571 |
|
|
can now re-start BackupPC.</p> |
1572 |
|
|
</dl> |
1573 |
|
|
<p> |
1574 |
|
|
</p> |
1575 |
|
|
<h2><a name="fixing_installation_problems">Fixing installation problems</a></h2> |
1576 |
|
|
<p>Please see the FAQ at <a href="http://backuppc.sourceforge.net/faq">http://backuppc.sourceforge.net/faq</a> for |
1577 |
|
|
debugging suggestions.</p> |
1578 |
|
|
<p> |
1579 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
1580 |
|
|
</p> |
1581 |
|
|
<hr /> |
1582 |
|
|
<h1><a name="restore_functions">Restore functions</a></h1> |
1583 |
|
|
<p>BackupPC supports several different methods for restoring files. The |
1584 |
|
|
most convenient restore options are provided via the CGI interface. |
1585 |
|
|
Alternatively, backup files can be restored using manual commands.</p> |
1586 |
|
|
<p> |
1587 |
|
|
</p> |
1588 |
|
|
<h2><a name="cgi_restore_options">CGI restore options</a></h2> |
1589 |
|
|
<p>By selecting a host in the CGI interface, a list of all the backups |
1590 |
|
|
for that machine will be displayed. By selecting the backup number |
1591 |
|
|
you can navigate the shares and directory tree for that backup.</p> |
1592 |
|
|
<p>BackupPC's CGI interface automatically fills incremental backups |
1593 |
|
|
with the corresponding full backup, which means each backup has |
1594 |
|
|
a filled appearance. Therefore, there is no need to do multiple |
1595 |
|
|
restores from the incremental and full backups: BackupPC does all |
1596 |
|
|
the hard work for you. You simply select the files and directories |
1597 |
|
|
you want from the correct backup vintage in one step.</p> |
1598 |
|
|
<p>You can download a single backup file at any time simply by selecting |
1599 |
|
|
it. Your browser should prompt you with the file name and ask you |
1600 |
|
|
whether to open the file or save it to disk.</p> |
1601 |
|
|
<p>Alternatively, you can select one or more files or directories in |
1602 |
|
|
the currently selected directory and select ``Restore selected files''. |
1603 |
|
|
(If you need to restore selected files and directories from several |
1604 |
|
|
different parent directories you will need to do that in multiple |
1605 |
|
|
steps.)</p> |
1606 |
|
|
<p>If you select all the files in a directory, BackupPC will replace |
1607 |
|
|
the list of files with the parent directory. You will be presented |
1608 |
|
|
with a screen that has three options:</p> |
1609 |
|
|
<dl> |
1610 |
|
|
<dt><strong><a name="item_option_1_3a_direct_restore">Option 1: Direct Restore</a></strong><br /> |
1611 |
|
|
</dt> |
1612 |
|
|
<dd> |
1613 |
|
|
With this option the selected files and directories are restored |
1614 |
|
|
directly back onto the host, by default in their original location. |
1615 |
|
|
Any old files with the same name will be overwritten, so use caution. |
1616 |
|
|
You can optionally change the target host name, target share name, |
1617 |
|
|
and target path prefix for the restore, allowing you to restore the |
1618 |
|
|
files to a different location. |
1619 |
|
|
</dd> |
1620 |
|
|
<dd> |
1621 |
|
|
<p>Once you select ``Start Restore'' you will be prompted one last time |
1622 |
|
|
with a summary of the exact source and target files and directories |
1623 |
|
|
before you commit. When you give the final go ahead the restore |
1624 |
|
|
operation will be queued like a normal backup job, meaning that it |
1625 |
|
|
will be deferred if there is a backup currently running for that host. |
1626 |
|
|
When the restore job is run, smbclient, tar, rsync or rsyncd is used |
1627 |
|
|
(depending upon <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A>) to actually restore the files. |
1628 |
|
|
Sorry, there is currently no option to cancel a restore that has been |
1629 |
|
|
started.</p> |
1630 |
|
|
</dd> |
1631 |
|
|
<dd> |
1632 |
|
|
<p>A record of the restore request, including the result and list of |
1633 |
|
|
files and directories, is kept. It can be browsed from the host's |
1634 |
|
|
home page. <a href="#item_%24conf%7brestoreinfokeepcnt%7d">$Conf{RestoreInfoKeepCnt}</A> specifies how many old restore |
1635 |
|
|
status files to keep.</p> |
1636 |
|
|
</dd> |
1637 |
|
|
<dd> |
1638 |
|
|
<p>Note that for direct restore to work, the <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> must |
1639 |
|
|
be able to write to the client. For example, that means an SMB |
1640 |
|
|
share for smbclient needs to be writable, and the rsyncd module |
1641 |
|
|
needs ``read only'' set to ``yes''. This creates additional security |
1642 |
|
|
risks. If you only create read-only SMB shares (which is a good |
1643 |
|
|
idea), then the direct restore will fail. You can disable the |
1644 |
|
|
direct restore option by setting <a href="#item_%24conf%7bsmbclientrestorecmd%7d">$Conf{SmbClientRestoreCmd}</A>, |
1645 |
|
|
<a href="#item_%24conf%7btarclientrestorecmd%7d">$Conf{TarClientRestoreCmd}</A> and <a href="#item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs}</A> to undef.</p> |
1646 |
|
|
</dd> |
1647 |
|
|
<p></p> |
1648 |
|
|
<dt><strong><a name="item_option_2_3a_download_zip_archive">Option 2: Download Zip archive</a></strong><br /> |
1649 |
|
|
</dt> |
1650 |
|
|
<dd> |
1651 |
|
|
With this option a zip file containing the selected files and directories |
1652 |
|
|
is downloaded. The zip file can then be unpacked or individual files |
1653 |
|
|
extracted as necessary on the host machine. The compression level can be |
1654 |
|
|
specified. A value of 0 turns off compression. |
1655 |
|
|
</dd> |
1656 |
|
|
<dd> |
1657 |
|
|
<p>When you select ``Download Zip File'' you should be prompted where to |
1658 |
|
|
save the restore.zip file.</p> |
1659 |
|
|
</dd> |
1660 |
|
|
<dd> |
1661 |
|
|
<p>BackupPC does not consider downloading a zip file as an actual |
1662 |
|
|
restore operation, so the details are not saved for later browsing |
1663 |
|
|
as in the first case. However, a mention that a zip file was |
1664 |
|
|
downloaded by a particular user, and a list of the files, does |
1665 |
|
|
appear in BackupPC's log file.</p> |
1666 |
|
|
</dd> |
1667 |
|
|
<p></p> |
1668 |
|
|
<dt><strong><a name="item_option_3_3a_download_tar_archive">Option 3: Download Tar archive</a></strong><br /> |
1669 |
|
|
</dt> |
1670 |
|
|
<dd> |
1671 |
|
|
This is identical to the previous option, except a tar file is downloaded |
1672 |
|
|
rather than a zip file (and there is currently no compression option). |
1673 |
|
|
</dd> |
1674 |
|
|
<p></p></dl> |
1675 |
|
|
<p> |
1676 |
|
|
</p> |
1677 |
|
|
<h2><a name="commandline_restore_options">Command-line restore options</a></h2> |
1678 |
|
|
<p>Apart from the CGI interface, BackupPC allows you to restore files |
1679 |
|
|
and directories from the command line. The following programs can |
1680 |
|
|
be used:</p> |
1681 |
|
|
<dl> |
1682 |
|
|
<dt><strong><a name="item_backuppc_zcat">BackupPC_zcat</a></strong><br /> |
1683 |
|
|
</dt> |
1684 |
|
|
<dd> |
1685 |
|
|
For each file name argument it inflates (uncompresses) the file and |
1686 |
|
|
writes it to stdout. To use BackupPC_zcat you could give it the |
1687 |
|
|
full file name, eg: |
1688 |
|
|
</dd> |
1689 |
|
|
<dd> |
1690 |
|
|
<pre> |
1691 |
|
|
__INSTALLDIR__/bin/BackupPC_zcat __TOPDIR__/pc/host/5/fc/fcraig/fexample.txt > example.txt</pre> |
1692 |
|
|
</dd> |
1693 |
|
|
<dd> |
1694 |
|
|
<p>It's your responsibility to make sure the file is really compressed: |
1695 |
|
|
BackupPC_zcat doesn't check which backup the requested file is from. |
1696 |
|
|
BackupPC_zcat returns a non-zero status if it fails to uncompress |
1697 |
|
|
a file.</p> |
1698 |
|
|
</dd> |
1699 |
|
|
<p></p> |
1700 |
|
|
<dt><strong><a name="item_backuppc_tarcreate">BackupPC_tarCreate</a></strong><br /> |
1701 |
|
|
</dt> |
1702 |
|
|
<dd> |
1703 |
|
|
BackupPC_tarCreate creates a tar file for any files or directories in |
1704 |
|
|
a particular backup. Merging of incrementals is done automatically, |
1705 |
|
|
so you don't need to worry about whether certain files appear in the |
1706 |
|
|
incremental or full backup. |
1707 |
|
|
</dd> |
1708 |
|
|
<dd> |
1709 |
|
|
<p>The usage is:</p> |
1710 |
|
|
</dd> |
1711 |
|
|
<dd> |
1712 |
|
|
<pre> |
1713 |
|
|
BackupPC_tarCreate [-t] [-h host] [-n dumpNum] [-s shareName] |
1714 |
|
|
[-r pathRemove] [-p pathAdd] [-b BLOCKS] [-w writeBufSz] |
1715 |
|
|
files/directories...</pre> |
1716 |
|
|
</dd> |
1717 |
|
|
<dd> |
1718 |
|
|
<p>The command-line files and directories are relative to the specified |
1719 |
|
|
shareName. The tar file is written to stdout.</p> |
1720 |
|
|
</dd> |
1721 |
|
|
<dd> |
1722 |
|
|
<p>The required options are:</p> |
1723 |
|
|
</dd> |
1724 |
|
|
<dl> |
1725 |
|
|
<dt><strong><a name="item__2dh_host">-h host</a></strong><br /> |
1726 |
|
|
</dt> |
1727 |
|
|
<dd> |
1728 |
|
|
host from which the tar archive is created |
1729 |
|
|
</dd> |
1730 |
|
|
<p></p> |
1731 |
|
|
<dt><strong><a name="item__2dn_dumpnum">-n dumpNum</a></strong><br /> |
1732 |
|
|
</dt> |
1733 |
|
|
<dd> |
1734 |
|
|
dump number from which the tar archive is created |
1735 |
|
|
</dd> |
1736 |
|
|
<p></p> |
1737 |
|
|
<dt><strong><a name="item__2ds_sharename">-s shareName</a></strong><br /> |
1738 |
|
|
</dt> |
1739 |
|
|
<dd> |
1740 |
|
|
share name from which the tar archive is created |
1741 |
|
|
</dd> |
1742 |
|
|
<p></p></dl> |
1743 |
|
|
<p>Other options are:</p> |
1744 |
|
|
<dl> |
1745 |
|
|
<dt><strong>-t</strong><br /> |
1746 |
|
|
</dt> |
1747 |
|
|
<dd> |
1748 |
|
|
print summary totals |
1749 |
|
|
</dd> |
1750 |
|
|
<p></p> |
1751 |
|
|
<dt><strong><a name="item__2dr_pathremove">-r pathRemove</a></strong><br /> |
1752 |
|
|
</dt> |
1753 |
|
|
<dd> |
1754 |
|
|
path prefix that will be replaced with pathAdd |
1755 |
|
|
</dd> |
1756 |
|
|
<p></p> |
1757 |
|
|
<dt><strong><a name="item__2dp_pathadd">-p pathAdd</a></strong><br /> |
1758 |
|
|
</dt> |
1759 |
|
|
<dd> |
1760 |
|
|
new path prefix |
1761 |
|
|
</dd> |
1762 |
|
|
<p></p> |
1763 |
|
|
<dt><strong><a name="item__2db_blocks">-b BLOCKS</a></strong><br /> |
1764 |
|
|
</dt> |
1765 |
|
|
<dd> |
1766 |
|
|
the tar block size, default is 20, meaning tar writes data in 20 * 512 |
1767 |
|
|
bytes chunks. |
1768 |
|
|
</dd> |
1769 |
|
|
<p></p> |
1770 |
|
|
<dt><strong><a name="item__2dw_writebufsz">-w writeBufSz</a></strong><br /> |
1771 |
|
|
</dt> |
1772 |
|
|
<dd> |
1773 |
|
|
write buffer size, default 1048576 (1MB). You can increase this if |
1774 |
|
|
you are trying to stream to a fast tape device. |
1775 |
|
|
</dd> |
1776 |
|
|
<p></p></dl> |
1777 |
|
|
<p>The -h, -n and -s options specify which dump is used to generate |
1778 |
|
|
the tar archive. The -r and -p options can be used to relocate |
1779 |
|
|
the paths in the tar archive so extracted files can be placed |
1780 |
|
|
in a location different from their original location.</p> |
1781 |
|
|
<dt><strong><a name="item_backuppc_zipcreate">BackupPC_zipCreate</a></strong><br /> |
1782 |
|
|
</dt> |
1783 |
|
|
<dd> |
1784 |
|
|
BackupPC_zipCreate creates a zip file for any files or directories in |
1785 |
|
|
a particular backup. Merging of incrementals is done automatically, |
1786 |
|
|
so you don't need to worry about whether certain files appear in the |
1787 |
|
|
incremental or full backup. |
1788 |
|
|
</dd> |
1789 |
|
|
<dd> |
1790 |
|
|
<p>The usage is:</p> |
1791 |
|
|
</dd> |
1792 |
|
|
<dd> |
1793 |
|
|
<pre> |
1794 |
|
|
BackupPC_zipCreate [-t] [-h host] [-n dumpNum] [-s shareName] |
1795 |
|
|
[-r pathRemove] [-p pathAdd] [-c compressionLevel] |
1796 |
|
|
files/directories...</pre> |
1797 |
|
|
</dd> |
1798 |
|
|
<dd> |
1799 |
|
|
<p>The command-line files and directories are relative to the specified |
1800 |
|
|
shareName. The zip file is written to stdout.</p> |
1801 |
|
|
</dd> |
1802 |
|
|
<dd> |
1803 |
|
|
<p>The required options are:</p> |
1804 |
|
|
</dd> |
1805 |
|
|
<dl> |
1806 |
|
|
<dt><strong>-h host</strong><br /> |
1807 |
|
|
</dt> |
1808 |
|
|
<dd> |
1809 |
|
|
host from which the zip archive is created |
1810 |
|
|
</dd> |
1811 |
|
|
<p></p> |
1812 |
|
|
<dt><strong>-n dumpNum</strong><br /> |
1813 |
|
|
</dt> |
1814 |
|
|
<dd> |
1815 |
|
|
dump number from which the zip archive is created |
1816 |
|
|
</dd> |
1817 |
|
|
<p></p> |
1818 |
|
|
<dt><strong>-s shareName</strong><br /> |
1819 |
|
|
</dt> |
1820 |
|
|
<dd> |
1821 |
|
|
share name from which the zip archive is created |
1822 |
|
|
</dd> |
1823 |
|
|
<p></p></dl> |
1824 |
|
|
<p>Other options are:</p> |
1825 |
|
|
<dl> |
1826 |
|
|
<dt><strong>-t</strong><br /> |
1827 |
|
|
</dt> |
1828 |
|
|
<dd> |
1829 |
|
|
print summary totals |
1830 |
|
|
</dd> |
1831 |
|
|
<p></p> |
1832 |
|
|
<dt><strong>-r pathRemove</strong><br /> |
1833 |
|
|
</dt> |
1834 |
|
|
<dd> |
1835 |
|
|
path prefix that will be replaced with pathAdd |
1836 |
|
|
</dd> |
1837 |
|
|
<p></p> |
1838 |
|
|
<dt><strong>-p pathAdd</strong><br /> |
1839 |
|
|
</dt> |
1840 |
|
|
<dd> |
1841 |
|
|
new path prefix |
1842 |
|
|
</dd> |
1843 |
|
|
<p></p> |
1844 |
|
|
<dt><strong><a name="item__2dc_level">-c level</a></strong><br /> |
1845 |
|
|
</dt> |
1846 |
|
|
<dd> |
1847 |
|
|
compression level (default is 0, no compression) |
1848 |
|
|
</dd> |
1849 |
|
|
<p></p></dl> |
1850 |
|
|
<p>The -h, -n and -s options specify which dump is used to generate |
1851 |
|
|
the zip archive. The -r and -p options can be used to relocate |
1852 |
|
|
the paths in the zip archive so extracted files can be placed |
1853 |
|
|
in a location different from their original location.</p> |
1854 |
|
|
</dl> |
1855 |
|
|
<p>Each of these programs reside in __INSTALLDIR__/bin.</p> |
1856 |
|
|
<p> |
1857 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
1858 |
|
|
</p> |
1859 |
|
|
<hr /> |
1860 |
|
|
<h1><a name="archive_functions">Archive functions</a></h1> |
1861 |
|
|
<p>BackupPC supports archiving to removable media. For users that require |
1862 |
|
|
offsite backups, BackupPC can create archives that stream to tape |
1863 |
|
|
devices, or create files of specified sizes to fit onto cd or dvd media.</p> |
1864 |
|
|
<p>Each archive type is specified by a BackupPC host with its XferMethod |
1865 |
|
|
set to 'archive'. This allows for multiple configurations at sites where |
1866 |
|
|
there might be a combination of tape and cd/dvd backups being made.</p> |
1867 |
|
|
<p>BackupPC provides a menu that allows one or more hosts to be archived. |
1868 |
|
|
The most recent backup of each host is archived using BackupPC_tarCreate, |
1869 |
|
|
and the output is optionally compressed and split into fixed-sized |
1870 |
|
|
files (eg: 650MB).</p> |
1871 |
|
|
<p>The archive for each host is done by default using |
1872 |
|
|
__INSTALLDIR__/BackupPC_archiveHost. This script can be copied |
1873 |
|
|
and customized as needed.</p> |
1874 |
|
|
<p> |
1875 |
|
|
</p> |
1876 |
|
|
<h2><a name="configuring_an_archive_host">Configuring an Archive Host</a></h2> |
1877 |
|
|
<p>To create an Archive Host, add it to the hosts file just as any other host |
1878 |
|
|
and call it a name that best describes the type of archive, e.g. ArchiveDLT</p> |
1879 |
|
|
<p>To tell BackupPC that the Host is for Archives, create a config.pl file in |
1880 |
|
|
the Archive Hosts's pc directory, adding the following line:</p> |
1881 |
|
|
<p><a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'archive';</p> |
1882 |
|
|
<p>To further customise the archive's parameters you can adding the changed |
1883 |
|
|
parameters in the host's config.pl file. The parameters are explained in |
1884 |
|
|
the config.pl file. Parameters may be fixed or the user can be allowed |
1885 |
|
|
to change them (eg: output device).</p> |
1886 |
|
|
<p>The per-host archive command is <a href="#item_%24conf%7barchiveclientcmd%7d">$Conf{ArchiveClientCmd}</A>. By default |
1887 |
|
|
this invokes</p> |
1888 |
|
|
<pre> |
1889 |
|
|
__INSTALLDIR__/BackupPC_archiveHost</pre> |
1890 |
|
|
<p>which you can copy and customize as necessary.</p> |
1891 |
|
|
<p> |
1892 |
|
|
</p> |
1893 |
|
|
<h2><a name="starting_an_archive">Starting an Archive</a></h2> |
1894 |
|
|
<p>In the web interface, click on the Archive Host you wish to use. You will see a |
1895 |
|
|
list of previous archives and a summary on each. By clicking the ``Start Archive'' |
1896 |
|
|
button you are presented with the list of hosts and the approximate backup size |
1897 |
|
|
(note this is raw size, not projected compressed size) Select the hosts you wish |
1898 |
|
|
to archive and press the ``Archive Selected Hosts'' button.</p> |
1899 |
|
|
<p>The next screen allows you to adjust the parameters for this archive run. |
1900 |
|
|
Press the ``Start the Archive'' to start archiving the selected hosts with the |
1901 |
|
|
parameters displayed.</p> |
1902 |
|
|
<p> |
1903 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
1904 |
|
|
</p> |
1905 |
|
|
<hr /> |
1906 |
|
|
<h1><a name="backuppc_design">BackupPC Design</a></h1> |
1907 |
|
|
<p> |
1908 |
|
|
</p> |
1909 |
|
|
<h2><a name="some_design_issues">Some design issues</a></h2> |
1910 |
|
|
<dl> |
1911 |
|
|
<dt><strong><a name="item_pooling_common_files">Pooling common files</a></strong><br /> |
1912 |
|
|
</dt> |
1913 |
|
|
<dd> |
1914 |
|
|
To quickly see if a file is already in the pool, an MD5 digest of the |
1915 |
|
|
file length and contents is used as the file name in the pool. This |
1916 |
|
|
can't guarantee a file is identical: it just reduces the search to |
1917 |
|
|
often a single file or handful of files. A complete file comparison |
1918 |
|
|
is always done to verify if two files are really the same. |
1919 |
|
|
</dd> |
1920 |
|
|
<dd> |
1921 |
|
|
<p>Identical files on multiples backups are represented by hard links. |
1922 |
|
|
Hardlinks are used so that identical files all refer to the same |
1923 |
|
|
physical file on the server's disk. Also, hard links maintain |
1924 |
|
|
reference counts so that BackupPC knows when to delete unused files |
1925 |
|
|
from the pool.</p> |
1926 |
|
|
</dd> |
1927 |
|
|
<dd> |
1928 |
|
|
<p>For the computer-science majors among you, you can think of the pooling |
1929 |
|
|
system used by BackupPC as just a chained hash table stored on a (big) |
1930 |
|
|
file system.</p> |
1931 |
|
|
</dd> |
1932 |
|
|
<p></p> |
1933 |
|
|
<dt><strong><a name="item_the_hashing_function">The hashing function</a></strong><br /> |
1934 |
|
|
</dt> |
1935 |
|
|
<dd> |
1936 |
|
|
There is a tradeoff between how much of file is used for the MD5 digest |
1937 |
|
|
and the time taken comparing all the files that have the same hash. |
1938 |
|
|
</dd> |
1939 |
|
|
<dd> |
1940 |
|
|
<p>Using the file length and just the first 4096 bytes of the file for the |
1941 |
|
|
MD5 digest produces some repetitions. One example: with 900,000 unique |
1942 |
|
|
files in the pool, this hash gives about 7,000 repeated files, and in |
1943 |
|
|
the worst case 500 files have the same hash. That's not bad: we only |
1944 |
|
|
have to do a single file compare 99.2% of the time. But in the worst |
1945 |
|
|
case we have to compare as many as 500 files checking for a match.</p> |
1946 |
|
|
</dd> |
1947 |
|
|
<dd> |
1948 |
|
|
<p>With a modest increase in CPU time, if we use the file length and the |
1949 |
|
|
first 256K of the file we now only have 500 repeated files and in the |
1950 |
|
|
worst case around 20 files have the same hash. Furthermore, if we |
1951 |
|
|
instead use the first and last 128K of the file (more specifically, the |
1952 |
|
|
first and eighth 128K chunks for files larger than 1MB) we get only 300 |
1953 |
|
|
repeated files and in the worst case around 20 files have the same hash.</p> |
1954 |
|
|
</dd> |
1955 |
|
|
<dd> |
1956 |
|
|
<p>Based on this experimentation, this is the hash function used by BackupPC. |
1957 |
|
|
It is important that you don't change the hash function after files |
1958 |
|
|
are already in the pool. Otherwise your pool will grow to twice the |
1959 |
|
|
size until all the old backups (and all the old files with old hashes) |
1960 |
|
|
eventually expire.</p> |
1961 |
|
|
</dd> |
1962 |
|
|
<p></p> |
1963 |
|
|
<dt><strong><a name="item_compression">Compression</a></strong><br /> |
1964 |
|
|
</dt> |
1965 |
|
|
<dd> |
1966 |
|
|
BackupPC supports compression. It uses the deflate and inflate methods |
1967 |
|
|
in the Compress::Zlib module, which is based on the zlib compression |
1968 |
|
|
library (see <a href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>). |
1969 |
|
|
</dd> |
1970 |
|
|
<dd> |
1971 |
|
|
<p>The <a href="#item_%24conf%7bcompresslevel%7d">$Conf{CompressLevel}</A> setting specifies the compression level to use. |
1972 |
|
|
Zero (0) means no compression. Compression levels can be from 1 (least |
1973 |
|
|
cpu time, slightly worse compression) to 9 (most cpu time, slightly |
1974 |
|
|
better compression). The recommended value is 3. Changing it to 5, for |
1975 |
|
|
example, will take maybe 20% more cpu time and will get another 2-3% |
1976 |
|
|
additional compression. Diminishing returns set in above 5. See the zlib |
1977 |
|
|
documentation for more information about compression levels.</p> |
1978 |
|
|
</dd> |
1979 |
|
|
<dd> |
1980 |
|
|
<p>BackupPC implements compression with minimal CPU load. Rather than |
1981 |
|
|
compressing every incoming backup file and then trying to match it |
1982 |
|
|
against the pool, BackupPC computes the MD5 digest based on the |
1983 |
|
|
uncompressed file, and matches against the candidate pool files by |
1984 |
|
|
comparing each uncompressed pool file against the incoming backup file. |
1985 |
|
|
Since inflating a file takes roughly a factor of 10 less CPU time than |
1986 |
|
|
deflating there is a big saving in CPU time.</p> |
1987 |
|
|
</dd> |
1988 |
|
|
<dd> |
1989 |
|
|
<p>The combination of pooling common files and compression can yield |
1990 |
|
|
a factor of 8 or more overall saving in backup storage.</p> |
1991 |
|
|
</dd> |
1992 |
|
|
<p></p></dl> |
1993 |
|
|
<p> |
1994 |
|
|
</p> |
1995 |
|
|
<h2><a name="backuppc_operation">BackupPC operation</a></h2> |
1996 |
|
|
<p>BackupPC reads the configuration information from |
1997 |
|
|
__TOPDIR__/conf/config.pl. It then runs and manages all the backup |
1998 |
|
|
activity. It maintains queues of pending backup requests, user backup |
1999 |
|
|
requests and administrative commands. Based on the configuration various |
2000 |
|
|
requests will be executed simultaneously.</p> |
2001 |
|
|
<p>As specified by <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A>, BackupPC wakes up periodically |
2002 |
|
|
to queue backups on all the PCs. This is a four step process:</p> |
2003 |
|
|
<ol> |
2004 |
|
|
<li> |
2005 |
|
|
For each host and DHCP address backup requests are queued on the |
2006 |
|
|
background command queue. |
2007 |
|
|
<p></p> |
2008 |
|
|
<li> |
2009 |
|
|
For each PC, BackupPC_dump is forked. Several of these may be run in |
2010 |
|
|
parallel, based on the configuration. First a ping is done to see if |
2011 |
|
|
the machine is alive. If this is a DHCP address, nmblookup is run to |
2012 |
|
|
get the netbios name, which is used as the host name. If DNS lookup |
2013 |
|
|
fails, <a href="#item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd}</A> is run to find the IP address from |
2014 |
|
|
the host name. The file __TOPDIR__/pc/$host/backups is read to decide |
2015 |
|
|
whether a full or incremental backup needs to be run. If no backup is |
2016 |
|
|
scheduled, or the ping to $host fails, then BackupPC_dump exits. |
2017 |
|
|
<p>The backup is done using the specified XferMethod. Either samba's smbclient |
2018 |
|
|
or tar over ssh/rsh/nfs piped into BackupPC_tarExtract, or rsync over ssh/rsh |
2019 |
|
|
is run, or rsyncd is connected to, with the incoming data |
2020 |
|
|
extracted to __TOPDIR__/pc/$host/new. The XferMethod output is put |
2021 |
|
|
into __TOPDIR__/pc/$host/XferLOG.</p> |
2022 |
|
|
<p>The letter in the XferLOG file shows the type of object, similar to the |
2023 |
|
|
first letter of the modes displayed by ls -l:</p> |
2024 |
|
|
<pre> |
2025 |
|
|
d -> directory |
2026 |
|
|
l -> symbolic link |
2027 |
|
|
b -> block special file |
2028 |
|
|
c -> character special file |
2029 |
|
|
p -> pipe file (fifo) |
2030 |
|
|
nothing -> regular file</pre> |
2031 |
|
|
<p>The words mean:</p> |
2032 |
|
|
<dl> |
2033 |
|
|
<dt><strong><a name="item_create">create</a></strong><br /> |
2034 |
|
|
</dt> |
2035 |
|
|
<dd> |
2036 |
|
|
new for this backup (ie: directory or file not in pool) |
2037 |
|
|
</dd> |
2038 |
|
|
<p></p> |
2039 |
|
|
<dt><strong><a name="item_pool">pool</a></strong><br /> |
2040 |
|
|
</dt> |
2041 |
|
|
<dd> |
2042 |
|
|
found a match in the pool |
2043 |
|
|
</dd> |
2044 |
|
|
<p></p> |
2045 |
|
|
<dt><strong><a name="item_same">same</a></strong><br /> |
2046 |
|
|
</dt> |
2047 |
|
|
<dd> |
2048 |
|
|
file is identical to previous backup (contents were |
2049 |
|
|
checksummed and verified during full dump). |
2050 |
|
|
</dd> |
2051 |
|
|
<p></p> |
2052 |
|
|
<dt><strong><a name="item_skip">skip</a></strong><br /> |
2053 |
|
|
</dt> |
2054 |
|
|
<dd> |
2055 |
|
|
file skipped in incremental because attributes are the |
2056 |
|
|
same (only displayed if <a href="#item_%24conf%7bxferloglevel%7d">$Conf{XferLogLevel}</A> >= 2). |
2057 |
|
|
</dd> |
2058 |
|
|
<p></p></dl> |
2059 |
|
|
<p>As BackupPC_tarExtract extracts the files from smbclient or tar, or as |
2060 |
|
|
rsync runs, it checks each file in the backup to see if it is identical |
2061 |
|
|
to an existing file from any previous backup of any PC. It does this |
2062 |
|
|
without needed to write the file to disk. If the file matches an |
2063 |
|
|
existing file, a hardlink is created to the existing file in the pool. |
2064 |
|
|
If the file does not match any existing files, the file is written to |
2065 |
|
|
disk and the file name is saved in __TOPDIR__/pc/$host/NewFileList for |
2066 |
|
|
later processing by BackupPC_link. BackupPC_tarExtract and rsync can handle |
2067 |
|
|
arbitrarily large files and multiple candidate matching files without |
2068 |
|
|
needing to write the file to disk in the case of a match. This |
2069 |
|
|
significantly reduces disk writes (and also reads, since the pool file |
2070 |
|
|
comparison is done disk to memory, rather than disk to disk).</p> |
2071 |
|
|
<p>Based on the configuration settings, BackupPC_dump checks each |
2072 |
|
|
old backup to see if any should be removed. Any expired backups |
2073 |
|
|
are moved to __TOPDIR__/trash for later removal by BackupPC_trashClean.</p> |
2074 |
|
|
<li> |
2075 |
|
|
For each complete, good, backup, BackupPC_link is run. |
2076 |
|
|
To avoid race conditions as new files are linked into the |
2077 |
|
|
pool area, only a single BackupPC_link program runs |
2078 |
|
|
at a time and the rest are queued. |
2079 |
|
|
<p>BackupPC_link reads the NewFileList written by BackupPC_dump and |
2080 |
|
|
inspects each new file in the backup. It re-checks if there is a |
2081 |
|
|
matching file in the pool (another BackupPC_link |
2082 |
|
|
could have added the file since BackupPC_dump checked). If so, the file |
2083 |
|
|
is removed and replaced by a hard link to the existing file. If the file |
2084 |
|
|
is new, a hard link to the file is made in the pool area, so that this |
2085 |
|
|
file is available for checking against each new file and new backup.</p> |
2086 |
|
|
<p>Then, if <a href="#item_%24conf%7bincrfill%7d">$Conf{IncrFill}</A> is set (note that the default setting is |
2087 |
|
|
off), for each incremental backup, hard links are made in the new |
2088 |
|
|
backup to all files that were not extracted during the incremental |
2089 |
|
|
backups. The means the incremental backup looks like a complete |
2090 |
|
|
image of the PC (with the exception that files that were removed on |
2091 |
|
|
the PC since the last full backup will still appear in the backup |
2092 |
|
|
directory tree).</p> |
2093 |
|
|
<p>The CGI interface knows how to merge unfilled incremental backups will |
2094 |
|
|
the most recent prior filled (full) backup, giving the incremental |
2095 |
|
|
backups a filled appearance. The default for <a href="#item_%24conf%7bincrfill%7d">$Conf{IncrFill}</A> is off, |
2096 |
|
|
since there is no need to fill incremental backups. This saves |
2097 |
|
|
some level of disk activity, since lots of extra hardlinks are no |
2098 |
|
|
longer needed (and don't have to be deleted when the backup expires).</p> |
2099 |
|
|
<p></p> |
2100 |
|
|
<li> |
2101 |
|
|
BackupPC_trashClean is always run in the background to remove any |
2102 |
|
|
expired backups. Every 5 minutes it wakes up and removes all the files |
2103 |
|
|
in __TOPDIR__/trash. |
2104 |
|
|
<p>Also, once each night, BackupPC_nightly is run to complete some additional |
2105 |
|
|
administrative tasks, such as cleaning the pool. This involves removing |
2106 |
|
|
any files in the pool that only have a single hard link (meaning no backups |
2107 |
|
|
are using that file). Again, to avoid race conditions, BackupPC_nightly |
2108 |
|
|
is only run when there are no BackupPC_dump or BackupPC_link processes |
2109 |
|
|
running. Therefore, when it is time to run BackupPC_nightly, no new |
2110 |
|
|
backups are started and BackupPC waits until all backups have finished. |
2111 |
|
|
Then BackupPC_nightly is run, and until it finishes no new backups are |
2112 |
|
|
started. If BackupPC_nightly is slow, the settings</p> |
2113 |
|
|
<p></p></ol> |
2114 |
|
|
<p>BackupPC also listens for TCP connections on <a href="#item_%24conf%7bserverport%7d">$Conf{ServerPort}</A>, which |
2115 |
|
|
is used by the CGI script BackupPC_Admin for status reporting and |
2116 |
|
|
user-initiated backup or backup cancel requests.</p> |
2117 |
|
|
<p> |
2118 |
|
|
</p> |
2119 |
|
|
<h2><a name="storage_layout">Storage layout</a></h2> |
2120 |
|
|
<p>BackupPC resides in three directories:</p> |
2121 |
|
|
<dl> |
2122 |
|
|
<dt><strong><a name="item___installdir__">__INSTALLDIR__</a></strong><br /> |
2123 |
|
|
</dt> |
2124 |
|
|
<dd> |
2125 |
|
|
Perl scripts comprising BackupPC reside in __INSTALLDIR__/bin, |
2126 |
|
|
libraries are in __INSTALLDIR__/lib and documentation |
2127 |
|
|
is in __INSTALLDIR__/doc. |
2128 |
|
|
</dd> |
2129 |
|
|
<p></p> |
2130 |
|
|
<dt><strong><a name="item___cgidir__">__CGIDIR__</a></strong><br /> |
2131 |
|
|
</dt> |
2132 |
|
|
<dd> |
2133 |
|
|
The CGI script BackupPC_Admin resides in this cgi binary directory. |
2134 |
|
|
</dd> |
2135 |
|
|
<p></p> |
2136 |
|
|
<dt><strong><a name="item___topdir__">__TOPDIR__</a></strong><br /> |
2137 |
|
|
</dt> |
2138 |
|
|
<dd> |
2139 |
|
|
All of BackupPC's data (PC backup images, logs, configuration information) |
2140 |
|
|
is stored below this directory. |
2141 |
|
|
</dd> |
2142 |
|
|
<p></p></dl> |
2143 |
|
|
<p>Below __TOPDIR__ are several directories:</p> |
2144 |
|
|
<dl> |
2145 |
|
|
<dt><strong><a name="item___topdir___2fconf">__TOPDIR__/conf</a></strong><br /> |
2146 |
|
|
</dt> |
2147 |
|
|
<dd> |
2148 |
|
|
The directory __TOPDIR__/conf contains: |
2149 |
|
|
</dd> |
2150 |
|
|
<dl> |
2151 |
|
|
<dt><strong><a name="item_config_2epl">config.pl</a></strong><br /> |
2152 |
|
|
</dt> |
2153 |
|
|
<dd> |
2154 |
|
|
Configuration file. See <a href="#configuration_file">Configuration file</a> |
2155 |
|
|
below for more details. |
2156 |
|
|
</dd> |
2157 |
|
|
<p></p> |
2158 |
|
|
<dt><strong><a name="item_hosts">hosts</a></strong><br /> |
2159 |
|
|
</dt> |
2160 |
|
|
<dd> |
2161 |
|
|
Hosts file, which lists all the PCs to backup. |
2162 |
|
|
</dd> |
2163 |
|
|
<p></p></dl> |
2164 |
|
|
<dt><strong><a name="item___topdir___2flog">__TOPDIR__/log</a></strong><br /> |
2165 |
|
|
</dt> |
2166 |
|
|
<dd> |
2167 |
|
|
The directory __TOPDIR__/log contains: |
2168 |
|
|
</dd> |
2169 |
|
|
<dl> |
2170 |
|
|
<dt><strong><a name="item_log">LOG</a></strong><br /> |
2171 |
|
|
</dt> |
2172 |
|
|
<dd> |
2173 |
|
|
Current (today's) log file output from BackupPC. |
2174 |
|
|
</dd> |
2175 |
|
|
<p></p> |
2176 |
|
|
<dt><strong><a name="item_log_2e0_or_log_2e0_2ez">LOG.0 or LOG.0.z</a></strong><br /> |
2177 |
|
|
</dt> |
2178 |
|
|
<dd> |
2179 |
|
|
Yesterday's log file output. Log files are aged daily and compressed |
2180 |
|
|
(if compression is enabled), and old LOG files are deleted. |
2181 |
|
|
</dd> |
2182 |
|
|
<p></p> |
2183 |
|
|
<dt><strong><a name="item_backuppc_2epid">BackupPC.pid</a></strong><br /> |
2184 |
|
|
</dt> |
2185 |
|
|
<dd> |
2186 |
|
|
Contains BackupPC's process id. |
2187 |
|
|
</dd> |
2188 |
|
|
<p></p> |
2189 |
|
|
<dt><strong><a name="item_status_2epl">status.pl</a></strong><br /> |
2190 |
|
|
</dt> |
2191 |
|
|
<dd> |
2192 |
|
|
A summary of BackupPC's status written periodically by BackupPC so |
2193 |
|
|
that certain state information can be maintained if BackupPC is |
2194 |
|
|
restarted. Should not be edited. |
2195 |
|
|
</dd> |
2196 |
|
|
<p></p> |
2197 |
|
|
<dt><strong><a name="item_useremailinfo_2epl">UserEmailInfo.pl</a></strong><br /> |
2198 |
|
|
</dt> |
2199 |
|
|
<dd> |
2200 |
|
|
A summary of what email was last sent to each user, and when the |
2201 |
|
|
last email was sent. Should not be edited. |
2202 |
|
|
</dd> |
2203 |
|
|
<p></p></dl> |
2204 |
|
|
<dt><strong><a name="item___topdir___2ftrash">__TOPDIR__/trash</a></strong><br /> |
2205 |
|
|
</dt> |
2206 |
|
|
<dd> |
2207 |
|
|
Any directories and files below this directory are periodically deleted |
2208 |
|
|
whenever BackupPC_trashClean checks. When a backup is aborted or when an |
2209 |
|
|
old backup expires, BackupPC_dump simply moves the directory to |
2210 |
|
|
__TOPDIR__/trash for later removal by BackupPC_trashClean. |
2211 |
|
|
</dd> |
2212 |
|
|
<p></p> |
2213 |
|
|
<dt><strong><a name="item___topdir___2fpool">__TOPDIR__/pool</a></strong><br /> |
2214 |
|
|
</dt> |
2215 |
|
|
<dd> |
2216 |
|
|
All uncompressed files from PC backups are stored below __TOPDIR__/pool. |
2217 |
|
|
Each file's name is based on the MD5 hex digest of the file contents. |
2218 |
|
|
Specifically, for files less than 256K, the file length and the entire |
2219 |
|
|
file is used. For files up to 1MB, the file length and the first and |
2220 |
|
|
last 128K are used. Finally, for files longer than 1MB, the file length, |
2221 |
|
|
and the first and eighth 128K chunks for the file are used. |
2222 |
|
|
</dd> |
2223 |
|
|
<dd> |
2224 |
|
|
<p>Each file is stored in a subdirectory X/Y/Z, where X, Y, Z are the |
2225 |
|
|
first 3 hex digits of the MD5 digest.</p> |
2226 |
|
|
</dd> |
2227 |
|
|
<dd> |
2228 |
|
|
<p>For example, if a file has an MD5 digest of 123456789abcdef0, |
2229 |
|
|
the file is stored in __TOPDIR__/pool/1/2/3/123456789abcdef0.</p> |
2230 |
|
|
</dd> |
2231 |
|
|
<dd> |
2232 |
|
|
<p>The MD5 digest might not be unique (especially since not all the file's |
2233 |
|
|
contents are used for files bigger than 256K). Different files that have |
2234 |
|
|
the same MD5 digest are stored with a trailing suffix ``_n'' where n is |
2235 |
|
|
an incrementing number starting at 0. So, for example, if two additional |
2236 |
|
|
files were identical to the first, except the last byte was different, |
2237 |
|
|
and assuming the file was larger than 1MB (so the MD5 digests are the |
2238 |
|
|
same but the files are actually different), the three files would be |
2239 |
|
|
stored as:</p> |
2240 |
|
|
</dd> |
2241 |
|
|
<dd> |
2242 |
|
|
<pre> |
2243 |
|
|
__TOPDIR__/pool/1/2/3/123456789abcdef0 |
2244 |
|
|
__TOPDIR__/pool/1/2/3/123456789abcdef0_0 |
2245 |
|
|
__TOPDIR__/pool/1/2/3/123456789abcdef0_1</pre> |
2246 |
|
|
</dd> |
2247 |
|
|
<dd> |
2248 |
|
|
<p>Both BackupPC_dump (actually, BackupPC_tarExtract) and BackupPC_link are |
2249 |
|
|
responsible for checking newly backed up files against the pool. For |
2250 |
|
|
each file, the MD5 digest is used to generate a file name in the pool |
2251 |
|
|
directory. If the file exists in the pool, the contents are compared. |
2252 |
|
|
If there is no match, additional files ending in ``_n'' are checked. |
2253 |
|
|
(Actually, BackupPC_tarExtract compares multiple candidate files in |
2254 |
|
|
parallel.) If the file contents exactly match, the file is created by |
2255 |
|
|
simply making a hard link to the pool file (this is done by |
2256 |
|
|
BackupPC_tarExtract as the backup proceeds). Otherwise, |
2257 |
|
|
BackupPC_tarExtract writes the new file to disk and a new hard link is |
2258 |
|
|
made in the pool to the file (this is done later by BackupPC_link).</p> |
2259 |
|
|
</dd> |
2260 |
|
|
<dd> |
2261 |
|
|
<p>Therefore, every file in the pool will have at least 2 hard links |
2262 |
|
|
(one for the pool file and one for the backup file below __TOPDIR__/pc). |
2263 |
|
|
Identical files from different backups or PCs will all be linked to |
2264 |
|
|
the same file. When old backups are deleted, some files in the pool |
2265 |
|
|
might only have one link. BackupPC_nightly checks the entire pool |
2266 |
|
|
and removes all files that have only a single link, thereby recovering |
2267 |
|
|
the storage for that file.</p> |
2268 |
|
|
</dd> |
2269 |
|
|
<dd> |
2270 |
|
|
<p>One other issue: zero length files are not pooled, since there are a lot |
2271 |
|
|
of these files and on most file systems it doesn't save any disk space |
2272 |
|
|
to turn these files into hard links.</p> |
2273 |
|
|
</dd> |
2274 |
|
|
<p></p> |
2275 |
|
|
<dt><strong><a name="item___topdir___2fcpool">__TOPDIR__/cpool</a></strong><br /> |
2276 |
|
|
</dt> |
2277 |
|
|
<dd> |
2278 |
|
|
All compressed files from PC backups are stored below __TOPDIR__/cpool. |
2279 |
|
|
Its layout is the same as __TOPDIR__/pool, and the hashing function |
2280 |
|
|
is the same (and, importantly, based on the uncompressed file, not |
2281 |
|
|
the compressed file). |
2282 |
|
|
</dd> |
2283 |
|
|
<p></p> |
2284 |
|
|
<dt><strong><a name="item___topdir___2fpc_2f_24host">__TOPDIR__/pc/$host</a></strong><br /> |
2285 |
|
|
</dt> |
2286 |
|
|
<dd> |
2287 |
|
|
For each PC $host, all the backups for that PC are stored below |
2288 |
|
|
the directory __TOPDIR__/pc/$host. This directory contains the |
2289 |
|
|
following files: |
2290 |
|
|
</dd> |
2291 |
|
|
<dl> |
2292 |
|
|
<dt><strong>LOG</strong><br /> |
2293 |
|
|
</dt> |
2294 |
|
|
<dd> |
2295 |
|
|
Current log file for this PC from BackupPC_dump. |
2296 |
|
|
</dd> |
2297 |
|
|
<p></p> |
2298 |
|
|
<dt><strong>LOG.0 or LOG.0.z</strong><br /> |
2299 |
|
|
</dt> |
2300 |
|
|
<dd> |
2301 |
|
|
Last month's log file. Log files are aged monthly and compressed |
2302 |
|
|
(if compression is enabled), and old LOG files are deleted. |
2303 |
|
|
</dd> |
2304 |
|
|
<p></p> |
2305 |
|
|
<dt><strong><a name="item_xfererr_or_xfererr_2ez">XferERR or XferERR.z</a></strong><br /> |
2306 |
|
|
</dt> |
2307 |
|
|
<dd> |
2308 |
|
|
Output from the transport program (ie: smbclient, tar or rsync) |
2309 |
|
|
for the most recent failed backup. |
2310 |
|
|
</dd> |
2311 |
|
|
<p></p> |
2312 |
|
|
<dt><strong><a name="item_new">new</a></strong><br /> |
2313 |
|
|
</dt> |
2314 |
|
|
<dd> |
2315 |
|
|
Subdirectory in which the current backup is stored. This |
2316 |
|
|
directory is renamed if the backup succeeds. |
2317 |
|
|
</dd> |
2318 |
|
|
<p></p> |
2319 |
|
|
<dt><strong><a name="item_xferlog_or_xferlog_2ez">XferLOG or XferLOG.z</a></strong><br /> |
2320 |
|
|
</dt> |
2321 |
|
|
<dd> |
2322 |
|
|
Output from the transport program (ie: smbclient, tar or rsync) |
2323 |
|
|
for the current backup. |
2324 |
|
|
</dd> |
2325 |
|
|
<p></p> |
2326 |
|
|
<dt><strong><a name="item_nnn">nnn (an integer)</a></strong><br /> |
2327 |
|
|
</dt> |
2328 |
|
|
<dd> |
2329 |
|
|
Successful backups are in directories numbered sequentially starting at 0. |
2330 |
|
|
</dd> |
2331 |
|
|
<p></p> |
2332 |
|
|
<dt><strong><a name="item_xferlog_2ennn_or_xferlog_2ennn_2ez">XferLOG.nnn or XferLOG.nnn.z</a></strong><br /> |
2333 |
|
|
</dt> |
2334 |
|
|
<dd> |
2335 |
|
|
Output from the transport program (ie: smbclient, tar or rsync) |
2336 |
|
|
corresponding to backup number nnn. |
2337 |
|
|
</dd> |
2338 |
|
|
<p></p> |
2339 |
|
|
<dt><strong><a name="item_restoreinfo_2ennn">RestoreInfo.nnn</a></strong><br /> |
2340 |
|
|
</dt> |
2341 |
|
|
<dd> |
2342 |
|
|
Information about restore request #nnn including who, what, when, and |
2343 |
|
|
why. This file is in Data::Dumper format. (Note that the restore |
2344 |
|
|
numbers are not related to the backup number.) |
2345 |
|
|
</dd> |
2346 |
|
|
<p></p> |
2347 |
|
|
<dt><strong><a name="item_restorelog_2ennn_2ez">RestoreLOG.nnn.z</a></strong><br /> |
2348 |
|
|
</dt> |
2349 |
|
|
<dd> |
2350 |
|
|
Output from smbclient, tar or rsync during restore #nnn. (Note that the restore |
2351 |
|
|
numbers are not related to the backup number.) |
2352 |
|
|
</dd> |
2353 |
|
|
<p></p> |
2354 |
|
|
<dt><strong><a name="item_archiveinfo_2ennn">ArchiveInfo.nnn</a></strong><br /> |
2355 |
|
|
</dt> |
2356 |
|
|
<dd> |
2357 |
|
|
Information about archive request #nnn including who, what, when, and |
2358 |
|
|
why. This file is in Data::Dumper format. (Note that the archive |
2359 |
|
|
numbers are not related to the restore or backup number.) |
2360 |
|
|
</dd> |
2361 |
|
|
<p></p> |
2362 |
|
|
<dt><strong><a name="item_archivelog_2ennn_2ez">ArchiveLOG.nnn.z</a></strong><br /> |
2363 |
|
|
</dt> |
2364 |
|
|
<dd> |
2365 |
|
|
Output from archive #nnn. (Note that the archive numbers are not related |
2366 |
|
|
to the backup or restore number.) |
2367 |
|
|
</dd> |
2368 |
|
|
<p></p> |
2369 |
|
|
<dt><strong>config.pl</strong><br /> |
2370 |
|
|
</dt> |
2371 |
|
|
<dd> |
2372 |
|
|
Optional configuration settings specific to this host. Settings in this |
2373 |
|
|
file override the main configuration file. |
2374 |
|
|
</dd> |
2375 |
|
|
<p></p> |
2376 |
|
|
<dt><strong><a name="item_backups">backups</a></strong><br /> |
2377 |
|
|
</dt> |
2378 |
|
|
<dd> |
2379 |
|
|
A tab-delimited ascii table listing information about each successful |
2380 |
|
|
backup, one per row. The columns are: |
2381 |
|
|
</dd> |
2382 |
|
|
<dl> |
2383 |
|
|
<dt><strong><a name="item_num">num</a></strong><br /> |
2384 |
|
|
</dt> |
2385 |
|
|
<dd> |
2386 |
|
|
The backup number, an integer that starts at 0 and increments |
2387 |
|
|
for each successive backup. The corresponding backup is stored |
2388 |
|
|
in the directory num (eg: if this field is 5, then the backup is |
2389 |
|
|
stored in __TOPDIR__/pc/$host/5). |
2390 |
|
|
</dd> |
2391 |
|
|
<p></p> |
2392 |
|
|
<dt><strong><a name="item_type">type</a></strong><br /> |
2393 |
|
|
</dt> |
2394 |
|
|
<dd> |
2395 |
|
|
Set to ``full'' or ``incr'' for full or incremental backup. |
2396 |
|
|
</dd> |
2397 |
|
|
<p></p> |
2398 |
|
|
<dt><strong><a name="item_starttime">startTime</a></strong><br /> |
2399 |
|
|
</dt> |
2400 |
|
|
<dd> |
2401 |
|
|
Start time of the backup in unix seconds. |
2402 |
|
|
</dd> |
2403 |
|
|
<p></p> |
2404 |
|
|
<dt><strong><a name="item_endtime">endTime</a></strong><br /> |
2405 |
|
|
</dt> |
2406 |
|
|
<dd> |
2407 |
|
|
Stop time of the backup in unix seconds. |
2408 |
|
|
</dd> |
2409 |
|
|
<p></p> |
2410 |
|
|
<dt><strong><a name="item_nfiles">nFiles</a></strong><br /> |
2411 |
|
|
</dt> |
2412 |
|
|
<dd> |
2413 |
|
|
Number of files backed up (as reported by smbclient, tar or rsync). |
2414 |
|
|
</dd> |
2415 |
|
|
<p></p> |
2416 |
|
|
<dt><strong><a name="item_size">size</a></strong><br /> |
2417 |
|
|
</dt> |
2418 |
|
|
<dd> |
2419 |
|
|
Total file size backed up (as reported by smbclient, tar or rsync). |
2420 |
|
|
</dd> |
2421 |
|
|
<p></p> |
2422 |
|
|
<dt><strong><a name="item_nfilesexist">nFilesExist</a></strong><br /> |
2423 |
|
|
</dt> |
2424 |
|
|
<dd> |
2425 |
|
|
Number of files that were already in the pool |
2426 |
|
|
(as determined by BackupPC_dump and BackupPC_link). |
2427 |
|
|
</dd> |
2428 |
|
|
<p></p> |
2429 |
|
|
<dt><strong><a name="item_sizeexist">sizeExist</a></strong><br /> |
2430 |
|
|
</dt> |
2431 |
|
|
<dd> |
2432 |
|
|
Total size of files that were already in the pool |
2433 |
|
|
(as determined by BackupPC_dump and BackupPC_link). |
2434 |
|
|
</dd> |
2435 |
|
|
<p></p> |
2436 |
|
|
<dt><strong><a name="item_nfilesnew">nFilesNew</a></strong><br /> |
2437 |
|
|
</dt> |
2438 |
|
|
<dd> |
2439 |
|
|
Number of files that were not in the pool |
2440 |
|
|
(as determined by BackupPC_link). |
2441 |
|
|
</dd> |
2442 |
|
|
<p></p> |
2443 |
|
|
<dt><strong><a name="item_sizenew">sizeNew</a></strong><br /> |
2444 |
|
|
</dt> |
2445 |
|
|
<dd> |
2446 |
|
|
Total size of files that were not in the pool |
2447 |
|
|
(as determined by BackupPC_link). |
2448 |
|
|
</dd> |
2449 |
|
|
<p></p> |
2450 |
|
|
<dt><strong><a name="item_xfererrs">xferErrs</a></strong><br /> |
2451 |
|
|
</dt> |
2452 |
|
|
<dd> |
2453 |
|
|
Number of errors or warnings from smbclient, tar or rsync. |
2454 |
|
|
</dd> |
2455 |
|
|
<p></p> |
2456 |
|
|
<dt><strong><a name="item_xferbadfile">xferBadFile</a></strong><br /> |
2457 |
|
|
</dt> |
2458 |
|
|
<dd> |
2459 |
|
|
Number of errors from smbclient that were bad file errors (zero otherwise). |
2460 |
|
|
</dd> |
2461 |
|
|
<p></p> |
2462 |
|
|
<dt><strong><a name="item_xferbadshare">xferBadShare</a></strong><br /> |
2463 |
|
|
</dt> |
2464 |
|
|
<dd> |
2465 |
|
|
Number of errors from smbclient that were bad share errors (zero otherwise). |
2466 |
|
|
</dd> |
2467 |
|
|
<p></p> |
2468 |
|
|
<dt><strong><a name="item_tarerrs">tarErrs</a></strong><br /> |
2469 |
|
|
</dt> |
2470 |
|
|
<dd> |
2471 |
|
|
Number of errors from BackupPC_tarExtract. |
2472 |
|
|
</dd> |
2473 |
|
|
<p></p> |
2474 |
|
|
<dt><strong><a name="item_compress">compress</a></strong><br /> |
2475 |
|
|
</dt> |
2476 |
|
|
<dd> |
2477 |
|
|
The compression level used on this backup. Zero or empty means no |
2478 |
|
|
compression. |
2479 |
|
|
</dd> |
2480 |
|
|
<p></p> |
2481 |
|
|
<dt><strong><a name="item_sizeexistcomp">sizeExistComp</a></strong><br /> |
2482 |
|
|
</dt> |
2483 |
|
|
<dd> |
2484 |
|
|
Total compressed size of files that were already in the pool |
2485 |
|
|
(as determined by BackupPC_dump and BackupPC_link). |
2486 |
|
|
</dd> |
2487 |
|
|
<p></p> |
2488 |
|
|
<dt><strong><a name="item_sizenewcomp">sizeNewComp</a></strong><br /> |
2489 |
|
|
</dt> |
2490 |
|
|
<dd> |
2491 |
|
|
Total compressed size of files that were not in the pool |
2492 |
|
|
(as determined by BackupPC_link). |
2493 |
|
|
</dd> |
2494 |
|
|
<p></p> |
2495 |
|
|
<dt><strong><a name="item_nofill">noFill</a></strong><br /> |
2496 |
|
|
</dt> |
2497 |
|
|
<dd> |
2498 |
|
|
Set if this backup has not been filled in with the most recent |
2499 |
|
|
previous filled or full backup. See <a href="#item_%24conf%7bincrfill%7d">$Conf{IncrFill}</A>. |
2500 |
|
|
</dd> |
2501 |
|
|
<p></p> |
2502 |
|
|
<dt><strong><a name="item_fillfromnum">fillFromNum</a></strong><br /> |
2503 |
|
|
</dt> |
2504 |
|
|
<dd> |
2505 |
|
|
If this backup was filled (ie: noFill is 0) then this is the |
2506 |
|
|
number of the backup that it was filled from |
2507 |
|
|
</dd> |
2508 |
|
|
<p></p> |
2509 |
|
|
<dt><strong><a name="item_mangle">mangle</a></strong><br /> |
2510 |
|
|
</dt> |
2511 |
|
|
<dd> |
2512 |
|
|
Set if this backup has mangled file names and attributes. Always |
2513 |
|
|
true for backups in v1.4.0 and above. False for all backups prior |
2514 |
|
|
to v1.4.0. |
2515 |
|
|
</dd> |
2516 |
|
|
<p></p> |
2517 |
|
|
<dt><strong><a name="item_xfermethod">xferMethod</a></strong><br /> |
2518 |
|
|
</dt> |
2519 |
|
|
<dd> |
2520 |
|
|
Set to the value of <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> when this dump was done. |
2521 |
|
|
</dd> |
2522 |
|
|
<p></p> |
2523 |
|
|
<dt><strong><a name="item_level">level</a></strong><br /> |
2524 |
|
|
</dt> |
2525 |
|
|
<dd> |
2526 |
|
|
The level of this dump. A full dump is level 0. Currently incrementals |
2527 |
|
|
are 1. But when multi-level incrementals are supported this will reflect |
2528 |
|
|
each dump's incremental level. |
2529 |
|
|
</dd> |
2530 |
|
|
<p></p></dl> |
2531 |
|
|
<dt><strong><a name="item_restores">restores</a></strong><br /> |
2532 |
|
|
</dt> |
2533 |
|
|
<dd> |
2534 |
|
|
A tab-delimited ascii table listing information about each requested |
2535 |
|
|
restore, one per row. The columns are: |
2536 |
|
|
</dd> |
2537 |
|
|
<dl> |
2538 |
|
|
<dt><strong>num</strong><br /> |
2539 |
|
|
</dt> |
2540 |
|
|
<dd> |
2541 |
|
|
Restore number (matches the suffix of the RestoreInfo.nnn and |
2542 |
|
|
RestoreLOG.nnn.z file), unrelated to the backup number. |
2543 |
|
|
</dd> |
2544 |
|
|
<p></p> |
2545 |
|
|
<dt><strong>startTime</strong><br /> |
2546 |
|
|
</dt> |
2547 |
|
|
<dd> |
2548 |
|
|
Start time of the restore in unix seconds. |
2549 |
|
|
</dd> |
2550 |
|
|
<p></p> |
2551 |
|
|
<dt><strong>endTime</strong><br /> |
2552 |
|
|
</dt> |
2553 |
|
|
<dd> |
2554 |
|
|
End time of the restore in unix seconds. |
2555 |
|
|
</dd> |
2556 |
|
|
<p></p> |
2557 |
|
|
<dt><strong><a name="item_result">result</a></strong><br /> |
2558 |
|
|
</dt> |
2559 |
|
|
<dd> |
2560 |
|
|
Result (ok or failed). |
2561 |
|
|
</dd> |
2562 |
|
|
<p></p> |
2563 |
|
|
<dt><strong><a name="item_errormsg">errorMsg</a></strong><br /> |
2564 |
|
|
</dt> |
2565 |
|
|
<dd> |
2566 |
|
|
Error message if restore failed. |
2567 |
|
|
</dd> |
2568 |
|
|
<p></p> |
2569 |
|
|
<dt><strong>nFiles</strong><br /> |
2570 |
|
|
</dt> |
2571 |
|
|
<dd> |
2572 |
|
|
Number of files restored. |
2573 |
|
|
</dd> |
2574 |
|
|
<p></p> |
2575 |
|
|
<dt><strong>size</strong><br /> |
2576 |
|
|
</dt> |
2577 |
|
|
<dd> |
2578 |
|
|
Size in bytes of the restored files. |
2579 |
|
|
</dd> |
2580 |
|
|
<p></p> |
2581 |
|
|
<dt><strong><a name="item_tarcreateerrs">tarCreateErrs</a></strong><br /> |
2582 |
|
|
</dt> |
2583 |
|
|
<dd> |
2584 |
|
|
Number of errors from BackupPC_tarCreate during restore. |
2585 |
|
|
</dd> |
2586 |
|
|
<p></p> |
2587 |
|
|
<dt><strong>xferErrs</strong><br /> |
2588 |
|
|
</dt> |
2589 |
|
|
<dd> |
2590 |
|
|
Number of errors from smbclient, tar or rsync during restore. |
2591 |
|
|
</dd> |
2592 |
|
|
<p></p></dl> |
2593 |
|
|
<dt><strong><a name="item_archives">archives</a></strong><br /> |
2594 |
|
|
</dt> |
2595 |
|
|
<dd> |
2596 |
|
|
A tab-delimited ascii table listing information about each requested |
2597 |
|
|
archive, one per row. The columns are: |
2598 |
|
|
</dd> |
2599 |
|
|
<dl> |
2600 |
|
|
<dt><strong>num</strong><br /> |
2601 |
|
|
</dt> |
2602 |
|
|
<dd> |
2603 |
|
|
Archive number (matches the suffix of the ArchiveInfo.nnn and |
2604 |
|
|
ArchiveLOG.nnn.z file), unrelated to the backup or restore number. |
2605 |
|
|
</dd> |
2606 |
|
|
<p></p> |
2607 |
|
|
<dt><strong>startTime</strong><br /> |
2608 |
|
|
</dt> |
2609 |
|
|
<dd> |
2610 |
|
|
Start time of the restore in unix seconds. |
2611 |
|
|
</dd> |
2612 |
|
|
<p></p> |
2613 |
|
|
<dt><strong>endTime</strong><br /> |
2614 |
|
|
</dt> |
2615 |
|
|
<dd> |
2616 |
|
|
End time of the restore in unix seconds. |
2617 |
|
|
</dd> |
2618 |
|
|
<p></p> |
2619 |
|
|
<dt><strong>result</strong><br /> |
2620 |
|
|
</dt> |
2621 |
|
|
<dd> |
2622 |
|
|
Result (ok or failed). |
2623 |
|
|
</dd> |
2624 |
|
|
<p></p> |
2625 |
|
|
<dt><strong>errorMsg</strong><br /> |
2626 |
|
|
</dt> |
2627 |
|
|
<dd> |
2628 |
|
|
Error message if archive failed. |
2629 |
|
|
</dd> |
2630 |
|
|
<p></p></dl> |
2631 |
|
|
</dl> |
2632 |
|
|
</dl> |
2633 |
|
|
<p> |
2634 |
|
|
</p> |
2635 |
|
|
<h2><a name="compressed_file_format">Compressed file format</a></h2> |
2636 |
|
|
<p>The compressed file format is as generated by Compress::Zlib::deflate |
2637 |
|
|
with one minor, but important, tweak. Since Compress::Zlib::inflate |
2638 |
|
|
fully inflates its argument in memory, it could take large amounts of |
2639 |
|
|
memory if it was inflating a highly compressed file. For example, a |
2640 |
|
|
200MB file of 0x0 bytes compresses to around 200K bytes. If |
2641 |
|
|
Compress::Zlib::inflate was called with this single 200K buffer, it |
2642 |
|
|
would need to allocate 200MB of memory to return the result.</p> |
2643 |
|
|
<p>BackupPC watches how efficiently a file is compressing. If a big file |
2644 |
|
|
has very high compression (meaning it will use too much memory when it |
2645 |
|
|
is inflated), BackupPC calls the <code>flush()</code> method, which gracefully |
2646 |
|
|
completes the current compression. BackupPC then starts another |
2647 |
|
|
deflate and simply appends the output file. So the BackupPC compressed |
2648 |
|
|
file format is one or more concatenated deflations/flushes. The specific |
2649 |
|
|
ratios that BackupPC uses is that if a 6MB chunk compresses to less |
2650 |
|
|
than 64K then a flush will be done.</p> |
2651 |
|
|
<p>Back to the example of the 200MB file of 0x0 bytes. Adding flushes |
2652 |
|
|
every 6MB adds only 200 or so bytes to the 200K output. So the |
2653 |
|
|
storage cost of flushing is negligible.</p> |
2654 |
|
|
<p>To easily decompress a BackupPC compressed file, the script |
2655 |
|
|
BackupPC_zcat can be found in __INSTALLDIR__/bin. For each |
2656 |
|
|
file name argument it inflates the file and writes it to stdout.</p> |
2657 |
|
|
<p> |
2658 |
|
|
</p> |
2659 |
|
|
<h2><a name="rsync_checksum_caching">Rsync checksum caching</a></h2> |
2660 |
|
|
<p>An incremental backup with rsync compares attributes on the client |
2661 |
|
|
with the last full backup. Any files with identical attributes |
2662 |
|
|
are skipped. A full backup with rsync sets the --ignore-times |
2663 |
|
|
option, which causes every file to be examined independent of |
2664 |
|
|
attributes.</p> |
2665 |
|
|
<p>Each file is examined by generating block checksums (default 2K |
2666 |
|
|
blocks) on the receiving side (that's the BackupPC side), sending |
2667 |
|
|
those checksums to the client, where the remote rsync matches those |
2668 |
|
|
checksums with the corresponding file. The matching blocks and new |
2669 |
|
|
data is sent back, allowing the client file to be reassembled. |
2670 |
|
|
A checksum for the entire file is sent to as an extra check the |
2671 |
|
|
the reconstructed file is correct.</p> |
2672 |
|
|
<p>This results in significant disk IO and computation for BackupPC: |
2673 |
|
|
every file in a full backup, or any file with non-matching attributes |
2674 |
|
|
in an incremental backup, needs to be uncompressed, block checksums |
2675 |
|
|
computed and sent. Then the receiving side reassembles the file and |
2676 |
|
|
has to verify the whole-file checksum. Even if the file is identical, |
2677 |
|
|
prior to 2.1.0, BackupPC had to read and uncompress the file twice, |
2678 |
|
|
once to compute the block checksums and later to verify the whole-file |
2679 |
|
|
checksum.</p> |
2680 |
|
|
<p>Starting in 2.1.0, BackupPC supports optional checksum caching, |
2681 |
|
|
which means the block and file checksums only need to be computed |
2682 |
|
|
once for each file. This results in a significant performance |
2683 |
|
|
improvement. This only works for compressed pool files. |
2684 |
|
|
It is enabled by adding</p> |
2685 |
|
|
<pre> |
2686 |
|
|
'--checksum-seed=32761',</pre> |
2687 |
|
|
<p>to <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A> and <a href="#item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs}</A>.</p> |
2688 |
|
|
<p>Rsync versions prior to and including rsync-2.6.2 need a small patch to |
2689 |
|
|
add support for the --checksum-seed option. This patch is available in |
2690 |
|
|
the cygwin-rsyncd package at <a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a>. |
2691 |
|
|
This patch is already included in rsync CVS, so it will be standard |
2692 |
|
|
in future versions of rsync.</p> |
2693 |
|
|
<p>When this option is present, BackupPC will add block and file checksums |
2694 |
|
|
to the compressed pool file the next time a pool file is used and it |
2695 |
|
|
doesn't already have cached checksums. The first time a new file is |
2696 |
|
|
written to the pool, the checksums are not appended. The next time |
2697 |
|
|
checksums are needed for a file, they are computed and added. So the |
2698 |
|
|
full performance benefit of checksum caching won't be noticed until the |
2699 |
|
|
third time a pool file is used (eg: the third full backup).</p> |
2700 |
|
|
<p>With checksum caching enabled, there is a risk that should a file's contents |
2701 |
|
|
in the pool be corrupted due to a disk problem, but the cached checksums |
2702 |
|
|
are still correct, the corruption will not be detected by a full backup, |
2703 |
|
|
since the file contents are no longer read and compared. To reduce the |
2704 |
|
|
chance that this remains undetected, BackupPC can recheck cached checksums |
2705 |
|
|
for a fraction of the files. This fraction is set with the |
2706 |
|
|
<a href="#item_%24conf%7brsynccsumcacheverifyprob%7d">$Conf{RsyncCsumCacheVerifyProb}</A> setting. The default value of 0.01 means |
2707 |
|
|
that 1% of the time a file's checksums are read, the checksums are verified. |
2708 |
|
|
This reduces performance slightly, but, over time, ensures that files |
2709 |
|
|
contents are in sync with the cached checksums.</p> |
2710 |
|
|
<p>The format of the cached checksum data can be discovered by looking at |
2711 |
|
|
the code. Basically, the first byte of the compressed file is changed |
2712 |
|
|
to denote that checksums are appended. The block and file checksum |
2713 |
|
|
data, plus some other information and magic word, are appended to the |
2714 |
|
|
compressed file. This allows the cache update to be done in-place.</p> |
2715 |
|
|
<p> |
2716 |
|
|
</p> |
2717 |
|
|
<h2><a name="file_name_mangling">File name mangling</a></h2> |
2718 |
|
|
<p>Backup file names are stored in ``mangled'' form. Each node of |
2719 |
|
|
a path is preceded by ``f'' (mnemonic: file), and special characters |
2720 |
|
|
(\n, \r, % and /) are URI-encoded as ``%xx'', where xx is the ascii |
2721 |
|
|
character's hex value. So c:/craig/example.txt is now stored as |
2722 |
|
|
fc/fcraig/fexample.txt.</p> |
2723 |
|
|
<p>This was done mainly so meta-data could be stored alongside the backup |
2724 |
|
|
files without name collisions. In particular, the attributes for the |
2725 |
|
|
files in a directory are stored in a file called ``attrib'', and mangling |
2726 |
|
|
avoids file name collisions (I discarded the idea of having a duplicate |
2727 |
|
|
directory tree for every backup just to store the attributes). Other |
2728 |
|
|
meta-data (eg: rsync checksums) could be stored in file names preceded |
2729 |
|
|
by, eg, ``c''. There are two other benefits to mangling: the share name |
2730 |
|
|
might contain ``/'' (eg: ``/home/craig'' for tar transport), and I wanted |
2731 |
|
|
that represented as a single level in the storage tree. Secondly, as |
2732 |
|
|
files are written to NewFileList for later processing by BackupPC_link, |
2733 |
|
|
embedded newlines in the file's path will cause problems which are |
2734 |
|
|
avoided by mangling.</p> |
2735 |
|
|
<p>The CGI script undoes the mangling, so it is invisible to the user. |
2736 |
|
|
Old (unmangled) backups are still supported by the CGI |
2737 |
|
|
interface.</p> |
2738 |
|
|
<p> |
2739 |
|
|
</p> |
2740 |
|
|
<h2><a name="special_files">Special files</a></h2> |
2741 |
|
|
<p>Linux/unix file systems support several special file types: symbolic |
2742 |
|
|
links, character and block device files, fifos (pipes) and unix-domain |
2743 |
|
|
sockets. All except unix-domain sockets are supported by BackupPC |
2744 |
|
|
(there's no point in backing up or restoring unix-domain sockets since |
2745 |
|
|
they only have meaning after a process creates them). Symbolic links are |
2746 |
|
|
stored as a plain file whose contents are the contents of the link (not |
2747 |
|
|
the file it points to). This file is compressed and pooled like any |
2748 |
|
|
normal file. Character and block device files are also stored as plain |
2749 |
|
|
files, whose contents are two integers separated by a comma; the numbers |
2750 |
|
|
are the major and minor device number. These files are compressed and |
2751 |
|
|
pooled like any normal file. Fifo files are stored as empty plain files |
2752 |
|
|
(which are not pooled since they have zero size). In all cases, the |
2753 |
|
|
original file type is stored in the attrib file so it can be correctly |
2754 |
|
|
restored.</p> |
2755 |
|
|
<p>Hardlinks are also supported. When GNU tar first encounters a file with |
2756 |
|
|
more than one link (ie: hardlinks) it dumps it as a regular file. When |
2757 |
|
|
it sees the second and subsequent hardlinks to the same file, it dumps |
2758 |
|
|
just the hardlink information. BackupPC correctly recognizes these |
2759 |
|
|
hardlinks and stores them just like symlinks: a regular text file |
2760 |
|
|
whose contents is the path of the file linked to. The CGI script |
2761 |
|
|
will download the original file when you click on a hardlink.</p> |
2762 |
|
|
<p>Also, BackupPC_tarCreate has enough magic to re-create the hardlinks |
2763 |
|
|
dynamically based on whether or not the original file and hardlinks |
2764 |
|
|
are both included in the tar file. For example, imagine a/b/x is a |
2765 |
|
|
hardlink to a/c/y. If you use BackupPC_tarCreate to restore directory |
2766 |
|
|
a, then the tar file will include a/b/x as the original file and a/c/y |
2767 |
|
|
will be a hardlink to a/b/x. If, instead you restore a/c, then the |
2768 |
|
|
tar file will include a/c/y as the original file, not a hardlink.</p> |
2769 |
|
|
<p> |
2770 |
|
|
</p> |
2771 |
|
|
<h2><a name="attribute_file_format">Attribute file format</a></h2> |
2772 |
|
|
<p>The unix attributes for the contents of a directory (all the files and |
2773 |
|
|
directories in that directory) are stored in a file called attrib. |
2774 |
|
|
There is a single attrib file for each directory in a backup. |
2775 |
|
|
For example, if c:/craig contains a single file c:/craig/example.txt, |
2776 |
|
|
that file would be stored as fc/fcraig/fexample.txt and there would be an |
2777 |
|
|
attribute file in fc/fcraig/attrib (and also fc/attrib and ./attrib). |
2778 |
|
|
The file fc/fcraig/attrib would contain a single entry containing the |
2779 |
|
|
attributes for fc/fcraig/fexample.txt.</p> |
2780 |
|
|
<p>The attrib file starts with a magic number, followed by the |
2781 |
|
|
concatenation of the following information for each file:</p> |
2782 |
|
|
<ul> |
2783 |
|
|
<li> |
2784 |
|
|
File name length in perl's pack ``w'' format (variable length base 128). |
2785 |
|
|
<p></p> |
2786 |
|
|
<li> |
2787 |
|
|
File name. |
2788 |
|
|
<p></p> |
2789 |
|
|
<li> |
2790 |
|
|
The unix file type, mode, uid, gid and file size divided by 4GB and |
2791 |
|
|
file size modulo 4GB (type mode uid gid sizeDiv4GB sizeMod4GB), |
2792 |
|
|
in perl's pack ``w'' format (variable length base 128). |
2793 |
|
|
<p></p> |
2794 |
|
|
<li> |
2795 |
|
|
The unix mtime (unix seconds) in perl's pack ``N'' format (32 bit integer). |
2796 |
|
|
<p></p></ul> |
2797 |
|
|
<p>The attrib file is also compressed if compression is enabled. |
2798 |
|
|
See the lib/BackupPC/Attrib.pm module for full details.</p> |
2799 |
|
|
<p>Attribute files are pooled just like normal backup files. This saves |
2800 |
|
|
space if all the files in a directory have the same attributes across |
2801 |
|
|
multiple backups, which is common.</p> |
2802 |
|
|
<p> |
2803 |
|
|
</p> |
2804 |
|
|
<h2><a name="optimizations">Optimizations</a></h2> |
2805 |
|
|
<p>BackupPC doesn't care about the access time of files in the pool |
2806 |
|
|
since it saves attribute meta-data separate from the files. Since |
2807 |
|
|
BackupPC mostly does reads from disk, maintaining the access time of |
2808 |
|
|
files generates a lot of unnecessary disk writes. So, provided |
2809 |
|
|
BackupPC has a dedicated data disk, you should consider mounting |
2810 |
|
|
BackupPC's data directory with the noatime attribute (see mount(1)).</p> |
2811 |
|
|
<p> |
2812 |
|
|
</p> |
2813 |
|
|
<h2><a name="limitations">Limitations</a></h2> |
2814 |
|
|
<p>BackupPC isn't perfect (but it is getting better). Please see |
2815 |
|
|
<a href="http://backuppc.sourceforge.net/faq/limitations.html">http://backuppc.sourceforge.net/faq/limitations.html</a> for a |
2816 |
|
|
discussion of some of BackupPC's limitations.</p> |
2817 |
|
|
<p> |
2818 |
|
|
</p> |
2819 |
|
|
<h2><a name="security_issues">Security issues</a></h2> |
2820 |
|
|
<p>Please see <a href="http://backuppc.sourceforge.net/faq/security.html">http://backuppc.sourceforge.net/faq/security.html</a> for a |
2821 |
|
|
discussion of some of various security issues.</p> |
2822 |
|
|
<p> |
2823 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
2824 |
|
|
</p> |
2825 |
|
|
<hr /> |
2826 |
|
|
<h1><a name="configuration_file">Configuration File</a></h1> |
2827 |
|
|
<p>The BackupPC configuration file resides in __TOPDIR__/conf/config.pl. |
2828 |
|
|
Optional per-PC configuration files reside in __TOPDIR__/pc/$host/config.pl. |
2829 |
|
|
This file can be used to override settings just for a particular PC.</p> |
2830 |
|
|
<p> |
2831 |
|
|
</p> |
2832 |
|
|
<h2><a name="modifying_the_main_configuration_file">Modifying the main configuration file</a></h2> |
2833 |
|
|
<p>The configuration file is a perl script that is executed by BackupPC, so |
2834 |
|
|
you should be careful to preserve the file syntax (punctuation, quotes |
2835 |
|
|
etc) when you edit it. It is recommended that you use CVS, RCS or some |
2836 |
|
|
other method of source control for changing config.pl.</p> |
2837 |
|
|
<p>BackupPC reads or re-reads the main configuration file and |
2838 |
|
|
the hosts file in three cases:</p> |
2839 |
|
|
<ul> |
2840 |
|
|
<li> |
2841 |
|
|
Upon startup. |
2842 |
|
|
<p></p> |
2843 |
|
|
<li> |
2844 |
|
|
When BackupPC is sent a HUP (-1) signal. Assuming you installed the |
2845 |
|
|
init.d script, you can also do this with ``/etc/init.d/backuppc reload''. |
2846 |
|
|
<p></p> |
2847 |
|
|
<li> |
2848 |
|
|
When the modification time of config.pl file changes. BackupPC |
2849 |
|
|
checks the modification time once during each regular wakeup. |
2850 |
|
|
<p></p></ul> |
2851 |
|
|
<p>Whenever you change the configuration file you can either do |
2852 |
|
|
a kill -HUP BackupPC_pid or simply wait until the next regular |
2853 |
|
|
wakeup period.</p> |
2854 |
|
|
<p>Each time the configuration file is re-read a message is reported in the |
2855 |
|
|
LOG file, so you can tail it (or view it via the CGI interface) to make |
2856 |
|
|
sure your kill -HUP worked. Errors in parsing the configuration file are |
2857 |
|
|
also reported in the LOG file.</p> |
2858 |
|
|
<p>The optional per-PC configuration file (__TOPDIR__/pc/$host/config.pl) |
2859 |
|
|
is read whenever it is needed by BackupPC_dump, BackupPC_link and others.</p> |
2860 |
|
|
<p> |
2861 |
|
|
</p> |
2862 |
|
|
<h2><a name="configuration_file_includes">Configuration file includes</a></h2> |
2863 |
|
|
<p>If you have a heterogeneous set of clients (eg: a variety of WinXX and |
2864 |
|
|
linux/unix machines) you will need to create host-specific config.pl files |
2865 |
|
|
for some or all of these machines to customize the default settings from |
2866 |
|
|
the master config.pl file (at a minimum to set <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A>).</p> |
2867 |
|
|
<p>Since the config.pl file is just regular perl code, you can include |
2868 |
|
|
one config file from another. For example, imagine you had three general |
2869 |
|
|
classes of machines: WinXX desktops, linux machines in the DMZ and |
2870 |
|
|
linux desktops. You could create three config files in __TOPDIR__/conf:</p> |
2871 |
|
|
<pre> |
2872 |
|
|
__TOPDIR__/conf/ConfigWinDesktop.pl |
2873 |
|
|
__TOPDIR__/conf/ConfigLinuxDMZ.pl |
2874 |
|
|
__TOPDIR__/conf/ConfigLinuxDesktop.pl</pre> |
2875 |
|
|
<p>From each client's directory you can either add a symbolic link to |
2876 |
|
|
the appropriate config file:</p> |
2877 |
|
|
<pre> |
2878 |
|
|
cd __TOPDIR__/pc/$host |
2879 |
|
|
ln -s ../../conf/ConfigWinDesktop.pl config.pl</pre> |
2880 |
|
|
<p>or, better yet, create a config.pl file in __TOPDIR__/pc/$host |
2881 |
|
|
that includes the default config.pl file using perl's ``do'' |
2882 |
|
|
command:</p> |
2883 |
|
|
<pre> |
2884 |
|
|
do "__TOPDIR__/conf/ConfigWinDesktop.pl";</pre> |
2885 |
|
|
<p>This alternative allows you to set other configuration options |
2886 |
|
|
specific to each host after the ``do'' command (perhaps even |
2887 |
|
|
overriding the settings in the included file).</p> |
2888 |
|
|
<p>Note that you could also include snippets of configuration settings |
2889 |
|
|
from the main configuration file. However, be aware that the |
2890 |
|
|
modification-time checking that BackupPC does only applies to the |
2891 |
|
|
main configuration file: if you change one of the included files, |
2892 |
|
|
BackupPC won't notice. You will need to either touch the main |
2893 |
|
|
configuration file too, or send BackupPC a HUP (-1) signal.</p> |
2894 |
|
|
<p> |
2895 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
2896 |
|
|
</p> |
2897 |
|
|
<hr /> |
2898 |
|
|
<h1><a name="configuration_parameters">Configuration Parameters</a></h1> |
2899 |
|
|
<p>The configuration parameters are divided into five general groups. |
2900 |
|
|
The first group (general server configuration) provides general |
2901 |
|
|
configuration for BackupPC. The next two groups describe what to |
2902 |
|
|
backup, when to do it, and how long to keep it. The fourth group |
2903 |
|
|
are settings for email reminders, and the final group contains |
2904 |
|
|
settings for the CGI interface.</p> |
2905 |
|
|
<p>All configuration settings in the second through fifth groups can |
2906 |
|
|
be overridden by the per-PC config.pl file.</p> |
2907 |
|
|
<p> |
2908 |
|
|
</p> |
2909 |
|
|
<h2><a name="general_server_configuration">General server configuration</a></h2> |
2910 |
|
|
<dl> |
2911 |
|
|
<dt><strong><a name="item_%24conf%7bserverhost%7d">$Conf{ServerHost} = '';</a></strong><br /> |
2912 |
|
|
</dt> |
2913 |
|
|
<dd> |
2914 |
|
|
Host name on which the BackupPC server is running. |
2915 |
|
|
</dd> |
2916 |
|
|
<p></p> |
2917 |
|
|
<dt><strong><a name="item_%24conf%7bserverport%7d">$Conf{ServerPort} = -1;</a></strong><br /> |
2918 |
|
|
</dt> |
2919 |
|
|
<dd> |
2920 |
|
|
TCP port number on which the BackupPC server listens for and accepts |
2921 |
|
|
connections. Normally this should be disabled (set to -1). The TCP |
2922 |
|
|
port is only needed if apache runs on a different machine from BackupPC. |
2923 |
|
|
In that case, set this to any spare port number over 1024 (eg: 2359). |
2924 |
|
|
If you enable the TCP port, make sure you set <a href="#item_%24conf%7bservermesgsecret%7d">$Conf{ServerMesgSecret}</A> |
2925 |
|
|
too! |
2926 |
|
|
</dd> |
2927 |
|
|
<p></p> |
2928 |
|
|
<dt><strong><a name="item_%24conf%7bservermesgsecret%7d">$Conf{ServerMesgSecret} = '';</a></strong><br /> |
2929 |
|
|
</dt> |
2930 |
|
|
<dd> |
2931 |
|
|
Shared secret to make the TCP port secure. Set this to a hard to guess |
2932 |
|
|
string if you enable the TCP port (ie: <a href="#item_%24conf%7bserverport%7d">$Conf{ServerPort}</A> > 0). |
2933 |
|
|
</dd> |
2934 |
|
|
<dd> |
2935 |
|
|
<p>To avoid possible attacks via the TCP socket interface, every client |
2936 |
|
|
message is protected by an MD5 digest. The MD5 digest includes four |
2937 |
|
|
items: |
2938 |
|
|
- a seed that is sent to the client when the connection opens |
2939 |
|
|
- a sequence number that increments for each message |
2940 |
|
|
- a shared secret that is stored in <a href="#item_%24conf%7bservermesgsecret%7d">$Conf{ServerMesgSecret}</A> |
2941 |
|
|
- the message itself.</p> |
2942 |
|
|
</dd> |
2943 |
|
|
<dd> |
2944 |
|
|
<p>The message is sent in plain text preceded by the MD5 digest. A |
2945 |
|
|
snooper can see the plain-text seed sent by BackupPC and plain-text |
2946 |
|
|
message from the client, but cannot construct a valid MD5 digest since |
2947 |
|
|
the secret <a href="#item_%24conf%7bservermesgsecret%7d">$Conf{ServerMesgSecret}</A> is unknown. A replay attack is |
2948 |
|
|
not possible since the seed changes on a per-connection and |
2949 |
|
|
per-message basis.</p> |
2950 |
|
|
</dd> |
2951 |
|
|
<p></p> |
2952 |
|
|
<dt><strong><a name="item_%24conf%7bmypath%7d">$Conf{MyPath} = '/bin';</a></strong><br /> |
2953 |
|
|
</dt> |
2954 |
|
|
<dd> |
2955 |
|
|
PATH setting for BackupPC. An explicit value is necessary |
2956 |
|
|
for taint mode. Value shouldn't matter too much since |
2957 |
|
|
all execs use explicit paths. However, taint mode in perl |
2958 |
|
|
will complain if this directory is world writable. |
2959 |
|
|
</dd> |
2960 |
|
|
<p></p> |
2961 |
|
|
<dt><strong><a name="item_%24conf%7bumaskmode%7d">$Conf{UmaskMode} = 027;</a></strong><br /> |
2962 |
|
|
</dt> |
2963 |
|
|
<dd> |
2964 |
|
|
Permission mask for directories and files created by BackupPC. |
2965 |
|
|
Default value prevents any access from group other, and prevents |
2966 |
|
|
group write. |
2967 |
|
|
</dd> |
2968 |
|
|
<p></p> |
2969 |
|
|
<dt><strong><a name="item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule} = [1..23];</a></strong><br /> |
2970 |
|
|
</dt> |
2971 |
|
|
<dd> |
2972 |
|
|
Times at which we wake up, check all the PCs, and schedule necessary |
2973 |
|
|
backups. Times are measured in hours since midnight. Can be |
2974 |
|
|
fractional if necessary (eg: 4.25 means 4:15am). |
2975 |
|
|
</dd> |
2976 |
|
|
<dd> |
2977 |
|
|
<p>If the hosts you are backing up are always connected to the network |
2978 |
|
|
you might have only one or two wakeups each night. This will keep |
2979 |
|
|
the backup activity after hours. On the other hand, if you are backing |
2980 |
|
|
up laptops that are only intermittently connected to the network you |
2981 |
|
|
will want to have frequent wakeups (eg: hourly) to maximized the chance |
2982 |
|
|
that each laptop is backed up.</p> |
2983 |
|
|
</dd> |
2984 |
|
|
<dd> |
2985 |
|
|
<p>Examples:</p> |
2986 |
|
|
</dd> |
2987 |
|
|
<dd> |
2988 |
|
|
<pre> |
2989 |
|
|
<a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> = [22.5]; # once per day at 10:30 pm. |
2990 |
|
|
<a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> = [1..23]; # every hour except midnight |
2991 |
|
|
<a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> = [2,4,6,8,10,12,14,16,18,20,22]; # every 2 hours</pre> |
2992 |
|
|
</dd> |
2993 |
|
|
<dd> |
2994 |
|
|
<p>The default value is every hour except midnight.</p> |
2995 |
|
|
</dd> |
2996 |
|
|
<dd> |
2997 |
|
|
<p>The first entry of <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> is when BackupPC_nightly |
2998 |
|
|
is run. No other backups can run while BackupPC_nightly is |
2999 |
|
|
running. You might want to re-arrange the entries in |
3000 |
|
|
<a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> (they don't have to be ascending) so that |
3001 |
|
|
the first entry is when you want BackupPC_nightly to run |
3002 |
|
|
(eg: when you don't expect a lot of regular backups to run).</p> |
3003 |
|
|
</dd> |
3004 |
|
|
<p></p> |
3005 |
|
|
<dt><strong><a name="item_%24conf%7bmaxbackups%7d">$Conf{MaxBackups} = 4;</a></strong><br /> |
3006 |
|
|
</dt> |
3007 |
|
|
<dd> |
3008 |
|
|
Maximum number of simultaneous backups to run. If there |
3009 |
|
|
are no user backup requests then this is the maximum number |
3010 |
|
|
of simultaneous backups. |
3011 |
|
|
</dd> |
3012 |
|
|
<p></p> |
3013 |
|
|
<dt><strong><a name="item_%24conf%7bmaxuserbackups%7d">$Conf{MaxUserBackups} = 4;</a></strong><br /> |
3014 |
|
|
</dt> |
3015 |
|
|
<dd> |
3016 |
|
|
Additional number of simultaneous backups that users can run. |
3017 |
|
|
As many as <a href="#item_%24conf%7bmaxbackups%7d">$Conf{MaxBackups}</A> + <a href="#item_%24conf%7bmaxuserbackups%7d">$Conf{MaxUserBackups}</A> requests can |
3018 |
|
|
run at the same time. |
3019 |
|
|
</dd> |
3020 |
|
|
<p></p> |
3021 |
|
|
<dt><strong><a name="item_%24conf%7bmaxpendingcmds%7d">$Conf{MaxPendingCmds} = 10;</a></strong><br /> |
3022 |
|
|
</dt> |
3023 |
|
|
<dd> |
3024 |
|
|
Maximum number of pending link commands. New backups will only be |
3025 |
|
|
started if there are no more than <a href="#item_%24conf%7bmaxpendingcmds%7d">$Conf{MaxPendingCmds}</A> plus |
3026 |
|
|
<a href="#item_%24conf%7bmaxbackups%7d">$Conf{MaxBackups}</A> number of pending link commands, plus running jobs. |
3027 |
|
|
This limit is to make sure BackupPC doesn't fall too far behind in |
3028 |
|
|
running BackupPC_link commands. |
3029 |
|
|
</dd> |
3030 |
|
|
<p></p> |
3031 |
|
|
<dt><strong><a name="item_%24conf%7bmaxbackuppcnightlyjobs%7d">$Conf{MaxBackupPCNightlyJobs} = 2;</a></strong><br /> |
3032 |
|
|
</dt> |
3033 |
|
|
<dd> |
3034 |
|
|
How many BackupPC_nightly processes to run in parallel. |
3035 |
|
|
</dd> |
3036 |
|
|
<dd> |
3037 |
|
|
<p>Each night, at the first wakeup listed in <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A>, |
3038 |
|
|
BackupPC_nightly is run. Its job is to remove unneeded files |
3039 |
|
|
in the pool, ie: files that only have one link. To avoid race |
3040 |
|
|
conditions, BackupPC_nightly runs only when there are no backups |
3041 |
|
|
running, and no backups will start while it runs.</p> |
3042 |
|
|
</dd> |
3043 |
|
|
<dd> |
3044 |
|
|
<p>So to reduce the elapsed time, you might want to increase this |
3045 |
|
|
setting to run several BackupPC_nightly processes in parallel |
3046 |
|
|
(eg: 4, or even 8).</p> |
3047 |
|
|
</dd> |
3048 |
|
|
<p></p> |
3049 |
|
|
<dt><strong><a name="item_%24conf%7bbackuppcnightlyperiod%7d">$Conf{BackupPCNightlyPeriod} = 1;</a></strong><br /> |
3050 |
|
|
</dt> |
3051 |
|
|
<dd> |
3052 |
|
|
How many days (runs) it takes BackupPC_nightly to traverse the |
3053 |
|
|
entire pool. Normally this is 1, which means every night it runs, |
3054 |
|
|
it does traverse the entire pool removing unused pool files. |
3055 |
|
|
</dd> |
3056 |
|
|
<dd> |
3057 |
|
|
<p>Other valid values are 2, 4, 8, 16. This causes BackupPC_nightly to |
3058 |
|
|
traverse 1/2, 1/4, 1/8 or 1/16th of the pool each night, meaning it |
3059 |
|
|
takes 2, 4, 8 or 16 days to completely traverse the pool. The |
3060 |
|
|
advantage is that each night the running time of BackupPC_nightly |
3061 |
|
|
is reduced roughly in proportion, since the total job is split |
3062 |
|
|
over multiple days. The disadvantage is that unused pool files |
3063 |
|
|
take longer to get deleted, which will slightly increase disk |
3064 |
|
|
usage.</p> |
3065 |
|
|
</dd> |
3066 |
|
|
<dd> |
3067 |
|
|
<p>Note that even when <a href="#item_%24conf%7bbackuppcnightlyperiod%7d">$Conf{BackupPCNightlyPeriod}</A> > 1, BackupPC_nightly |
3068 |
|
|
still runs every night. It just does less work each time it runs.</p> |
3069 |
|
|
</dd> |
3070 |
|
|
<dd> |
3071 |
|
|
<p>Examples:</p> |
3072 |
|
|
</dd> |
3073 |
|
|
<dd> |
3074 |
|
|
<pre> |
3075 |
|
|
<a href="#item_%24conf%7bbackuppcnightlyperiod%7d">$Conf{BackupPCNightlyPeriod}</A> = 1; # entire pool is checked every night</pre> |
3076 |
|
|
</dd> |
3077 |
|
|
<dd> |
3078 |
|
|
<pre> |
3079 |
|
|
<a href="#item_%24conf%7bbackuppcnightlyperiod%7d">$Conf{BackupPCNightlyPeriod}</A> = 2; # two days to complete pool check |
3080 |
|
|
# (different half each night)</pre> |
3081 |
|
|
</dd> |
3082 |
|
|
<dd> |
3083 |
|
|
<pre> |
3084 |
|
|
<a href="#item_%24conf%7bbackuppcnightlyperiod%7d">$Conf{BackupPCNightlyPeriod}</A> = 4; # four days to complete pool check |
3085 |
|
|
# (different quarter each night)</pre> |
3086 |
|
|
</dd> |
3087 |
|
|
<p></p> |
3088 |
|
|
<dt><strong><a name="item_%24conf%7bmaxoldlogfiles%7d">$Conf{MaxOldLogFiles} = 14;</a></strong><br /> |
3089 |
|
|
</dt> |
3090 |
|
|
<dd> |
3091 |
|
|
Maximum number of log files we keep around in log directory. |
3092 |
|
|
These files are aged nightly. A setting of 14 means the log |
3093 |
|
|
directory will contain about 2 weeks of old log files, in |
3094 |
|
|
particular at most the files LOG, LOG.0, LOG.1, ... LOG.13 |
3095 |
|
|
(except today's LOG, these files will have a .z extension if |
3096 |
|
|
compression is on). |
3097 |
|
|
</dd> |
3098 |
|
|
<dd> |
3099 |
|
|
<p>If you decrease this number after BackupPC has been running for a |
3100 |
|
|
while you will have to manually remove the older log files.</p> |
3101 |
|
|
</dd> |
3102 |
|
|
<p></p> |
3103 |
|
|
<dt><strong><a name="item_%24conf%7bdfpath%7d">$Conf{DfPath} = '/bin/df';</a></strong><br /> |
3104 |
|
|
</dt> |
3105 |
|
|
<dd> |
3106 |
|
|
Full path to the df command. Security caution: normal users |
3107 |
|
|
should not allowed to write to this file or directory. |
3108 |
|
|
</dd> |
3109 |
|
|
<p></p> |
3110 |
|
|
<dt><strong><a name="item_%24conf%7bdfcmd%7d">$Conf{DfCmd} = '$dfPath $topDir';</a></strong><br /> |
3111 |
|
|
</dt> |
3112 |
|
|
<dd> |
3113 |
|
|
Command to run df. The following variables are substituted at run-time: |
3114 |
|
|
</dd> |
3115 |
|
|
<dd> |
3116 |
|
|
<pre> |
3117 |
|
|
$dfPath path to df (<a href="#item_%24conf%7bdfpath%7d">$Conf{DfPath}</A>) |
3118 |
|
|
$topDir top-level BackupPC data directory</pre> |
3119 |
|
|
</dd> |
3120 |
|
|
<p></p> |
3121 |
|
|
<dt><strong><a name="item_%24conf%7bdfmaxusagepct%7d">$Conf{DfMaxUsagePct} = 95;</a></strong><br /> |
3122 |
|
|
</dt> |
3123 |
|
|
<dd> |
3124 |
|
|
Maximum threshold for disk utilization on the __TOPDIR__ filesystem. |
3125 |
|
|
If the output from <a href="#item_%24conf%7bdfpath%7d">$Conf{DfPath}</A> reports a percentage larger than |
3126 |
|
|
this number then no new regularly scheduled backups will be run. |
3127 |
|
|
However, user requested backups (which are usually incremental and |
3128 |
|
|
tend to be small) are still performed, independent of disk usage. |
3129 |
|
|
Also, currently running backups will not be terminated when the disk |
3130 |
|
|
usage exceeds this number. |
3131 |
|
|
</dd> |
3132 |
|
|
<p></p> |
3133 |
|
|
<dt><strong><a name="item_%24conf%7btrashcleansleepsec%7d">$Conf{TrashCleanSleepSec} = 300;</a></strong><br /> |
3134 |
|
|
</dt> |
3135 |
|
|
<dd> |
3136 |
|
|
How long BackupPC_trashClean sleeps in seconds between each check |
3137 |
|
|
of the trash directory. Once every 5 minutes should be reasonable. |
3138 |
|
|
</dd> |
3139 |
|
|
<p></p> |
3140 |
|
|
<dt><strong><a name="item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges} = [];</a></strong><br /> |
3141 |
|
|
</dt> |
3142 |
|
|
<dd> |
3143 |
|
|
List of DHCP address ranges we search looking for PCs to backup. |
3144 |
|
|
This is an array of hashes for each class C address range. |
3145 |
|
|
This is only needed if hosts in the conf/hosts file have the |
3146 |
|
|
dhcp flag set. |
3147 |
|
|
</dd> |
3148 |
|
|
<dd> |
3149 |
|
|
<p>Examples:</p> |
3150 |
|
|
</dd> |
3151 |
|
|
<dd> |
3152 |
|
|
<pre> |
3153 |
|
|
# to specify 192.10.10.20 to 192.10.10.250 as the DHCP address pool |
3154 |
|
|
<a href="#item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges}</A> = [ |
3155 |
|
|
{ |
3156 |
|
|
ipAddrBase => '192.10.10', |
3157 |
|
|
first => 20, |
3158 |
|
|
last => 250, |
3159 |
|
|
}, |
3160 |
|
|
]; |
3161 |
|
|
# to specify two pools (192.10.10.20-250 and 192.10.11.10-50) |
3162 |
|
|
<a href="#item_%24conf%7bdhcpaddressranges%7d">$Conf{DHCPAddressRanges}</A> = [ |
3163 |
|
|
{ |
3164 |
|
|
ipAddrBase => '192.10.10', |
3165 |
|
|
first => 20, |
3166 |
|
|
last => 250, |
3167 |
|
|
}, |
3168 |
|
|
{ |
3169 |
|
|
ipAddrBase => '192.10.11', |
3170 |
|
|
first => 10, |
3171 |
|
|
last => 50, |
3172 |
|
|
}, |
3173 |
|
|
];</pre> |
3174 |
|
|
</dd> |
3175 |
|
|
<p></p> |
3176 |
|
|
<dt><strong><a name="item_%24conf%7bbackuppcuser%7d">$Conf{BackupPCUser} = '';</a></strong><br /> |
3177 |
|
|
</dt> |
3178 |
|
|
<dt><strong><a name="item_%24conf%7bcgidir%7d">$Conf{CgiDir} = '';</a></strong><br /> |
3179 |
|
|
</dt> |
3180 |
|
|
<dt><strong><a name="item_%24conf%7binstalldir%7d">$Conf{InstallDir} = '';</a></strong><br /> |
3181 |
|
|
</dt> |
3182 |
|
|
<dd> |
3183 |
|
|
These configuration settings aren't used by BackupPC, but simply |
3184 |
|
|
remember a few settings used by configure.pl during installation. |
3185 |
|
|
These are used by configure.pl when upgrading to new versions of |
3186 |
|
|
BackupPC. |
3187 |
|
|
</dd> |
3188 |
|
|
<p></p> |
3189 |
|
|
<dt><strong><a name="item_%24conf%7bbackuppcuserverify%7d">$Conf{BackupPCUserVerify} = 1;</a></strong><br /> |
3190 |
|
|
</dt> |
3191 |
|
|
<dd> |
3192 |
|
|
Whether BackupPC and the CGI script BackupPC_Admin verify that they |
3193 |
|
|
are really running as user <a href="#item_%24conf%7bbackuppcuser%7d">$Conf{BackupPCUser}</A>. If this flag is set |
3194 |
|
|
and the effective user id (euid) differs from <a href="#item_%24conf%7bbackuppcuser%7d">$Conf{BackupPCUser}</A> |
3195 |
|
|
then both scripts exit with an error. This catches cases where |
3196 |
|
|
BackupPC might be accidently started as root or the wrong user, |
3197 |
|
|
or if the CGI script is not installed correctly. |
3198 |
|
|
</dd> |
3199 |
|
|
<p></p> |
3200 |
|
|
<dt><strong><a name="item_%24conf%7bhardlinkmax%7d">$Conf{HardLinkMax} = 31999;</a></strong><br /> |
3201 |
|
|
</dt> |
3202 |
|
|
<dd> |
3203 |
|
|
Maximum number of hardlinks supported by the $TopDir file system |
3204 |
|
|
that BackupPC uses. Most linux or unix file systems should support |
3205 |
|
|
at least 32000 hardlinks per file, or 64000 in other cases. If a pool |
3206 |
|
|
file already has this number of hardlinks, a new pool file is created |
3207 |
|
|
so that new hardlinks can be accommodated. This limit will only |
3208 |
|
|
be hit if an identical file appears at least this number of times |
3209 |
|
|
across all the backups. |
3210 |
|
|
</dd> |
3211 |
|
|
<p></p></dl> |
3212 |
|
|
<p> |
3213 |
|
|
</p> |
3214 |
|
|
<h2><a name="what_to_backup_and_when_to_do_it">What to backup and when to do it</a></h2> |
3215 |
|
|
<dl> |
3216 |
|
|
<dt><strong><a name="item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName} = 'C$';</a></strong><br /> |
3217 |
|
|
</dt> |
3218 |
|
|
<dd> |
3219 |
|
|
Name of the host share that is backed up when using SMB. This can be a |
3220 |
|
|
string or an array of strings if there are multiple shares per host. |
3221 |
|
|
Examples: |
3222 |
|
|
</dd> |
3223 |
|
|
<dd> |
3224 |
|
|
<pre> |
3225 |
|
|
<a href="#item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName}</A> = 'c'; # backup 'c' share |
3226 |
|
|
<a href="#item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName}</A> = ['c', 'd']; # backup 'c' and 'd' shares</pre> |
3227 |
|
|
</dd> |
3228 |
|
|
<dd> |
3229 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'.</p> |
3230 |
|
|
</dd> |
3231 |
|
|
<p></p> |
3232 |
|
|
<dt><strong><a name="item_%24conf%7bsmbshareusername%7d">$Conf{SmbShareUserName} = '';</a></strong><br /> |
3233 |
|
|
</dt> |
3234 |
|
|
<dd> |
3235 |
|
|
Smbclient share user name. This is passed to smbclient's -U argument. |
3236 |
|
|
</dd> |
3237 |
|
|
<dd> |
3238 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'.</p> |
3239 |
|
|
</dd> |
3240 |
|
|
<p></p> |
3241 |
|
|
<dt><strong><a name="item_%24conf%7bsmbsharepasswd%7d">$Conf{SmbSharePasswd} = '';</a></strong><br /> |
3242 |
|
|
</dt> |
3243 |
|
|
<dd> |
3244 |
|
|
Smbclient share password. This is passed to smbclient via its PASSWD |
3245 |
|
|
environment variable. There are several ways you can tell BackupPC |
3246 |
|
|
the smb share password. In each case you should be very careful about |
3247 |
|
|
security. If you put the password here, make sure that this file is |
3248 |
|
|
not readable by regular users! See the ``Setting up config.pl'' section |
3249 |
|
|
in the documentation for more information. |
3250 |
|
|
</dd> |
3251 |
|
|
<dd> |
3252 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'.</p> |
3253 |
|
|
</dd> |
3254 |
|
|
<p></p> |
3255 |
|
|
<dt><strong><a name="item_%24conf%7btarsharename%7d">$Conf{TarShareName} = '/';</a></strong><br /> |
3256 |
|
|
</dt> |
3257 |
|
|
<dd> |
3258 |
|
|
Which host directories to backup when using tar transport. This can be a |
3259 |
|
|
string or an array of strings if there are multiple directories to |
3260 |
|
|
backup per host. Examples: |
3261 |
|
|
</dd> |
3262 |
|
|
<dd> |
3263 |
|
|
<pre> |
3264 |
|
|
<a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> = '/'; # backup everything |
3265 |
|
|
<a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> = '/home'; # only backup /home |
3266 |
|
|
<a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> = ['/home', '/src']; # backup /home and /src</pre> |
3267 |
|
|
</dd> |
3268 |
|
|
<dd> |
3269 |
|
|
<p>The fact this parameter is called 'TarShareName' is for historical |
3270 |
|
|
consistency with the Smb transport options. You can use any valid |
3271 |
|
|
directory on the client: there is no need for it to correspond to |
3272 |
|
|
any Smb share or device mount point.</p> |
3273 |
|
|
</dd> |
3274 |
|
|
<dd> |
3275 |
|
|
<p>Note also that you can also use <a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> to specify |
3276 |
|
|
a specific list of directories to backup. It's more efficient to |
3277 |
|
|
use this option instead of <a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> since a new tar is |
3278 |
|
|
run for each entry in <a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A>.</p> |
3279 |
|
|
</dd> |
3280 |
|
|
<dd> |
3281 |
|
|
<p>On the other hand, if you add --one-file-system to <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> |
3282 |
|
|
you can backup each file system separately, which makes restoring one |
3283 |
|
|
bad file system easier. In this case you would list all of the mount |
3284 |
|
|
points here, since you can't get the same result with |
3285 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A>:</p> |
3286 |
|
|
</dd> |
3287 |
|
|
<dd> |
3288 |
|
|
<pre> |
3289 |
|
|
<a href="#item_%24conf%7btarsharename%7d">$Conf{TarShareName}</A> = ['/', '/var', '/data', '/boot'];</pre> |
3290 |
|
|
</dd> |
3291 |
|
|
<dd> |
3292 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'tar'.</p> |
3293 |
|
|
</dd> |
3294 |
|
|
<p></p> |
3295 |
|
|
<dt><strong><a name="item_%24conf%7bfullperiod%7d">$Conf{FullPeriod} = 6.97;</a></strong><br /> |
3296 |
|
|
</dt> |
3297 |
|
|
<dd> |
3298 |
|
|
Minimum period in days between full backups. A full dump will only be |
3299 |
|
|
done if at least this much time has elapsed since the last full dump, |
3300 |
|
|
and at least <a href="#item_%24conf%7bincrperiod%7d">$Conf{IncrPeriod}</A> days has elapsed since the last |
3301 |
|
|
successful dump. |
3302 |
|
|
</dd> |
3303 |
|
|
<dd> |
3304 |
|
|
<p>Typically this is set slightly less than an integer number of days. The |
3305 |
|
|
time taken for the backup, plus the granularity of <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> |
3306 |
|
|
will make the actual backup interval a bit longer.</p> |
3307 |
|
|
</dd> |
3308 |
|
|
<dd> |
3309 |
|
|
<p>There are two special values for <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>:</p> |
3310 |
|
|
</dd> |
3311 |
|
|
<dd> |
3312 |
|
|
<pre> |
3313 |
|
|
-1 Don't do any regular backups on this machine. Manually |
3314 |
|
|
requested backups (via the CGI interface) will still occur.</pre> |
3315 |
|
|
</dd> |
3316 |
|
|
<dd> |
3317 |
|
|
<pre> |
3318 |
|
|
-2 Don't do any backups on this machine. Manually requested |
3319 |
|
|
backups (via the CGI interface) will be ignored.</pre> |
3320 |
|
|
</dd> |
3321 |
|
|
<dd> |
3322 |
|
|
<p>These special settings are useful for a client that is no longer |
3323 |
|
|
being backed up (eg: a retired machine), but you wish to keep the |
3324 |
|
|
last backups available for browsing or restoring to other machines.</p> |
3325 |
|
|
</dd> |
3326 |
|
|
<p></p> |
3327 |
|
|
<dt><strong><a name="item_%24conf%7bincrperiod%7d">$Conf{IncrPeriod} = 0.97;</a></strong><br /> |
3328 |
|
|
</dt> |
3329 |
|
|
<dd> |
3330 |
|
|
Minimum period in days between incremental backups (a user requested |
3331 |
|
|
incremental backup will be done anytime on demand). |
3332 |
|
|
</dd> |
3333 |
|
|
<dd> |
3334 |
|
|
<p>Typically this is set slightly less than an integer number of days. The |
3335 |
|
|
time taken for the backup, plus the granularity of <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> |
3336 |
|
|
will make the actual backup interval a bit longer.</p> |
3337 |
|
|
</dd> |
3338 |
|
|
<p></p> |
3339 |
|
|
<dt><strong><a name="item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt} = 1;</a></strong><br /> |
3340 |
|
|
</dt> |
3341 |
|
|
<dd> |
3342 |
|
|
Number of full backups to keep. Must be >= 1. |
3343 |
|
|
</dd> |
3344 |
|
|
<dd> |
3345 |
|
|
<p>In the steady state, each time a full backup completes successfully |
3346 |
|
|
the oldest one is removed. If this number is decreased, the |
3347 |
|
|
extra old backups will be removed.</p> |
3348 |
|
|
</dd> |
3349 |
|
|
<dd> |
3350 |
|
|
<p>If filling of incremental dumps is off the oldest backup always |
3351 |
|
|
has to be a full (ie: filled) dump. This might mean one or two |
3352 |
|
|
extra full dumps are kept until the oldest incremental backups expire.</p> |
3353 |
|
|
</dd> |
3354 |
|
|
<dd> |
3355 |
|
|
<p>Exponential backup expiry is also supported. This allows you to specify:</p> |
3356 |
|
|
</dd> |
3357 |
|
|
<dd> |
3358 |
|
|
<pre> |
3359 |
|
|
- num fulls to keep at intervals of 1 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>, followed by |
3360 |
|
|
- num fulls to keep at intervals of 2 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>, |
3361 |
|
|
- num fulls to keep at intervals of 4 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>, |
3362 |
|
|
- num fulls to keep at intervals of 8 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>, |
3363 |
|
|
- num fulls to keep at intervals of 16 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>,</pre> |
3364 |
|
|
</dd> |
3365 |
|
|
<dd> |
3366 |
|
|
<p>and so on. This works by deleting every other full as each expiry |
3367 |
|
|
boundary is crossed.</p> |
3368 |
|
|
</dd> |
3369 |
|
|
<dd> |
3370 |
|
|
<p>Exponential expiry is specified using an array for <a href="#item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt}</A>:</p> |
3371 |
|
|
</dd> |
3372 |
|
|
<dd> |
3373 |
|
|
<pre> |
3374 |
|
|
<a href="#item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt}</A> = [4, 2, 3];</pre> |
3375 |
|
|
</dd> |
3376 |
|
|
<dd> |
3377 |
|
|
<p>Entry #n specifies how many fulls to keep at an interval of |
3378 |
|
|
2^n * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> (ie: 1, 2, 4, 8, 16, 32, ...).</p> |
3379 |
|
|
</dd> |
3380 |
|
|
<dd> |
3381 |
|
|
<p>The example above specifies keeping 4 of the most recent full backups |
3382 |
|
|
(1 week interval) two full backups at 2 week intervals, and 3 full |
3383 |
|
|
backups at 4 week intervals, eg:</p> |
3384 |
|
|
</dd> |
3385 |
|
|
<dd> |
3386 |
|
|
<pre> |
3387 |
|
|
full 0 19 weeks old \ |
3388 |
|
|
full 1 15 weeks old >--- 3 backups at 4 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3389 |
|
|
full 2 11 weeks old / |
3390 |
|
|
full 3 7 weeks old \____ 2 backups at 2 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3391 |
|
|
full 4 5 weeks old / |
3392 |
|
|
full 5 3 weeks old \ |
3393 |
|
|
full 6 2 weeks old \___ 4 backups at 1 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3394 |
|
|
full 7 1 week old / |
3395 |
|
|
full 8 current /</pre> |
3396 |
|
|
</dd> |
3397 |
|
|
<dd> |
3398 |
|
|
<p>On a given week the spacing might be less than shown as each backup |
3399 |
|
|
ages through each expiry period. For example, one week later, a |
3400 |
|
|
new full is completed and the oldest is deleted, giving:</p> |
3401 |
|
|
</dd> |
3402 |
|
|
<dd> |
3403 |
|
|
<pre> |
3404 |
|
|
full 0 16 weeks old \ |
3405 |
|
|
full 1 12 weeks old >--- 3 backups at 4 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3406 |
|
|
full 2 8 weeks old / |
3407 |
|
|
full 3 6 weeks old \____ 2 backups at 2 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3408 |
|
|
full 4 4 weeks old / |
3409 |
|
|
full 5 3 weeks old \ |
3410 |
|
|
full 6 2 weeks old \___ 4 backups at 1 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> |
3411 |
|
|
full 7 1 week old / |
3412 |
|
|
full 8 current /</pre> |
3413 |
|
|
</dd> |
3414 |
|
|
<dd> |
3415 |
|
|
<p>You can specify 0 as a count (except in the first entry), and the |
3416 |
|
|
array can be as long as you wish. For example:</p> |
3417 |
|
|
</dd> |
3418 |
|
|
<dd> |
3419 |
|
|
<pre> |
3420 |
|
|
<a href="#item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt}</A> = [4, 0, 4, 0, 0, 2];</pre> |
3421 |
|
|
</dd> |
3422 |
|
|
<dd> |
3423 |
|
|
<p>This will keep 10 full dumps, 4 most recent at 1 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A>, |
3424 |
|
|
followed by 4 at an interval of 4 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> (approx 1 month |
3425 |
|
|
apart), and then 2 at an interval of 32 * <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> (approx |
3426 |
|
|
7-8 months apart).</p> |
3427 |
|
|
</dd> |
3428 |
|
|
<dd> |
3429 |
|
|
<p>Example: these two settings are equivalent and both keep just |
3430 |
|
|
the four most recent full dumps:</p> |
3431 |
|
|
</dd> |
3432 |
|
|
<dd> |
3433 |
|
|
<pre> |
3434 |
|
|
<a href="#item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt}</A> = 4; |
3435 |
|
|
<a href="#item_%24conf%7bfullkeepcnt%7d">$Conf{FullKeepCnt}</A> = [4];</pre> |
3436 |
|
|
</dd> |
3437 |
|
|
<p></p> |
3438 |
|
|
<dt><strong><a name="item_%24conf%7bfullkeepcntmin%7d">$Conf{FullKeepCntMin} = 1;</a></strong><br /> |
3439 |
|
|
</dt> |
3440 |
|
|
<dt><strong><a name="item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax} = 90;</a></strong><br /> |
3441 |
|
|
</dt> |
3442 |
|
|
<dd> |
3443 |
|
|
Very old full backups are removed after <a href="#item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax}</A> days. However, |
3444 |
|
|
we keep at least <a href="#item_%24conf%7bfullkeepcntmin%7d">$Conf{FullKeepCntMin}</A> full backups no matter how old |
3445 |
|
|
they are. |
3446 |
|
|
</dd> |
3447 |
|
|
<dd> |
3448 |
|
|
<p>Note that <a href="#item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax}</A> will be increased to <a href="#item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax}</A> |
3449 |
|
|
times <a href="#item_%24conf%7bfullperiod%7d">$Conf{FullPeriod}</A> if <a href="#item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax}</A> specifies enough |
3450 |
|
|
full backups to exceed <a href="#item_%24conf%7bfullagemax%7d">$Conf{FullAgeMax}</A>.</p> |
3451 |
|
|
</dd> |
3452 |
|
|
<p></p> |
3453 |
|
|
<dt><strong><a name="item_%24conf%7bincrkeepcnt%7d">$Conf{IncrKeepCnt} = 6;</a></strong><br /> |
3454 |
|
|
</dt> |
3455 |
|
|
<dd> |
3456 |
|
|
Number of incremental backups to keep. Must be >= 1. |
3457 |
|
|
</dd> |
3458 |
|
|
<dd> |
3459 |
|
|
<p>In the steady state, each time an incr backup completes successfully |
3460 |
|
|
the oldest one is removed. If this number is decreased, the |
3461 |
|
|
extra old backups will be removed.</p> |
3462 |
|
|
</dd> |
3463 |
|
|
<p></p> |
3464 |
|
|
<dt><strong><a name="item_%24conf%7bincrkeepcntmin%7d">$Conf{IncrKeepCntMin} = 1;</a></strong><br /> |
3465 |
|
|
</dt> |
3466 |
|
|
<dt><strong><a name="item_%24conf%7bincragemax%7d">$Conf{IncrAgeMax} = 30;</a></strong><br /> |
3467 |
|
|
</dt> |
3468 |
|
|
<dd> |
3469 |
|
|
Very old incremental backups are removed after <a href="#item_%24conf%7bincragemax%7d">$Conf{IncrAgeMax}</A> days. |
3470 |
|
|
However, we keep at least <a href="#item_%24conf%7bincrkeepcntmin%7d">$Conf{IncrKeepCntMin}</A> incremental backups no |
3471 |
|
|
matter how old they are. |
3472 |
|
|
</dd> |
3473 |
|
|
<p></p> |
3474 |
|
|
<dt><strong><a name="item_%24conf%7bpartialagemax%7d">$Conf{PartialAgeMax} = 3;</a></strong><br /> |
3475 |
|
|
</dt> |
3476 |
|
|
<dd> |
3477 |
|
|
A failed full backup is saved as a partial backup. The rsync |
3478 |
|
|
XferMethod can take advantage of the partial full when the next |
3479 |
|
|
backup is run. This parameter sets the age of the partial full |
3480 |
|
|
in days: if the partial backup is older than this number of |
3481 |
|
|
days, then rsync will ignore (not use) the partial full when |
3482 |
|
|
the next backup is run. If you set this to a negative value |
3483 |
|
|
then no partials will be saved. If you set this to 0, partials |
3484 |
|
|
will be saved, but will not be used by the next backup. |
3485 |
|
|
</dd> |
3486 |
|
|
<dd> |
3487 |
|
|
<p>The default setting of 3 days means that a partial older than |
3488 |
|
|
3 days is ignored when the next full backup is done.</p> |
3489 |
|
|
</dd> |
3490 |
|
|
<p></p> |
3491 |
|
|
<dt><strong><a name="item_%24conf%7bincrfill%7d">$Conf{IncrFill} = 0;</a></strong><br /> |
3492 |
|
|
</dt> |
3493 |
|
|
<dd> |
3494 |
|
|
Whether incremental backups are filled. ``Filling'' means that the |
3495 |
|
|
most recent full (or filled) dump is merged into the new incremental |
3496 |
|
|
dump using hardlinks. This makes an incremental dump look like a |
3497 |
|
|
full dump. Prior to v1.03 all incremental backups were filled. |
3498 |
|
|
In v1.4.0 and later the default is off. |
3499 |
|
|
</dd> |
3500 |
|
|
<dd> |
3501 |
|
|
<p>BackupPC, and the cgi interface in particular, do the right thing on |
3502 |
|
|
un-filled incremental backups. It will correctly display the merged |
3503 |
|
|
incremental backup with the most recent filled backup, giving the |
3504 |
|
|
un-filled incremental backups a filled appearance. That means it |
3505 |
|
|
invisible to the user whether incremental dumps are filled or not.</p> |
3506 |
|
|
</dd> |
3507 |
|
|
<dd> |
3508 |
|
|
<p>Filling backups takes a little extra disk space, and it does cost |
3509 |
|
|
some extra disk activity for filling, and later removal. Filling |
3510 |
|
|
is no longer useful, since file mangling and compression doesn't |
3511 |
|
|
make a filled backup very useful. It's likely the filling option |
3512 |
|
|
will be removed from future versions: filling will be delegated to |
3513 |
|
|
the display and extraction of backup data.</p> |
3514 |
|
|
</dd> |
3515 |
|
|
<dd> |
3516 |
|
|
<p>If filling is off, BackupPC makes sure that the oldest backup is |
3517 |
|
|
a full, otherwise the following incremental backups will be |
3518 |
|
|
incomplete. This might mean an extra full backup has to be |
3519 |
|
|
kept until the following incremental backups expire.</p> |
3520 |
|
|
</dd> |
3521 |
|
|
<dd> |
3522 |
|
|
<p>The default is off. You can turn this on or off at any |
3523 |
|
|
time without affecting existing backups.</p> |
3524 |
|
|
</dd> |
3525 |
|
|
<p></p> |
3526 |
|
|
<dt><strong><a name="item_%24conf%7brestoreinfokeepcnt%7d">$Conf{RestoreInfoKeepCnt} = 10;</a></strong><br /> |
3527 |
|
|
</dt> |
3528 |
|
|
<dd> |
3529 |
|
|
Number of restore logs to keep. BackupPC remembers information about |
3530 |
|
|
each restore request. This number per client will be kept around before |
3531 |
|
|
the oldest ones are pruned. |
3532 |
|
|
</dd> |
3533 |
|
|
<dd> |
3534 |
|
|
<p>Note: files/dirs delivered via Zip or Tar downloads don't count as |
3535 |
|
|
restores. Only the first restore option (where the files and dirs |
3536 |
|
|
are written to the host) count as restores that are logged.</p> |
3537 |
|
|
</dd> |
3538 |
|
|
<p></p> |
3539 |
|
|
<dt><strong><a name="item_%24conf%7barchiveinfokeepcnt%7d">$Conf{ArchiveInfoKeepCnt} = 10;</a></strong><br /> |
3540 |
|
|
</dt> |
3541 |
|
|
<dd> |
3542 |
|
|
Number of archive logs to keep. BackupPC remembers information |
3543 |
|
|
about each archive request. This number per archive client will |
3544 |
|
|
be kept around before the oldest ones are pruned. |
3545 |
|
|
</dd> |
3546 |
|
|
<p></p> |
3547 |
|
|
<dt><strong><a name="item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly} = undef;</a></strong><br /> |
3548 |
|
|
</dt> |
3549 |
|
|
<dd> |
3550 |
|
|
List of directories or files to backup. If this is defined, only these |
3551 |
|
|
directories or files will be backed up. |
3552 |
|
|
</dd> |
3553 |
|
|
<dd> |
3554 |
|
|
<p>For Smb, only one of <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> and <a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> |
3555 |
|
|
can be specified per share. If both are set for a particular share, then |
3556 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> takes precedence and <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> |
3557 |
|
|
is ignored.</p> |
3558 |
|
|
</dd> |
3559 |
|
|
<dd> |
3560 |
|
|
<p>This can be set to a string, an array of strings, or, in the case |
3561 |
|
|
of multiple shares, a hash of strings or arrays. A hash is used |
3562 |
|
|
to give a list of directories or files to backup for each share |
3563 |
|
|
(the share name is the key). If this is set to just a string or |
3564 |
|
|
array, and <a href="#item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName}</A> contains multiple share names, then |
3565 |
|
|
the setting is assumed to apply all shares.</p> |
3566 |
|
|
</dd> |
3567 |
|
|
<dd> |
3568 |
|
|
<p>Examples:</p> |
3569 |
|
|
</dd> |
3570 |
|
|
<dd> |
3571 |
|
|
<pre> |
3572 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> = '/myFiles'; |
3573 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> = ['/myFiles']; # same as first example |
3574 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> = ['/myFiles', '/important']; |
3575 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> = { |
3576 |
|
|
'c' => ['/myFiles', '/important'], # these are for 'c' share |
3577 |
|
|
'd' => ['/moreFiles', '/archive'], # these are for 'd' share |
3578 |
|
|
};</pre> |
3579 |
|
|
</dd> |
3580 |
|
|
<p></p> |
3581 |
|
|
<dt><strong><a name="item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude} = undef;</a></strong><br /> |
3582 |
|
|
</dt> |
3583 |
|
|
<dd> |
3584 |
|
|
List of directories or files to exclude from the backup. For Smb, |
3585 |
|
|
only one of <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> and <a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> |
3586 |
|
|
can be specified per share. If both are set for a particular share, |
3587 |
|
|
then <a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A> takes precedence and |
3588 |
|
|
<a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> is ignored. |
3589 |
|
|
</dd> |
3590 |
|
|
<dd> |
3591 |
|
|
<p>This can be set to a string, an array of strings, or, in the case |
3592 |
|
|
of multiple shares, a hash of strings or arrays. A hash is used |
3593 |
|
|
to give a list of directories or files to exclude for each share |
3594 |
|
|
(the share name is the key). If this is set to just a string or |
3595 |
|
|
array, and <a href="#item_%24conf%7bsmbsharename%7d">$Conf{SmbShareName}</A> contains multiple share names, then |
3596 |
|
|
the setting is assumed to apply to all shares.</p> |
3597 |
|
|
</dd> |
3598 |
|
|
<dd> |
3599 |
|
|
<p>The exact behavior is determined by the underlying transport program, |
3600 |
|
|
smbclient or tar. For smbclient the exlclude file list is passed into |
3601 |
|
|
the X option. Simple shell wild-cards using ``*'' or ``?'' are allowed.</p> |
3602 |
|
|
</dd> |
3603 |
|
|
<dd> |
3604 |
|
|
<p>For tar, if the exclude file contains a ``/'' it is assumed to be anchored |
3605 |
|
|
at the start of the string. Since all the tar paths start with ``./'', |
3606 |
|
|
BackupPC prepends a ``.'' if the exclude file starts with a ``/''. Note |
3607 |
|
|
that GNU tar version >= 1.13.7 is required for the exclude option to |
3608 |
|
|
work correctly. For linux or unix machines you should add |
3609 |
|
|
``/proc'' to <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> unless you have specified |
3610 |
|
|
--one-file-system in <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> or --one-file-system in |
3611 |
|
|
<a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>. Also, for tar, do not use a trailing ``/'' in |
3612 |
|
|
the directory name: a trailing ``/'' causes the name to not match |
3613 |
|
|
and the directory will not be excluded.</p> |
3614 |
|
|
</dd> |
3615 |
|
|
<dd> |
3616 |
|
|
<p>Users report that for smbclient you should specify a directory |
3617 |
|
|
followed by ``/*'', eg: ``/proc/*'', instead of just ``/proc''.</p> |
3618 |
|
|
</dd> |
3619 |
|
|
<dd> |
3620 |
|
|
<p>Examples:</p> |
3621 |
|
|
</dd> |
3622 |
|
|
<dd> |
3623 |
|
|
<pre> |
3624 |
|
|
<a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> = '/temp'; |
3625 |
|
|
<a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> = ['/temp']; # same as first example |
3626 |
|
|
<a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> = ['/temp', '/winnt/tmp']; |
3627 |
|
|
<a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> = { |
3628 |
|
|
'c' => ['/temp', '/winnt/tmp'], # these are for 'c' share |
3629 |
|
|
'd' => ['/junk', '/dont_back_this_up'], # these are for 'd' share |
3630 |
|
|
};</pre> |
3631 |
|
|
</dd> |
3632 |
|
|
<p></p> |
3633 |
|
|
<dt><strong><a name="item_%24conf%7bblackoutbadpinglimit%7d">$Conf{BlackoutBadPingLimit} = 3;</a></strong><br /> |
3634 |
|
|
</dt> |
3635 |
|
|
<dt><strong><a name="item_%24conf%7bblackoutgoodcnt%7d">$Conf{BlackoutGoodCnt} = 7;</a></strong><br /> |
3636 |
|
|
</dt> |
3637 |
|
|
<dd> |
3638 |
|
|
PCs that are always or often on the network can be backed up after |
3639 |
|
|
hours, to reduce PC, network and server load during working hours. For |
3640 |
|
|
each PC a count of consecutive good pings is maintained. Once a PC has |
3641 |
|
|
at least <a href="#item_%24conf%7bblackoutgoodcnt%7d">$Conf{BlackoutGoodCnt}</A> consecutive good pings it is subject |
3642 |
|
|
to ``blackout'' and not backed up during hours and days specified by |
3643 |
|
|
<a href="#item_%24conf%7bblackoutperiods%7d">$Conf{BlackoutPeriods}</A>. |
3644 |
|
|
</dd> |
3645 |
|
|
<dd> |
3646 |
|
|
<p>To allow for periodic rebooting of a PC or other brief periods when a |
3647 |
|
|
PC is not on the network, a number of consecutive bad pings is allowed |
3648 |
|
|
before the good ping count is reset. This parameter is |
3649 |
|
|
<a href="#item_%24conf%7bblackoutbadpinglimit%7d">$Conf{BlackoutBadPingLimit}</A>.</p> |
3650 |
|
|
</dd> |
3651 |
|
|
<dd> |
3652 |
|
|
<p>Note that bad and good pings don't occur with the same interval. If a |
3653 |
|
|
machine is always on the network, it will only be pinged roughly once |
3654 |
|
|
every <a href="#item_%24conf%7bincrperiod%7d">$Conf{IncrPeriod}</A> (eg: once per day). So a setting for |
3655 |
|
|
<a href="#item_%24conf%7bblackoutgoodcnt%7d">$Conf{BlackoutGoodCnt}</A> of 7 means it will take around 7 days for a |
3656 |
|
|
machine to be subject to blackout. On the other hand, if a ping is |
3657 |
|
|
failed, it will be retried roughly every time BackupPC wakes up, eg, |
3658 |
|
|
every one or two hours. So a setting for <a href="#item_%24conf%7bblackoutbadpinglimit%7d">$Conf{BlackoutBadPingLimit}</A> of |
3659 |
|
|
3 means that the PC will lose its blackout status after 3-6 hours of |
3660 |
|
|
unavailability.</p> |
3661 |
|
|
</dd> |
3662 |
|
|
<dd> |
3663 |
|
|
<p>To disable the blackout feature set <a href="#item_%24conf%7bblackoutgoodcnt%7d">$Conf{BlackoutGoodCnt}</A> to a negative |
3664 |
|
|
value. A value of 0 will make all machines subject to blackout. But |
3665 |
|
|
if you don't want to do any backups during the day it would be easier |
3666 |
|
|
to just set <a href="#item_%24conf%7bwakeupschedule%7d">$Conf{WakeupSchedule}</A> to a restricted schedule.</p> |
3667 |
|
|
</dd> |
3668 |
|
|
<p></p> |
3669 |
|
|
<dt><strong><a name="item_%24conf%7bblackoutperiods%7d">$Conf{BlackoutPeriods} = [ ... ];</a></strong><br /> |
3670 |
|
|
</dt> |
3671 |
|
|
<dd> |
3672 |
|
|
One or more blackout periods can be specified. If a client is |
3673 |
|
|
subject to blackout then no regular (non-manual) backups will |
3674 |
|
|
be started during any of these periods. hourBegin and hourEnd |
3675 |
|
|
specify hours fro midnight and weekDays is a list of days of |
3676 |
|
|
the week where 0 is Sunday, 1 is Monday etc. |
3677 |
|
|
</dd> |
3678 |
|
|
<dd> |
3679 |
|
|
<p>For example:</p> |
3680 |
|
|
</dd> |
3681 |
|
|
<dd> |
3682 |
|
|
<pre> |
3683 |
|
|
<a href="#item_%24conf%7bblackoutperiods%7d">$Conf{BlackoutPeriods}</A> = [ |
3684 |
|
|
{ |
3685 |
|
|
hourBegin => 7.0, |
3686 |
|
|
hourEnd => 19.5, |
3687 |
|
|
weekDays => [1, 2, 3, 4, 5], |
3688 |
|
|
}, |
3689 |
|
|
];</pre> |
3690 |
|
|
</dd> |
3691 |
|
|
<dd> |
3692 |
|
|
<p>specifies one blackout period from 7:00am to 7:30pm local time |
3693 |
|
|
on Mon-Fri.</p> |
3694 |
|
|
</dd> |
3695 |
|
|
<dd> |
3696 |
|
|
<p>The blackout period can also span midnight by setting |
3697 |
|
|
hourBegin > hourEnd, eg:</p> |
3698 |
|
|
</dd> |
3699 |
|
|
<dd> |
3700 |
|
|
<pre> |
3701 |
|
|
<a href="#item_%24conf%7bblackoutperiods%7d">$Conf{BlackoutPeriods}</A> = [ |
3702 |
|
|
{ |
3703 |
|
|
hourBegin => 7.0, |
3704 |
|
|
hourEnd => 19.5, |
3705 |
|
|
weekDays => [1, 2, 3, 4, 5], |
3706 |
|
|
}, |
3707 |
|
|
{ |
3708 |
|
|
hourBegin => 23, |
3709 |
|
|
hourEnd => 5, |
3710 |
|
|
weekDays => [5, 6], |
3711 |
|
|
}, |
3712 |
|
|
];</pre> |
3713 |
|
|
</dd> |
3714 |
|
|
<dd> |
3715 |
|
|
<p>This specifies one blackout period from 7:00am to 7:30pm local time |
3716 |
|
|
on Mon-Fri, and a second period from 11pm to 5am on Friday and |
3717 |
|
|
Saturday night.</p> |
3718 |
|
|
</dd> |
3719 |
|
|
<p></p> |
3720 |
|
|
<dt><strong><a name="item_%24conf%7bbackupzerofilesisfatal%7d">$Conf{BackupZeroFilesIsFatal} = 1;</a></strong><br /> |
3721 |
|
|
</dt> |
3722 |
|
|
<dd> |
3723 |
|
|
A backup of a share that has zero files is considered fatal. This is |
3724 |
|
|
used to catch miscellaneous Xfer errors that result in no files being |
3725 |
|
|
backed up. If you have shares that might be empty (and therefore an |
3726 |
|
|
empty backup is valid) you should set this flag to 0. |
3727 |
|
|
</dd> |
3728 |
|
|
<p></p></dl> |
3729 |
|
|
<p> |
3730 |
|
|
</p> |
3731 |
|
|
<h2><a name="general_perpc_configuration_settings">General per-PC configuration settings</a></h2> |
3732 |
|
|
<dl> |
3733 |
|
|
<dt><strong><a name="item_%24conf%7bxfermethod%7d">$Conf{XferMethod} = 'smb';</a></strong><br /> |
3734 |
|
|
</dt> |
3735 |
|
|
<dd> |
3736 |
|
|
What transport method to use to backup each host. If you have |
3737 |
|
|
a mixed set of WinXX and linux/unix hosts you will need to override |
3738 |
|
|
this in the per-PC config.pl. |
3739 |
|
|
</dd> |
3740 |
|
|
<dd> |
3741 |
|
|
<p>The valid values are:</p> |
3742 |
|
|
</dd> |
3743 |
|
|
<dd> |
3744 |
|
|
<pre> |
3745 |
|
|
- 'smb': backup and restore via smbclient and the SMB protocol. |
3746 |
|
|
Easiest choice for WinXX.</pre> |
3747 |
|
|
</dd> |
3748 |
|
|
<dd> |
3749 |
|
|
<pre> |
3750 |
|
|
- 'rsync': backup and restore via rsync (via rsh or ssh). |
3751 |
|
|
Best choice for linux/unix. Good choice also for WinXX.</pre> |
3752 |
|
|
</dd> |
3753 |
|
|
<dd> |
3754 |
|
|
<pre> |
3755 |
|
|
- 'rsyncd': backup and restre via rsync daemon on the client. |
3756 |
|
|
Best choice for linux/unix if you have rsyncd running on |
3757 |
|
|
the client. Good choice also for WinXX.</pre> |
3758 |
|
|
</dd> |
3759 |
|
|
<dd> |
3760 |
|
|
<pre> |
3761 |
|
|
- 'tar': backup and restore via tar, tar over ssh, rsh or nfs. |
3762 |
|
|
Good choice for linux/unix.</pre> |
3763 |
|
|
</dd> |
3764 |
|
|
<dd> |
3765 |
|
|
<pre> |
3766 |
|
|
- 'archive': host is a special archive host. Backups are not done. |
3767 |
|
|
An archive host is used to archive other host's backups |
3768 |
|
|
to permanent media, such as tape, CDR or DVD.</pre> |
3769 |
|
|
</dd> |
3770 |
|
|
<p></p> |
3771 |
|
|
<dt><strong><a name="item_%24conf%7bxferloglevel%7d">$Conf{XferLogLevel} = 1;</a></strong><br /> |
3772 |
|
|
</dt> |
3773 |
|
|
<dd> |
3774 |
|
|
Level of verbosity in Xfer log files. 0 means be quiet, 1 will give |
3775 |
|
|
will give one line per file, 2 will also show skipped files on |
3776 |
|
|
incrementals, higher values give more output. |
3777 |
|
|
</dd> |
3778 |
|
|
<p></p> |
3779 |
|
|
<dt><strong><a name="item_%24conf%7bsmbclientpath%7d">$Conf{SmbClientPath} = '/usr/bin/smbclient';</a></strong><br /> |
3780 |
|
|
</dt> |
3781 |
|
|
<dd> |
3782 |
|
|
Full path for smbclient. Security caution: normal users should not |
3783 |
|
|
allowed to write to this file or directory. |
3784 |
|
|
</dd> |
3785 |
|
|
<dd> |
3786 |
|
|
<p>smbclient is from the Samba distribution. smbclient is used to |
3787 |
|
|
actually extract the incremental or full dump of the share filesystem |
3788 |
|
|
from the PC.</p> |
3789 |
|
|
</dd> |
3790 |
|
|
<dd> |
3791 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'.</p> |
3792 |
|
|
</dd> |
3793 |
|
|
<p></p> |
3794 |
|
|
<dt><strong><a name="item_%24conf%7bsmbclientfullcmd%7d">$Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName' ...</a></strong><br /> |
3795 |
|
|
</dt> |
3796 |
|
|
<dd> |
3797 |
|
|
Command to run smbclient for a full dump. |
3798 |
|
|
This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'. |
3799 |
|
|
</dd> |
3800 |
|
|
<dd> |
3801 |
|
|
<p>The following variables are substituted at run-time:</p> |
3802 |
|
|
</dd> |
3803 |
|
|
<dd> |
3804 |
|
|
<pre> |
3805 |
|
|
$smbClientPath same as <a href="#item_%24conf%7bsmbclientpath%7d">$Conf{SmbClientPath}</A> |
3806 |
|
|
$host host to backup/restore |
3807 |
|
|
$hostIP host IP address |
3808 |
|
|
$shareName share name |
3809 |
|
|
$userName user name |
3810 |
|
|
$fileList list of files to backup (based on exclude/include) |
3811 |
|
|
$I_option optional -I option to smbclient |
3812 |
|
|
$X_option exclude option (if $fileList is an exclude list) |
3813 |
|
|
$timeStampFile start time for incremental dump</pre> |
3814 |
|
|
</dd> |
3815 |
|
|
<p></p> |
3816 |
|
|
<dt><strong><a name="item_%24conf%7bsmbclientincrcmd%7d">$Conf{SmbClientIncrCmd} = '$smbClientPath \\\\$host\\$shareName' ...</a></strong><br /> |
3817 |
|
|
</dt> |
3818 |
|
|
<dd> |
3819 |
|
|
Command to run smbclient for an incremental dump. |
3820 |
|
|
This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'. |
3821 |
|
|
</dd> |
3822 |
|
|
<dd> |
3823 |
|
|
<p>Same variable substitutions are applied as <a href="#item_%24conf%7bsmbclientfullcmd%7d">$Conf{SmbClientFullCmd}</A>.</p> |
3824 |
|
|
</dd> |
3825 |
|
|
<p></p> |
3826 |
|
|
<dt><strong><a name="item_%24conf%7bsmbclientrestorecmd%7d">$Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName' ...</a></strong><br /> |
3827 |
|
|
</dt> |
3828 |
|
|
<dd> |
3829 |
|
|
Command to run smbclient for a restore. |
3830 |
|
|
This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'smb'. |
3831 |
|
|
</dd> |
3832 |
|
|
<dd> |
3833 |
|
|
<p>Same variable substitutions are applied as <a href="#item_%24conf%7bsmbclientfullcmd%7d">$Conf{SmbClientFullCmd}</A>.</p> |
3834 |
|
|
</dd> |
3835 |
|
|
<dd> |
3836 |
|
|
<p>If your smb share is read-only then direct restores will fail. |
3837 |
|
|
You should set <a href="#item_%24conf%7bsmbclientrestorecmd%7d">$Conf{SmbClientRestoreCmd}</A> to undef and the |
3838 |
|
|
corresponding CGI restore option will be removed.</p> |
3839 |
|
|
</dd> |
3840 |
|
|
<p></p> |
3841 |
|
|
<dt><strong><a name="item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd} = '$sshPath -q -x -n -l root $host' ...</a></strong><br /> |
3842 |
|
|
</dt> |
3843 |
|
|
<dd> |
3844 |
|
|
Full command to run tar on the client. GNU tar is required. You will |
3845 |
|
|
need to fill in the correct paths for ssh2 on the local host (server) |
3846 |
|
|
and GNU tar on the client. Security caution: normal users should not |
3847 |
|
|
allowed to write to these executable files or directories. |
3848 |
|
|
</dd> |
3849 |
|
|
<dd> |
3850 |
|
|
<p>See the documentation for more information about setting up ssh2 keys.</p> |
3851 |
|
|
</dd> |
3852 |
|
|
<dd> |
3853 |
|
|
<p>If you plan to use NFS then tar just runs locally and ssh2 is not needed. |
3854 |
|
|
For example, assuming the client filesystem is mounted below /mnt/hostName, |
3855 |
|
|
you could use something like:</p> |
3856 |
|
|
</dd> |
3857 |
|
|
<dd> |
3858 |
|
|
<pre> |
3859 |
|
|
<a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> = '$tarPath -c -v -f - -C /mnt/$host/$shareName' |
3860 |
|
|
. ' --totals';</pre> |
3861 |
|
|
</dd> |
3862 |
|
|
<dd> |
3863 |
|
|
<p>In the case of NFS or rsh you need to make sure BackupPC's privileges |
3864 |
|
|
are sufficient to read all the files you want to backup. Also, you |
3865 |
|
|
will probably want to add ``/proc'' to <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A>.</p> |
3866 |
|
|
</dd> |
3867 |
|
|
<dd> |
3868 |
|
|
<p>The following variables are substituted at run-time:</p> |
3869 |
|
|
</dd> |
3870 |
|
|
<dd> |
3871 |
|
|
<pre> |
3872 |
|
|
$host host name |
3873 |
|
|
$hostIP host's IP address |
3874 |
|
|
$incrDate newer-than date for incremental backups |
3875 |
|
|
$shareName share name to backup (ie: top-level directory path) |
3876 |
|
|
$fileList specific files to backup or exclude |
3877 |
|
|
$tarPath same as <a href="#item_%24conf%7btarclientpath%7d">$Conf{TarClientPath}</A> |
3878 |
|
|
$sshPath same as <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A></pre> |
3879 |
|
|
</dd> |
3880 |
|
|
<dd> |
3881 |
|
|
<p>If a variable is followed by a ``+'' it is shell escaped. This is |
3882 |
|
|
necessary for the command part of ssh or rsh, since it ends up |
3883 |
|
|
getting passed through the shell.</p> |
3884 |
|
|
</dd> |
3885 |
|
|
<dd> |
3886 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'tar'.</p> |
3887 |
|
|
</dd> |
3888 |
|
|
<p></p> |
3889 |
|
|
<dt><strong><a name="item_%24conf%7btarfullargs%7d">$Conf{TarFullArgs} = '$fileList+';</a></strong><br /> |
3890 |
|
|
</dt> |
3891 |
|
|
<dd> |
3892 |
|
|
Extra tar arguments for full backups. Several variables are substituted at |
3893 |
|
|
run-time. See <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> for the list of variable substitutions. |
3894 |
|
|
</dd> |
3895 |
|
|
<dd> |
3896 |
|
|
<p>If you are running tar locally (ie: without rsh or ssh) then remove the |
3897 |
|
|
``+'' so that the argument is no longer shell escaped.</p> |
3898 |
|
|
</dd> |
3899 |
|
|
<dd> |
3900 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'tar'.</p> |
3901 |
|
|
</dd> |
3902 |
|
|
<p></p> |
3903 |
|
|
<dt><strong><a name="item_%24conf%7btarincrargs%7d">$Conf{TarIncrArgs} = '--newer=$incrDate+ $fileList+';</a></strong><br /> |
3904 |
|
|
</dt> |
3905 |
|
|
<dd> |
3906 |
|
|
Extra tar arguments for incr backups. Several variables are substituted at |
3907 |
|
|
run-time. See <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> for the list of variable substitutions. |
3908 |
|
|
</dd> |
3909 |
|
|
<dd> |
3910 |
|
|
<p>Note that GNU tar has several methods for specifying incremental backups, |
3911 |
|
|
including:</p> |
3912 |
|
|
</dd> |
3913 |
|
|
<dd> |
3914 |
|
|
<pre> |
3915 |
|
|
--newer-mtime $incrDate+ |
3916 |
|
|
This causes a file to be included if the modification time is |
3917 |
|
|
later than $incrDate (meaning its contents might have changed). |
3918 |
|
|
But changes in the ownership or modes will not qualify the |
3919 |
|
|
file to be included in an incremental.</pre> |
3920 |
|
|
</dd> |
3921 |
|
|
<dd> |
3922 |
|
|
<pre> |
3923 |
|
|
--newer=$incrDate+ |
3924 |
|
|
This causes the file to be included if any attribute of the |
3925 |
|
|
file is later than $incrDate, meaning either attributes or |
3926 |
|
|
the modification time. This is the default method. Do |
3927 |
|
|
not use --atime-preserve in <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> above, |
3928 |
|
|
otherwise resetting the atime (access time) counts as an |
3929 |
|
|
attribute change, meaning the file will always be included |
3930 |
|
|
in each new incremental dump.</pre> |
3931 |
|
|
</dd> |
3932 |
|
|
<dd> |
3933 |
|
|
<p>If you are running tar locally (ie: without rsh or ssh) then remove the |
3934 |
|
|
``+'' so that the argument is no longer shell escaped.</p> |
3935 |
|
|
</dd> |
3936 |
|
|
<dd> |
3937 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'tar'.</p> |
3938 |
|
|
</dd> |
3939 |
|
|
<p></p> |
3940 |
|
|
<dt><strong><a name="item_%24conf%7btarclientrestorecmd%7d">$Conf{TarClientRestoreCmd} = '$sshPath -q -x -l root $host' ...</a></strong><br /> |
3941 |
|
|
</dt> |
3942 |
|
|
<dd> |
3943 |
|
|
Full command to run tar for restore on the client. GNU tar is required. |
3944 |
|
|
This can be the same as <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A>, with tar's -c replaced by -x |
3945 |
|
|
and ssh's -n removed. |
3946 |
|
|
</dd> |
3947 |
|
|
<dd> |
3948 |
|
|
<p>See <a href="#item_%24conf%7btarclientcmd%7d">$Conf{TarClientCmd}</A> for full details.</p> |
3949 |
|
|
</dd> |
3950 |
|
|
<dd> |
3951 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``tar''.</p> |
3952 |
|
|
</dd> |
3953 |
|
|
<dd> |
3954 |
|
|
<p>If you want to disable direct restores using tar, you should set |
3955 |
|
|
<a href="#item_%24conf%7btarclientrestorecmd%7d">$Conf{TarClientRestoreCmd}</A> to undef and the corresponding CGI |
3956 |
|
|
restore option will be removed.</p> |
3957 |
|
|
</dd> |
3958 |
|
|
<p></p> |
3959 |
|
|
<dt><strong><a name="item_%24conf%7btarclientpath%7d">$Conf{TarClientPath} = '/bin/tar';</a></strong><br /> |
3960 |
|
|
</dt> |
3961 |
|
|
<dd> |
3962 |
|
|
Full path for tar on the client. Security caution: normal users should not |
3963 |
|
|
allowed to write to this file or directory. |
3964 |
|
|
</dd> |
3965 |
|
|
<dd> |
3966 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'tar'.</p> |
3967 |
|
|
</dd> |
3968 |
|
|
<p></p> |
3969 |
|
|
<dt><strong><a name="item_%24conf%7brsyncclientpath%7d">$Conf{RsyncClientPath} = '/bin/rsync';</a></strong><br /> |
3970 |
|
|
</dt> |
3971 |
|
|
<dd> |
3972 |
|
|
Path to rsync executable on the client |
3973 |
|
|
</dd> |
3974 |
|
|
<p></p> |
3975 |
|
|
<dt><strong><a name="item_%24conf%7brsyncclientcmd%7d">$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';</a></strong><br /> |
3976 |
|
|
</dt> |
3977 |
|
|
<dd> |
3978 |
|
|
Full command to run rsync on the client machine. The following variables |
3979 |
|
|
are substituted at run-time: |
3980 |
|
|
</dd> |
3981 |
|
|
<dd> |
3982 |
|
|
<pre> |
3983 |
|
|
$host host name being backed up |
3984 |
|
|
$hostIP host's IP address |
3985 |
|
|
$shareName share name to backup (ie: top-level directory path) |
3986 |
|
|
$rsyncPath same as <a href="#item_%24conf%7brsyncclientpath%7d">$Conf{RsyncClientPath}</A> |
3987 |
|
|
$sshPath same as <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A> |
3988 |
|
|
$argList argument list, built from <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>, |
3989 |
|
|
$shareName, <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> and |
3990 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A></pre> |
3991 |
|
|
</dd> |
3992 |
|
|
<dd> |
3993 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'rsync'.</p> |
3994 |
|
|
</dd> |
3995 |
|
|
<p></p> |
3996 |
|
|
<dt><strong><a name="item_%24conf%7brsyncclientrestorecmd%7d">$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';</a></strong><br /> |
3997 |
|
|
</dt> |
3998 |
|
|
<dd> |
3999 |
|
|
Full command to run rsync for restore on the client. The following |
4000 |
|
|
variables are substituted at run-time: |
4001 |
|
|
</dd> |
4002 |
|
|
<dd> |
4003 |
|
|
<pre> |
4004 |
|
|
$host host name being backed up |
4005 |
|
|
$hostIP host's IP address |
4006 |
|
|
$shareName share name to backup (ie: top-level directory path) |
4007 |
|
|
$rsyncPath same as <a href="#item_%24conf%7brsyncclientpath%7d">$Conf{RsyncClientPath}</A> |
4008 |
|
|
$sshPath same as <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A> |
4009 |
|
|
$argList argument list, built from <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>, |
4010 |
|
|
$shareName, <a href="#item_%24conf%7bbackupfilesexclude%7d">$Conf{BackupFilesExclude}</A> and |
4011 |
|
|
<a href="#item_%24conf%7bbackupfilesonly%7d">$Conf{BackupFilesOnly}</A></pre> |
4012 |
|
|
</dd> |
4013 |
|
|
<dd> |
4014 |
|
|
<p>This setting only matters if <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = 'rsync'.</p> |
4015 |
|
|
</dd> |
4016 |
|
|
<p></p> |
4017 |
|
|
<dt><strong><a name="item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName} = '/';</a></strong><br /> |
4018 |
|
|
</dt> |
4019 |
|
|
<dd> |
4020 |
|
|
Share name to backup. For <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``rsync'' this should |
4021 |
|
|
be a file system path, eg '/' or '/home'. |
4022 |
|
|
</dd> |
4023 |
|
|
<dd> |
4024 |
|
|
<p>For <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``rsyncd'' this should be the name of the module |
4025 |
|
|
to backup (ie: the name from /etc/rsynd.conf).</p> |
4026 |
|
|
</dd> |
4027 |
|
|
<dd> |
4028 |
|
|
<p>This can also be a list of multiple file system paths or modules. |
4029 |
|
|
For example, by adding --one-file-system to <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A> you |
4030 |
|
|
can backup each file system separately, which makes restoring one |
4031 |
|
|
bad file system easier. In this case you would list all of the mount |
4032 |
|
|
points:</p> |
4033 |
|
|
</dd> |
4034 |
|
|
<dd> |
4035 |
|
|
<pre> |
4036 |
|
|
<a href="#item_%24conf%7brsyncsharename%7d">$Conf{RsyncShareName}</A> = ['/', '/var', '/data', '/boot'];</pre> |
4037 |
|
|
</dd> |
4038 |
|
|
<p></p> |
4039 |
|
|
<dt><strong><a name="item_%24conf%7brsyncdclientport%7d">$Conf{RsyncdClientPort} = 873;</a></strong><br /> |
4040 |
|
|
</dt> |
4041 |
|
|
<dd> |
4042 |
|
|
Rsync daemon port on the client, for <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``rsyncd''. |
4043 |
|
|
</dd> |
4044 |
|
|
<p></p> |
4045 |
|
|
<dt><strong><a name="item_%24conf%7brsyncdusername%7d">$Conf{RsyncdUserName} = '';</a></strong><br /> |
4046 |
|
|
</dt> |
4047 |
|
|
<dd> |
4048 |
|
|
Rsync daemon user name on client, for <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``rsyncd''. |
4049 |
|
|
The user name and password are stored on the client in whatever file |
4050 |
|
|
the ``secrets file'' parameter in rsyncd.conf points to |
4051 |
|
|
(eg: /etc/rsyncd.secrets). |
4052 |
|
|
</dd> |
4053 |
|
|
<p></p> |
4054 |
|
|
<dt><strong><a name="item_%24conf%7brsyncdpasswd%7d">$Conf{RsyncdPasswd} = '';</a></strong><br /> |
4055 |
|
|
</dt> |
4056 |
|
|
<dd> |
4057 |
|
|
Rsync daemon user name on client, for <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> = ``rsyncd''. |
4058 |
|
|
The user name and password are stored on the client in whatever file |
4059 |
|
|
the ``secrets file'' parameter in rsyncd.conf points to |
4060 |
|
|
(eg: /etc/rsyncd.secrets). |
4061 |
|
|
</dd> |
4062 |
|
|
<p></p> |
4063 |
|
|
<dt><strong><a name="item_%24conf%7brsyncdauthrequired%7d">$Conf{RsyncdAuthRequired} = 1;</a></strong><br /> |
4064 |
|
|
</dt> |
4065 |
|
|
<dd> |
4066 |
|
|
Whether authentication is mandatory when connecting to the client's |
4067 |
|
|
rsyncd. By default this is on, ensuring that BackupPC will refuse to |
4068 |
|
|
connect to an rsyncd on the client that is not password protected. |
4069 |
|
|
Turn off at your own risk. |
4070 |
|
|
</dd> |
4071 |
|
|
<p></p> |
4072 |
|
|
<dt><strong><a name="item_%24conf%7brsynccsumcacheverifyprob%7d">$Conf{RsyncCsumCacheVerifyProb} = 0.01;</a></strong><br /> |
4073 |
|
|
</dt> |
4074 |
|
|
<dd> |
4075 |
|
|
When rsync checksum caching is enabled (by adding the |
4076 |
|
|
--checksum-seed=32761 option to <a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A>), the cached |
4077 |
|
|
checksums can be occaisonally verified to make sure the file |
4078 |
|
|
contents matches the cached checksums. This is to avoid the |
4079 |
|
|
risk that disk problems might cause the pool file contents to |
4080 |
|
|
get corrupted, but the cached checksums would make BackupPC |
4081 |
|
|
think that the file still matches the client. |
4082 |
|
|
</dd> |
4083 |
|
|
<dd> |
4084 |
|
|
<p>This setting is the probability (0 means never and 1 means always) |
4085 |
|
|
that a file will be rechecked. Setting it to 0 means the checksums |
4086 |
|
|
will not be rechecked (unless there is a phase 0 failure). Setting |
4087 |
|
|
it to 1 (ie: 100%) means all files will be checked, but that is |
4088 |
|
|
not a desirable setting since you are better off simply turning |
4089 |
|
|
caching off (ie: remove the --checksum-seed option).</p> |
4090 |
|
|
</dd> |
4091 |
|
|
<dd> |
4092 |
|
|
<p>The default of 0.01 means 1% (on average) of the files during a full |
4093 |
|
|
backup will have their cached checksum re-checked.</p> |
4094 |
|
|
</dd> |
4095 |
|
|
<dd> |
4096 |
|
|
<p>This setting has no effect unless checksum caching is turned on.</p> |
4097 |
|
|
</dd> |
4098 |
|
|
<p></p> |
4099 |
|
|
<dt><strong><a name="item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs} = [ ... ];</a></strong><br /> |
4100 |
|
|
</dt> |
4101 |
|
|
<dd> |
4102 |
|
|
Arguments to rsync for backup. Do not edit the first set unless you |
4103 |
|
|
have a thorough understanding of how File::RsyncP works. |
4104 |
|
|
</dd> |
4105 |
|
|
<dd> |
4106 |
|
|
<p>Examples of additional arguments that should work are --exclude/--include, |
4107 |
|
|
eg:</p> |
4108 |
|
|
</dd> |
4109 |
|
|
<dd> |
4110 |
|
|
<pre> |
4111 |
|
|
<a href="#item_%24conf%7brsyncargs%7d">$Conf{RsyncArgs}</A> = [ |
4112 |
|
|
# original arguments here |
4113 |
|
|
'-v', |
4114 |
|
|
'--exclude', '/proc', |
4115 |
|
|
'--exclude', '*.tmp', |
4116 |
|
|
];</pre> |
4117 |
|
|
</dd> |
4118 |
|
|
<p></p> |
4119 |
|
|
<dt><strong><a name="item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs} = [ ... ];</a></strong><br /> |
4120 |
|
|
</dt> |
4121 |
|
|
<dd> |
4122 |
|
|
Arguments to rsync for restore. Do not edit the first set unless you |
4123 |
|
|
have a thorough understanding of how File::RsyncP works. |
4124 |
|
|
</dd> |
4125 |
|
|
<dd> |
4126 |
|
|
<p>If you want to disable direct restores using rsync (eg: is the module |
4127 |
|
|
is read-only), you should set <a href="#item_%24conf%7brsyncrestoreargs%7d">$Conf{RsyncRestoreArgs}</A> to undef and |
4128 |
|
|
the corresponding CGI restore option will be removed.</p> |
4129 |
|
|
</dd> |
4130 |
|
|
<p></p> |
4131 |
|
|
<dt><strong><a name="item_%24conf%7barchivedest%7d">$Conf{ArchiveDest} = '/tmp';</a></strong><br /> |
4132 |
|
|
</dt> |
4133 |
|
|
<dd> |
4134 |
|
|
Archive Destination |
4135 |
|
|
</dd> |
4136 |
|
|
<dd> |
4137 |
|
|
<p>The Destination of the archive |
4138 |
|
|
e.g. /tmp for file archive or /dev/nst0 for device archive</p> |
4139 |
|
|
</dd> |
4140 |
|
|
<p></p> |
4141 |
|
|
<dt><strong><a name="item_%24conf%7barchivecomp%7d">$Conf{ArchiveComp} = 'gzip';</a></strong><br /> |
4142 |
|
|
</dt> |
4143 |
|
|
<dd> |
4144 |
|
|
Archive Compression type |
4145 |
|
|
</dd> |
4146 |
|
|
<dd> |
4147 |
|
|
<p>The valid values are:</p> |
4148 |
|
|
</dd> |
4149 |
|
|
<dd> |
4150 |
|
|
<pre> |
4151 |
|
|
- 'none': No Compression</pre> |
4152 |
|
|
</dd> |
4153 |
|
|
<dd> |
4154 |
|
|
<pre> |
4155 |
|
|
- 'gzip': Medium Compression. Recommended.</pre> |
4156 |
|
|
</dd> |
4157 |
|
|
<dd> |
4158 |
|
|
<pre> |
4159 |
|
|
- 'bzip2': High Compression but takes longer.</pre> |
4160 |
|
|
</dd> |
4161 |
|
|
<p></p> |
4162 |
|
|
<dt><strong><a name="item_%24conf%7barchivepar%7d">$Conf{ArchivePar} = 0;</a></strong><br /> |
4163 |
|
|
</dt> |
4164 |
|
|
<dd> |
4165 |
|
|
Archive Parity Files |
4166 |
|
|
</dd> |
4167 |
|
|
<dd> |
4168 |
|
|
<p>The amount of Parity data to generate, as a percentage |
4169 |
|
|
of the archive size. |
4170 |
|
|
Uses the commandline par2 (par2cmdline) available from |
4171 |
|
|
<a href="http://parchive.sourceforge.net">http://parchive.sourceforge.net</a></p> |
4172 |
|
|
</dd> |
4173 |
|
|
<dd> |
4174 |
|
|
<p>Only useful for file dumps.</p> |
4175 |
|
|
</dd> |
4176 |
|
|
<dd> |
4177 |
|
|
<p>Set to 0 to disable this feature.</p> |
4178 |
|
|
</dd> |
4179 |
|
|
<p></p> |
4180 |
|
|
<dt><strong><a name="item_%24conf%7barchivesplit%7d">$Conf{ArchiveSplit} = 0;</a></strong><br /> |
4181 |
|
|
</dt> |
4182 |
|
|
<dd> |
4183 |
|
|
Archive Size Split |
4184 |
|
|
</dd> |
4185 |
|
|
<dd> |
4186 |
|
|
<p>Only for file archives. Splits the output into |
4187 |
|
|
the specified size * 1,000,000. |
4188 |
|
|
e.g. to split into 650,000,000 bytes, specify 650 below.</p> |
4189 |
|
|
</dd> |
4190 |
|
|
<dd> |
4191 |
|
|
<p>If the value is 0, or if <a href="#item_%24conf%7barchivedest%7d">$Conf{ArchiveDest}</A> is an existing file or |
4192 |
|
|
device (e.g. a streaming tape drive), this feature is disabled.</p> |
4193 |
|
|
</dd> |
4194 |
|
|
<p></p> |
4195 |
|
|
<dt><strong><a name="item_%24conf%7barchiveclientcmd%7d">$Conf{ArchiveClientCmd} = '$Installdir/bin/BackupPC_archiveHost' ...</a></strong><br /> |
4196 |
|
|
</dt> |
4197 |
|
|
<dd> |
4198 |
|
|
Archive Command |
4199 |
|
|
</dd> |
4200 |
|
|
<dd> |
4201 |
|
|
<p>This is the command that is called to actually run the archive process |
4202 |
|
|
for each host. The following variables are substituted at run-time:</p> |
4203 |
|
|
</dd> |
4204 |
|
|
<dd> |
4205 |
|
|
<pre> |
4206 |
|
|
$Installdir The installation directory of BackupPC |
4207 |
|
|
$tarCreatePath The path to BackupPC_tarCreate |
4208 |
|
|
$splitpath The path to the split program |
4209 |
|
|
$parpath The path to the par2 program |
4210 |
|
|
$host The host to archive |
4211 |
|
|
$backupnumber The backup number of the host to archive |
4212 |
|
|
$compression The path to the compression program |
4213 |
|
|
$compext The extension assigned to the compression type |
4214 |
|
|
$splitsize The number of bytes to split archives into |
4215 |
|
|
$archiveloc The location to put the archive |
4216 |
|
|
$parfile The amount of parity data to create (percentage)</pre> |
4217 |
|
|
</dd> |
4218 |
|
|
<p></p> |
4219 |
|
|
<dt><strong><a name="item_%24conf%7bsshpath%7d">$Conf{SshPath} = '/usr/bin/ssh';</a></strong><br /> |
4220 |
|
|
</dt> |
4221 |
|
|
<dd> |
4222 |
|
|
Full path for ssh. Security caution: normal users should not |
4223 |
|
|
allowed to write to this file or directory. |
4224 |
|
|
</dd> |
4225 |
|
|
<p></p> |
4226 |
|
|
<dt><strong><a name="item_%24conf%7bnmblookuppath%7d">$Conf{NmbLookupPath} = '/usr/bin/nmblookup';</a></strong><br /> |
4227 |
|
|
</dt> |
4228 |
|
|
<dd> |
4229 |
|
|
Full path for nmblookup. Security caution: normal users should not |
4230 |
|
|
allowed to write to this file or directory. |
4231 |
|
|
</dd> |
4232 |
|
|
<dd> |
4233 |
|
|
<p>nmblookup is from the Samba distribution. nmblookup is used to get the |
4234 |
|
|
netbios name, necessary for DHCP hosts.</p> |
4235 |
|
|
</dd> |
4236 |
|
|
<p></p> |
4237 |
|
|
<dt><strong><a name="item_%24conf%7bnmblookupcmd%7d">$Conf{NmbLookupCmd} = '$nmbLookupPath -A $host';</a></strong><br /> |
4238 |
|
|
</dt> |
4239 |
|
|
<dd> |
4240 |
|
|
NmbLookup command. Given an IP address, does an nmblookup on that |
4241 |
|
|
IP address. The following variables are substituted at run-time: |
4242 |
|
|
</dd> |
4243 |
|
|
<dd> |
4244 |
|
|
<pre> |
4245 |
|
|
$nmbLookupPath path to nmblookup (<a href="#item_%24conf%7bnmblookuppath%7d">$Conf{NmbLookupPath}</A>) |
4246 |
|
|
$host IP address</pre> |
4247 |
|
|
</dd> |
4248 |
|
|
<dd> |
4249 |
|
|
<p>This command is only used for DHCP hosts: given an IP address, this |
4250 |
|
|
command should try to find its NetBios name.</p> |
4251 |
|
|
</dd> |
4252 |
|
|
<p></p> |
4253 |
|
|
<dt><strong><a name="item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd} = '$nmbLookupPath $host';</a></strong><br /> |
4254 |
|
|
</dt> |
4255 |
|
|
<dd> |
4256 |
|
|
NmbLookup command. Given a netbios name, finds that host by doing |
4257 |
|
|
a NetBios lookup. Several variables are substituted at run-time: |
4258 |
|
|
</dd> |
4259 |
|
|
<dd> |
4260 |
|
|
<pre> |
4261 |
|
|
$nmbLookupPath path to nmblookup (<a href="#item_%24conf%7bnmblookuppath%7d">$Conf{NmbLookupPath}</A>) |
4262 |
|
|
$host NetBios name</pre> |
4263 |
|
|
</dd> |
4264 |
|
|
<dd> |
4265 |
|
|
<p>In some cases you might need to change the broadcast address, for |
4266 |
|
|
example if nmblookup uses 192.168.255.255 by default and you find |
4267 |
|
|
that doesn't work, try 192.168.1.255 (or your equivalent class C |
4268 |
|
|
address) using the -B option:</p> |
4269 |
|
|
</dd> |
4270 |
|
|
<dd> |
4271 |
|
|
<pre> |
4272 |
|
|
<a href="#item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd}</A> = '$nmbLookupPath -B 192.168.1.255 $host';</pre> |
4273 |
|
|
</dd> |
4274 |
|
|
<dd> |
4275 |
|
|
<p>If you use a WINS server and your machines don't respond to |
4276 |
|
|
multicast NetBios requests you can use this (replace 1.2.3.4 |
4277 |
|
|
with the IP address of your WINS server):</p> |
4278 |
|
|
</dd> |
4279 |
|
|
<dd> |
4280 |
|
|
<pre> |
4281 |
|
|
<a href="#item_%24conf%7bnmblookupfindhostcmd%7d">$Conf{NmbLookupFindHostCmd}</A> = '$nmbLookupPath -R -U 1.2.3.4 $host';</pre> |
4282 |
|
|
</dd> |
4283 |
|
|
<dd> |
4284 |
|
|
<p>This is preferred over multicast since it minimizes network traffic.</p> |
4285 |
|
|
</dd> |
4286 |
|
|
<dd> |
4287 |
|
|
<p>Experiment manually for your site to see what form of nmblookup command |
4288 |
|
|
works.</p> |
4289 |
|
|
</dd> |
4290 |
|
|
<p></p> |
4291 |
|
|
<dt><strong><a name="item_%24conf%7bfixedipnetbiosnamecheck%7d">$Conf{FixedIPNetBiosNameCheck} = 0;</a></strong><br /> |
4292 |
|
|
</dt> |
4293 |
|
|
<dd> |
4294 |
|
|
For fixed IP address hosts, BackupPC_dump can also verify the netbios |
4295 |
|
|
name to ensure it matches the host name. An error is generated if |
4296 |
|
|
they do not match. Typically this flag is off. But if you are going |
4297 |
|
|
to transition a bunch of machines from fixed host addresses to DHCP, |
4298 |
|
|
setting this flag is a great way to verify that the machines have |
4299 |
|
|
their netbios name set correctly before turning on DCHP. |
4300 |
|
|
</dd> |
4301 |
|
|
<p></p> |
4302 |
|
|
<dt><strong><a name="item_%24conf%7bpingpath%7d">$Conf{PingPath} = '/bin/ping';</a></strong><br /> |
4303 |
|
|
</dt> |
4304 |
|
|
<dd> |
4305 |
|
|
Full path to the ping command. Security caution: normal users |
4306 |
|
|
should not be allowed to write to this file or directory. |
4307 |
|
|
</dd> |
4308 |
|
|
<dd> |
4309 |
|
|
<p>If you want to disable ping checking, set this to some program |
4310 |
|
|
that exits with 0 status, eg:</p> |
4311 |
|
|
</dd> |
4312 |
|
|
<dd> |
4313 |
|
|
<pre> |
4314 |
|
|
<a href="#item_%24conf%7bpingpath%7d">$Conf{PingPath}</A> = '/bin/echo';</pre> |
4315 |
|
|
</dd> |
4316 |
|
|
<p></p> |
4317 |
|
|
<dt><strong><a name="item_%24conf%7bpingcmd%7d">$Conf{PingCmd} = '$pingPath -c 1 $host';</a></strong><br /> |
4318 |
|
|
</dt> |
4319 |
|
|
<dd> |
4320 |
|
|
Ping command. The following variables are substituted at run-time: |
4321 |
|
|
</dd> |
4322 |
|
|
<dd> |
4323 |
|
|
<pre> |
4324 |
|
|
$pingPath path to ping (<a href="#item_%24conf%7bpingpath%7d">$Conf{PingPath}</A>) |
4325 |
|
|
$host host name</pre> |
4326 |
|
|
</dd> |
4327 |
|
|
<dd> |
4328 |
|
|
<p>Wade Brown reports that on solaris 2.6 and 2.7 ping -s returns the wrong |
4329 |
|
|
exit status (0 even on failure). Replace with ``ping $host 1'', which |
4330 |
|
|
gets the correct exit status but we don't get the round-trip time.</p> |
4331 |
|
|
</dd> |
4332 |
|
|
<p></p> |
4333 |
|
|
<dt><strong><a name="item_%24conf%7bserverinitdpath%7d">$Conf{ServerInitdPath} = '';</a></strong><br /> |
4334 |
|
|
</dt> |
4335 |
|
|
<dt><strong><a name="item_%24conf%7bserverinitdstartcmd%7d">$Conf{ServerInitdStartCmd} = '';</a></strong><br /> |
4336 |
|
|
</dt> |
4337 |
|
|
<dd> |
4338 |
|
|
Path to init.d script and command to use that script to start the |
4339 |
|
|
server from the CGI interface. The following variables are substituted |
4340 |
|
|
at run-time: |
4341 |
|
|
</dd> |
4342 |
|
|
<dd> |
4343 |
|
|
<pre> |
4344 |
|
|
$sshPath path to ssh (<a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A>) |
4345 |
|
|
$serverHost same as <a href="#item_%24conf%7bserverhost%7d">$Conf{ServerHost}</A> |
4346 |
|
|
$serverInitdPath path to init.d script (<a href="#item_%24conf%7bserverinitdpath%7d">$Conf{ServerInitdPath}</A>)</pre> |
4347 |
|
|
</dd> |
4348 |
|
|
<dd> |
4349 |
|
|
<p>Example:</p> |
4350 |
|
|
</dd> |
4351 |
|
|
<dd> |
4352 |
|
|
<p><a href="#item_%24conf%7bserverinitdpath%7d">$Conf{ServerInitdPath}</A> = '/etc/init.d/backuppc'; |
4353 |
|
|
<a href="#item_%24conf%7bserverinitdstartcmd%7d">$Conf{ServerInitdStartCmd}</A> = '$sshPath -q -x -l root $serverHost' |
4354 |
|
|
. ' $serverInitdPath start' |
4355 |
|
|
. ' < /dev/null >& /dev/null';</p> |
4356 |
|
|
</dd> |
4357 |
|
|
<p></p> |
4358 |
|
|
<dt><strong><a name="item_%24conf%7bcompresslevel%7d">$Conf{CompressLevel} = 0;</a></strong><br /> |
4359 |
|
|
</dt> |
4360 |
|
|
<dd> |
4361 |
|
|
Compression level to use on files. 0 means no compression. Compression |
4362 |
|
|
levels can be from 1 (least cpu time, slightly worse compression) to |
4363 |
|
|
9 (most cpu time, slightly better compression). The recommended value |
4364 |
|
|
is 3. Changing to 5, for example, will take maybe 20% more cpu time |
4365 |
|
|
and will get another 2-3% additional compression. See the zlib |
4366 |
|
|
documentation for more information about compression levels. |
4367 |
|
|
</dd> |
4368 |
|
|
<dd> |
4369 |
|
|
<p>Changing compression on or off after backups have already been done |
4370 |
|
|
will require both compressed and uncompressed pool files to be stored. |
4371 |
|
|
This will increase the pool storage requirements, at least until all |
4372 |
|
|
the old backups expire and are deleted.</p> |
4373 |
|
|
</dd> |
4374 |
|
|
<dd> |
4375 |
|
|
<p>It is ok to change the compression value (from one non-zero value to |
4376 |
|
|
another non-zero value) after dumps are already done. Since BackupPC |
4377 |
|
|
matches pool files by comparing the uncompressed versions, it will still |
4378 |
|
|
correctly match new incoming files against existing pool files. The |
4379 |
|
|
new compression level will take effect only for new files that are |
4380 |
|
|
newly compressed and added to the pool.</p> |
4381 |
|
|
</dd> |
4382 |
|
|
<dd> |
4383 |
|
|
<p>If compression was off and you are enabling compression for the first |
4384 |
|
|
time you can use the BackupPC_compressPool utility to compress the |
4385 |
|
|
pool. This avoids having the pool grow to accommodate both compressed |
4386 |
|
|
and uncompressed backups. See the documentation for more information.</p> |
4387 |
|
|
</dd> |
4388 |
|
|
<dd> |
4389 |
|
|
<p>Note: compression needs the Compress::Zlib perl library. If the |
4390 |
|
|
Compress::Zlib library can't be found then <a href="#item_%24conf%7bcompresslevel%7d">$Conf{CompressLevel}</A> is |
4391 |
|
|
forced to 0 (compression off).</p> |
4392 |
|
|
</dd> |
4393 |
|
|
<p></p> |
4394 |
|
|
<dt><strong><a name="item_%24conf%7bpingmaxmsec%7d">$Conf{PingMaxMsec} = 20;</a></strong><br /> |
4395 |
|
|
</dt> |
4396 |
|
|
<dd> |
4397 |
|
|
Maximum round-trip ping time in milliseconds. This threshold is set |
4398 |
|
|
to avoid backing up PCs that are remotely connected through WAN or |
4399 |
|
|
dialup connections. The output from ping -s (assuming it is supported |
4400 |
|
|
on your system) is used to check the round-trip packet time. On your |
4401 |
|
|
local LAN round-trip times should be much less than 20msec. On most |
4402 |
|
|
WAN or dialup connections the round-trip time will be typically more |
4403 |
|
|
than 20msec. Tune if necessary. |
4404 |
|
|
</dd> |
4405 |
|
|
<p></p> |
4406 |
|
|
<dt><strong><a name="item_%24conf%7bclienttimeout%7d">$Conf{ClientTimeout} = 7200;</a></strong><br /> |
4407 |
|
|
</dt> |
4408 |
|
|
<dd> |
4409 |
|
|
Timeout in seconds when listening for the transport program's |
4410 |
|
|
(smbclient, tar etc) stdout. If no output is received during this |
4411 |
|
|
time, then it is assumed that something has wedged during a backup, |
4412 |
|
|
and the backup is terminated. |
4413 |
|
|
</dd> |
4414 |
|
|
<dd> |
4415 |
|
|
<p>Note that stdout buffering combined with huge files being backed up |
4416 |
|
|
could cause longish delays in the output from smbclient that |
4417 |
|
|
BackupPC_dump sees, so in rare cases you might want to increase |
4418 |
|
|
this value.</p> |
4419 |
|
|
</dd> |
4420 |
|
|
<dd> |
4421 |
|
|
<p>Despite the name, this parameter sets the timeout for all transport |
4422 |
|
|
methods (tar, smb etc).</p> |
4423 |
|
|
</dd> |
4424 |
|
|
<p></p> |
4425 |
|
|
<dt><strong><a name="item_%24conf%7bmaxoldperpclogfiles%7d">$Conf{MaxOldPerPCLogFiles} = 12;</a></strong><br /> |
4426 |
|
|
</dt> |
4427 |
|
|
<dd> |
4428 |
|
|
Maximum number of log files we keep around in each PC's directory |
4429 |
|
|
(ie: pc/$host). These files are aged monthly. A setting of 12 |
4430 |
|
|
means there will be at most the files LOG, LOG.0, LOG.1, ... LOG.11 |
4431 |
|
|
in the pc/$host directory (ie: about a years worth). (Except this |
4432 |
|
|
month's LOG, these files will have a .z extension if compression |
4433 |
|
|
is on). |
4434 |
|
|
</dd> |
4435 |
|
|
<dd> |
4436 |
|
|
<p>If you decrease this number after BackupPC has been running for a |
4437 |
|
|
while you will have to manually remove the older log files.</p> |
4438 |
|
|
</dd> |
4439 |
|
|
<p></p> |
4440 |
|
|
<dt><strong><a name="item_%24conf%7bdumppreusercmd%7d">$Conf{DumpPreUserCmd} = undef;</a></strong><br /> |
4441 |
|
|
</dt> |
4442 |
|
|
<dt><strong><a name="item_%24conf%7bdumppostusercmd%7d">$Conf{DumpPostUserCmd} = undef;</a></strong><br /> |
4443 |
|
|
</dt> |
4444 |
|
|
<dt><strong><a name="item_%24conf%7brestorepreusercmd%7d">$Conf{RestorePreUserCmd} = undef;</a></strong><br /> |
4445 |
|
|
</dt> |
4446 |
|
|
<dt><strong><a name="item_%24conf%7brestorepostusercmd%7d">$Conf{RestorePostUserCmd} = undef;</a></strong><br /> |
4447 |
|
|
</dt> |
4448 |
|
|
<dt><strong><a name="item_%24conf%7barchivepreusercmd%7d">$Conf{ArchivePreUserCmd} = undef;</a></strong><br /> |
4449 |
|
|
</dt> |
4450 |
|
|
<dt><strong><a name="item_%24conf%7barchivepostusercmd%7d">$Conf{ArchivePostUserCmd} = undef;</a></strong><br /> |
4451 |
|
|
</dt> |
4452 |
|
|
<dd> |
4453 |
|
|
Optional commands to run before and after dumps and restores. |
4454 |
|
|
Stdout from these commands will be written to the Xfer (or Restore) |
4455 |
|
|
log file. One example of using these commands would be to |
4456 |
|
|
shut down and restart a database server, or to dump a database |
4457 |
|
|
to files for backup. Example: |
4458 |
|
|
</dd> |
4459 |
|
|
<dd> |
4460 |
|
|
<pre> |
4461 |
|
|
<a href="#item_%24conf%7bdumppreusercmd%7d">$Conf{DumpPreUserCmd}</A> = '$sshPath -q -x -l root $host /usr/bin/dumpMysql';</pre> |
4462 |
|
|
</dd> |
4463 |
|
|
<dd> |
4464 |
|
|
<p>The following variable substitutions are made at run time for |
4465 |
|
|
<a href="#item_%24conf%7bdumppreusercmd%7d">$Conf{DumpPreUserCmd}</A> and <a href="#item_%24conf%7bdumppostusercmd%7d">$Conf{DumpPostUserCmd}</A>:</p> |
4466 |
|
|
</dd> |
4467 |
|
|
<dd> |
4468 |
|
|
<pre> |
4469 |
|
|
$type type of dump (incr or full) |
4470 |
|
|
$xferOK 1 if the dump succeeded, 0 if it didn't |
4471 |
|
|
$client client name being backed up |
4472 |
|
|
$host host name (could be different from client name if |
4473 |
|
|
<a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> is set) |
4474 |
|
|
$hostIP IP address of host |
4475 |
|
|
$user user name from the hosts file |
4476 |
|
|
$moreUsers list of additional users from the hosts file |
4477 |
|
|
$share the first share name |
4478 |
|
|
$shares list of all the share names |
4479 |
|
|
$XferMethod value of <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> (eg: tar, rsync, smb) |
4480 |
|
|
$sshPath value of <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A>, |
4481 |
|
|
$cmdType set to DumpPreUserCmd or DumpPostUserCmd</pre> |
4482 |
|
|
</dd> |
4483 |
|
|
<dd> |
4484 |
|
|
<p>The following variable substitutions are made at run time for |
4485 |
|
|
<a href="#item_%24conf%7brestorepreusercmd%7d">$Conf{RestorePreUserCmd}</A> and <a href="#item_%24conf%7brestorepostusercmd%7d">$Conf{RestorePostUserCmd}</A>:</p> |
4486 |
|
|
</dd> |
4487 |
|
|
<dd> |
4488 |
|
|
<pre> |
4489 |
|
|
$client client name being backed up |
4490 |
|
|
$xferOK 1 if the restore succeeded, 0 if it didn't |
4491 |
|
|
$host host name (could be different from client name if |
4492 |
|
|
<a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> is set) |
4493 |
|
|
$hostIP IP address of host |
4494 |
|
|
$user user name from the hosts file |
4495 |
|
|
$moreUsers list of additional users from the hosts file |
4496 |
|
|
$share the first share name |
4497 |
|
|
$XferMethod value of <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> (eg: tar, rsync, smb) |
4498 |
|
|
$sshPath value of <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A>, |
4499 |
|
|
$type set to "restore" |
4500 |
|
|
$bkupSrcHost host name of the restore source |
4501 |
|
|
$bkupSrcShare share name of the restore source |
4502 |
|
|
$bkupSrcNum backup number of the restore source |
4503 |
|
|
$pathHdrSrc common starting path of restore source |
4504 |
|
|
$pathHdrDest common starting path of destination |
4505 |
|
|
$fileList list of files being restored |
4506 |
|
|
$cmdType set to RestorePreUserCmd or RestorePostUserCmd</pre> |
4507 |
|
|
</dd> |
4508 |
|
|
<dd> |
4509 |
|
|
<p>The following variable substitutions are made at run time for |
4510 |
|
|
<a href="#item_%24conf%7barchivepreusercmd%7d">$Conf{ArchivePreUserCmd}</A> and <a href="#item_%24conf%7barchivepostusercmd%7d">$Conf{ArchivePostUserCmd}</A>:</p> |
4511 |
|
|
</dd> |
4512 |
|
|
<dd> |
4513 |
|
|
<pre> |
4514 |
|
|
$client client name being backed up |
4515 |
|
|
$xferOK 1 if the archive succeeded, 0 if it didn't |
4516 |
|
|
$host Name of the archive host |
4517 |
|
|
$user user name from the hosts file |
4518 |
|
|
$share the first share name |
4519 |
|
|
$XferMethod value of <a href="#item_%24conf%7bxfermethod%7d">$Conf{XferMethod}</A> (eg: tar, rsync, smb) |
4520 |
|
|
$HostList list of hosts being archived |
4521 |
|
|
$BackupList list of backup numbers for the hosts being archived |
4522 |
|
|
$archiveloc location where the archive is sent to |
4523 |
|
|
$parfile amount of parity data being generated (percentage) |
4524 |
|
|
$compression compression program being used (eg: cat, gzip, bzip2) |
4525 |
|
|
$compext extension used for compression type (eg: raw, gz, bz2) |
4526 |
|
|
$splitsize size of the files that the archive creates |
4527 |
|
|
$sshPath value of <a href="#item_%24conf%7bsshpath%7d">$Conf{SshPath}</A>, |
4528 |
|
|
$type set to "archive" |
4529 |
|
|
$cmdType set to ArchivePreUserCmd or ArchivePostUserCmd</pre> |
4530 |
|
|
</dd> |
4531 |
|
|
<p></p> |
4532 |
|
|
<dt><strong><a name="item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias} = undef;</a></strong><br /> |
4533 |
|
|
</dt> |
4534 |
|
|
<dd> |
4535 |
|
|
Override the client's host name. This allows multiple clients |
4536 |
|
|
to all refer to the same physical host. This should only be |
4537 |
|
|
set in the per-PC config file and is only used by BackupPC at |
4538 |
|
|
the last moment prior to generating the command used to backup |
4539 |
|
|
that machine (ie: the value of <a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> is invisible |
4540 |
|
|
everywhere else in BackupPC). The setting can be a host name or |
4541 |
|
|
IP address, eg: |
4542 |
|
|
</dd> |
4543 |
|
|
<dd> |
4544 |
|
|
<pre> |
4545 |
|
|
<a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> = 'realHostName'; |
4546 |
|
|
<a href="#item_%24conf%7bclientnamealias%7d">$Conf{ClientNameAlias}</A> = '192.1.1.15';</pre> |
4547 |
|
|
</dd> |
4548 |
|
|
<dd> |
4549 |
|
|
<p>will cause the relevant smb/tar/rsync backup/restore commands to be |
4550 |
|
|
directed to realHostName, not the client name.</p> |
4551 |
|
|
</dd> |
4552 |
|
|
<dd> |
4553 |
|
|
<p>Note: this setting doesn't work for hosts with DHCP set to 1.</p> |
4554 |
|
|
</dd> |
4555 |
|
|
<p></p> |
4556 |
|
|
<dt><strong><a name="item_%24conf%7bperlmoduleload%7d">$Conf{PerlModuleLoad} = undef;</a></strong><br /> |
4557 |
|
|
</dt> |
4558 |
|
|
<dd> |
4559 |
|
|
Advanced option for asking BackupPC to load additional perl modules. |
4560 |
|
|
Can be a list (array ref) of module names to load at startup. |
4561 |
|
|
</dd> |
4562 |
|
|
<p></p></dl> |
4563 |
|
|
<p> |
4564 |
|
|
</p> |
4565 |
|
|
<h2><a name="email_reminders__status_and_messages">Email reminders, status and messages</a></h2> |
4566 |
|
|
<dl> |
4567 |
|
|
<dt><strong><a name="item_%24conf%7bsendmailpath%7d">$Conf{SendmailPath} = '/usr/sbin/sendmail';</a></strong><br /> |
4568 |
|
|
</dt> |
4569 |
|
|
<dd> |
4570 |
|
|
Full path to the sendmail command. Security caution: normal users |
4571 |
|
|
should not allowed to write to this file or directory. |
4572 |
|
|
</dd> |
4573 |
|
|
<p></p> |
4574 |
|
|
<dt><strong><a name="item_%24conf%7bemailnotifymindays%7d">$Conf{EMailNotifyMinDays} = 2.5;</a></strong><br /> |
4575 |
|
|
</dt> |
4576 |
|
|
<dd> |
4577 |
|
|
Minimum period between consecutive emails to a single user. |
4578 |
|
|
This tries to keep annoying email to users to a reasonable |
4579 |
|
|
level. Email checks are done nightly, so this number is effectively |
4580 |
|
|
rounded up (ie: 2.5 means a user will never receive email more |
4581 |
|
|
than once every 3 days). |
4582 |
|
|
</dd> |
4583 |
|
|
<p></p> |
4584 |
|
|
<dt><strong><a name="item_%24conf%7bemailfromusername%7d">$Conf{EMailFromUserName} = '';</a></strong><br /> |
4585 |
|
|
</dt> |
4586 |
|
|
<dd> |
4587 |
|
|
Name to use as the ``from'' name for email. Depending upon your mail |
4588 |
|
|
handler this is either a plain name (eg: ``admin'') or a fully-qualified |
4589 |
|
|
name (eg: <a href="mailto:``admin@mydomain.com'').">``admin@mydomain.com'').</a> |
4590 |
|
|
</dd> |
4591 |
|
|
<p></p> |
4592 |
|
|
<dt><strong><a name="item_%24conf%7bemailadminusername%7d">$Conf{EMailAdminUserName} = '';</a></strong><br /> |
4593 |
|
|
</dt> |
4594 |
|
|
<dd> |
4595 |
|
|
Destination address to an administrative user who will receive a |
4596 |
|
|
nightly email with warnings and errors. If there are no warnings |
4597 |
|
|
or errors then no email will be sent. Depending upon your mail |
4598 |
|
|
handler this is either a plain name (eg: ``admin'') or a fully-qualified |
4599 |
|
|
name (eg: <a href="mailto:``admin@mydomain.com'').">``admin@mydomain.com'').</a> |
4600 |
|
|
</dd> |
4601 |
|
|
<p></p> |
4602 |
|
|
<dt><strong><a name="item_%24conf%7bemailuserdestdomain%7d">$Conf{EMailUserDestDomain} = '';</a></strong><br /> |
4603 |
|
|
</dt> |
4604 |
|
|
<dd> |
4605 |
|
|
Destination domain name for email sent to users. By default |
4606 |
|
|
this is empty, meaning email is sent to plain, unqualified |
4607 |
|
|
addresses. Otherwise, set it to the destintation domain, eg: |
4608 |
|
|
</dd> |
4609 |
|
|
<dd> |
4610 |
|
|
<pre> |
4611 |
|
|
$Cong{EMailUserDestDomain} = '@mydomain.com';</pre> |
4612 |
|
|
</dd> |
4613 |
|
|
<dd> |
4614 |
|
|
<p>With this setting user email will be set to <a href="mailto:'user@mydomain.com'.">'user@mydomain.com'.</a></p> |
4615 |
|
|
</dd> |
4616 |
|
|
<p></p> |
4617 |
|
|
<dt><strong><a name="item_%24conf%7bemailnobackupeversubj%7d">$Conf{EMailNoBackupEverSubj} = undef;</a></strong><br /> |
4618 |
|
|
</dt> |
4619 |
|
|
<dt><strong><a name="item_%24conf%7bemailnobackupevermesg%7d">$Conf{EMailNoBackupEverMesg} = undef;</a></strong><br /> |
4620 |
|
|
</dt> |
4621 |
|
|
<dd> |
4622 |
|
|
This subject and message is sent to a user if their PC has never been |
4623 |
|
|
backed up. |
4624 |
|
|
</dd> |
4625 |
|
|
<dd> |
4626 |
|
|
<p>These values are language-dependent. The default versions can be |
4627 |
|
|
found in the language file (eg: lib/BackupPC/Lang/en.pm). If you |
4628 |
|
|
need to change the message, copy it here and edit it, eg:</p> |
4629 |
|
|
</dd> |
4630 |
|
|
<dd> |
4631 |
|
|
<pre> |
4632 |
|
|
<a href="#item_%24conf%7bemailnobackupevermesg%7d">$Conf{EMailNoBackupEverMesg}</A> = <<'EOF'; |
4633 |
|
|
To: $user$domain |
4634 |
|
|
cc: |
4635 |
|
|
Subject: $subj</pre> |
4636 |
|
|
</dd> |
4637 |
|
|
<dd> |
4638 |
|
|
<pre> |
4639 |
|
|
Dear $userName,</pre> |
4640 |
|
|
</dd> |
4641 |
|
|
<dd> |
4642 |
|
|
<pre> |
4643 |
|
|
This is a site-specific email message. |
4644 |
|
|
EOF</pre> |
4645 |
|
|
</dd> |
4646 |
|
|
<p></p> |
4647 |
|
|
<dt><strong><a name="item_%24conf%7bemailnotifyoldbackupdays%7d">$Conf{EMailNotifyOldBackupDays} = 7.0;</a></strong><br /> |
4648 |
|
|
</dt> |
4649 |
|
|
<dd> |
4650 |
|
|
How old the most recent backup has to be before notifying user. |
4651 |
|
|
When there have been no backups in this number of days the user |
4652 |
|
|
is sent an email. |
4653 |
|
|
</dd> |
4654 |
|
|
<p></p> |
4655 |
|
|
<dt><strong><a name="item_%24conf%7bemailnobackuprecentsubj%7d">$Conf{EMailNoBackupRecentSubj} = undef;</a></strong><br /> |
4656 |
|
|
</dt> |
4657 |
|
|
<dt><strong><a name="item_%24conf%7bemailnobackuprecentmesg%7d">$Conf{EMailNoBackupRecentMesg} = undef;</a></strong><br /> |
4658 |
|
|
</dt> |
4659 |
|
|
<dd> |
4660 |
|
|
This subject and message is sent to a user if their PC has not recently |
4661 |
|
|
been backed up (ie: more than <a href="#item_%24conf%7bemailnotifyoldbackupdays%7d">$Conf{EMailNotifyOldBackupDays}</A> days ago). |
4662 |
|
|
</dd> |
4663 |
|
|
<dd> |
4664 |
|
|
<p>These values are language-dependent. The default versions can be |
4665 |
|
|
found in the language file (eg: lib/BackupPC/Lang/en.pm). If you |
4666 |
|
|
need to change the message, copy it here and edit it, eg:</p> |
4667 |
|
|
</dd> |
4668 |
|
|
<dd> |
4669 |
|
|
<pre> |
4670 |
|
|
<a href="#item_%24conf%7bemailnobackuprecentmesg%7d">$Conf{EMailNoBackupRecentMesg}</A> = <<'EOF'; |
4671 |
|
|
To: $user$domain |
4672 |
|
|
cc: |
4673 |
|
|
Subject: $subj</pre> |
4674 |
|
|
</dd> |
4675 |
|
|
<dd> |
4676 |
|
|
<pre> |
4677 |
|
|
Dear $userName,</pre> |
4678 |
|
|
</dd> |
4679 |
|
|
<dd> |
4680 |
|
|
<pre> |
4681 |
|
|
This is a site-specific email message. |
4682 |
|
|
EOF</pre> |
4683 |
|
|
</dd> |
4684 |
|
|
<p></p> |
4685 |
|
|
<dt><strong><a name="item_%24conf%7bemailnotifyoldoutlookdays%7d">$Conf{EMailNotifyOldOutlookDays} = 5.0;</a></strong><br /> |
4686 |
|
|
</dt> |
4687 |
|
|
<dd> |
4688 |
|
|
How old the most recent backup of Outlook files has to be before |
4689 |
|
|
notifying user. |
4690 |
|
|
</dd> |
4691 |
|
|
<p></p> |
4692 |
|
|
<dt><strong><a name="item_%24conf%7bemailoutlookbackupsubj%7d">$Conf{EMailOutlookBackupSubj} = undef;</a></strong><br /> |
4693 |
|
|
</dt> |
4694 |
|
|
<dt><strong><a name="item_%24conf%7bemailoutlookbackupmesg%7d">$Conf{EMailOutlookBackupMesg} = undef;</a></strong><br /> |
4695 |
|
|
</dt> |
4696 |
|
|
<dd> |
4697 |
|
|
This subject and message is sent to a user if their Outlook files have |
4698 |
|
|
not recently been backed up (ie: more than <a href="#item_%24conf%7bemailnotifyoldoutlookdays%7d">$Conf{EMailNotifyOldOutlookDays}</A> |
4699 |
|
|
days ago). |
4700 |
|
|
</dd> |
4701 |
|
|
<dd> |
4702 |
|
|
<p>These values are language-dependent. The default versions can be |
4703 |
|
|
found in the language file (eg: lib/BackupPC/Lang/en.pm). If you |
4704 |
|
|
need to change the message, copy it here and edit it, eg:</p> |
4705 |
|
|
</dd> |
4706 |
|
|
<dd> |
4707 |
|
|
<pre> |
4708 |
|
|
<a href="#item_%24conf%7bemailoutlookbackupmesg%7d">$Conf{EMailOutlookBackupMesg}</A> = <<'EOF'; |
4709 |
|
|
To: $user$domain |
4710 |
|
|
cc: |
4711 |
|
|
Subject: $subj</pre> |
4712 |
|
|
</dd> |
4713 |
|
|
<dd> |
4714 |
|
|
<pre> |
4715 |
|
|
Dear $userName,</pre> |
4716 |
|
|
</dd> |
4717 |
|
|
<dd> |
4718 |
|
|
<pre> |
4719 |
|
|
This is a site-specific email message. |
4720 |
|
|
EOF</pre> |
4721 |
|
|
</dd> |
4722 |
|
|
<p></p></dl> |
4723 |
|
|
<p> |
4724 |
|
|
</p> |
4725 |
|
|
<h2><a name="cgi_user_interface_configuration_settings">CGI user interface configuration settings</a></h2> |
4726 |
|
|
<dl> |
4727 |
|
|
<dt><strong><a name="item_%24conf%7bcgiadminusergroup%7d">$Conf{CgiAdminUserGroup} = '';</a></strong><br /> |
4728 |
|
|
</dt> |
4729 |
|
|
<dt><strong><a name="item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers} = '';</a></strong><br /> |
4730 |
|
|
</dt> |
4731 |
|
|
<dd> |
4732 |
|
|
Normal users can only access information specific to their host. |
4733 |
|
|
They can start/stop/browse/restore backups. |
4734 |
|
|
</dd> |
4735 |
|
|
<dd> |
4736 |
|
|
<p>Administrative users have full access to all hosts, plus overall |
4737 |
|
|
status and log information.</p> |
4738 |
|
|
</dd> |
4739 |
|
|
<dd> |
4740 |
|
|
<p>The administrative users are the union of the unix/linux group |
4741 |
|
|
<a href="#item_%24conf%7bcgiadminusergroup%7d">$Conf{CgiAdminUserGroup}</A> and the manual list of users, separated |
4742 |
|
|
by spaces, in <a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A>. If you don't want a group or |
4743 |
|
|
manual list of users set the corresponding configuration setting |
4744 |
|
|
to undef or an empty string.</p> |
4745 |
|
|
</dd> |
4746 |
|
|
<dd> |
4747 |
|
|
<p>If you want every user to have admin privileges (careful!), set |
4748 |
|
|
<a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A> = '*'.</p> |
4749 |
|
|
</dd> |
4750 |
|
|
<dd> |
4751 |
|
|
<p>Examples:</p> |
4752 |
|
|
</dd> |
4753 |
|
|
<dd> |
4754 |
|
|
<pre> |
4755 |
|
|
<a href="#item_%24conf%7bcgiadminusergroup%7d">$Conf{CgiAdminUserGroup}</A> = 'admin'; |
4756 |
|
|
<a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A> = 'craig celia'; |
4757 |
|
|
--> administrative users are the union of group admin, plus |
4758 |
|
|
craig and celia.</pre> |
4759 |
|
|
</dd> |
4760 |
|
|
<dd> |
4761 |
|
|
<pre> |
4762 |
|
|
<a href="#item_%24conf%7bcgiadminusergroup%7d">$Conf{CgiAdminUserGroup}</A> = ''; |
4763 |
|
|
<a href="#item_%24conf%7bcgiadminusers%7d">$Conf{CgiAdminUsers}</A> = 'craig celia'; |
4764 |
|
|
--> administrative users are only craig and celia'.</pre> |
4765 |
|
|
</dd> |
4766 |
|
|
<p></p> |
4767 |
|
|
<dt><strong><a name="item_%24conf%7bcgiurl%7d">$Conf{CgiURL} = undef;</a></strong><br /> |
4768 |
|
|
</dt> |
4769 |
|
|
<dd> |
4770 |
|
|
URL of the BackupPC_Admin CGI script. Used for email messages. |
4771 |
|
|
</dd> |
4772 |
|
|
<p></p> |
4773 |
|
|
<dt><strong><a name="item_%24conf%7blanguage%7d">$Conf{Language} = 'en';</a></strong><br /> |
4774 |
|
|
</dt> |
4775 |
|
|
<dd> |
4776 |
|
|
Language to use. See lib/BackupPC/Lang for the list of supported |
4777 |
|
|
languages, which include English (en), French (fr), Spanish (es), |
4778 |
|
|
German (de), Italian (it) and Dutch (nl). |
4779 |
|
|
</dd> |
4780 |
|
|
<dd> |
4781 |
|
|
<p>Currently the Language setting applies to the CGI interface and email |
4782 |
|
|
messages sent to users. Log files and other text are still in English.</p> |
4783 |
|
|
</dd> |
4784 |
|
|
<p></p> |
4785 |
|
|
<dt><strong><a name="item_%24conf%7bcgiuserhomepagecheck%7d">$Conf{CgiUserHomePageCheck} = '';</a></strong><br /> |
4786 |
|
|
</dt> |
4787 |
|
|
<dt><strong><a name="item_%24conf%7bcgiuserurlcreate%7d">$Conf{CgiUserUrlCreate} = 'mailto:%s';</a></strong><br /> |
4788 |
|
|
</dt> |
4789 |
|
|
<dd> |
4790 |
|
|
User names that are rendered by the CGI interface can be turned |
4791 |
|
|
into links into their home page or other information about the |
4792 |
|
|
user. To set this up you need to create two <code>sprintf()</code> strings, |
4793 |
|
|
that each contain a single '%s' that will be replaced by the user |
4794 |
|
|
name. The default is a mailto: link. |
4795 |
|
|
</dd> |
4796 |
|
|
<dd> |
4797 |
|
|
<p><a href="#item_%24conf%7bcgiuserhomepagecheck%7d">$Conf{CgiUserHomePageCheck}</A> should be an absolute file path that |
4798 |
|
|
is used to check (via ``-f'') that the user has a valid home page. |
4799 |
|
|
Set this to undef or an empty string to turn off this check.</p> |
4800 |
|
|
</dd> |
4801 |
|
|
<dd> |
4802 |
|
|
<p><a href="#item_%24conf%7bcgiuserurlcreate%7d">$Conf{CgiUserUrlCreate}</A> should be a full URL that points to the |
4803 |
|
|
user's home page. Set this to undef or an empty string to turn |
4804 |
|
|
off generation of URLs for user names.</p> |
4805 |
|
|
</dd> |
4806 |
|
|
<dd> |
4807 |
|
|
<p>Example:</p> |
4808 |
|
|
</dd> |
4809 |
|
|
<dd> |
4810 |
|
|
<pre> |
4811 |
|
|
<a href="#item_%24conf%7bcgiuserhomepagecheck%7d">$Conf{CgiUserHomePageCheck}</A> = '/var/www/html/users/%s.html'; |
4812 |
|
|
<a href="#item_%24conf%7bcgiuserurlcreate%7d">$Conf{CgiUserUrlCreate}</A> = '<a href="http://myhost/users/%s.html">http://myhost/users/%s.html</a>'; |
4813 |
|
|
--> if /var/www/html/users/craig.html exists, then 'craig' will |
4814 |
|
|
be rendered as a link to <a href="http://myhost/users/craig.html">http://myhost/users/craig.html</a>.</pre> |
4815 |
|
|
</dd> |
4816 |
|
|
<p></p> |
4817 |
|
|
<dt><strong><a name="item_%24conf%7bcgidateformatmmdd%7d">$Conf{CgiDateFormatMMDD} = 1;</a></strong><br /> |
4818 |
|
|
</dt> |
4819 |
|
|
<dd> |
4820 |
|
|
Date display format for CGI interface. True for US-style dates (MM/DD) |
4821 |
|
|
and zero for international dates (DD/MM). |
4822 |
|
|
</dd> |
4823 |
|
|
<p></p> |
4824 |
|
|
<dt><strong><a name="item_%24conf%7bcginavbaradminallhosts%7d">$Conf{CgiNavBarAdminAllHosts} = 1;</a></strong><br /> |
4825 |
|
|
</dt> |
4826 |
|
|
<dd> |
4827 |
|
|
If set, the complete list of hosts appears in the left navigation |
4828 |
|
|
bar pull-down for administrators. Otherwise, just the hosts for which |
4829 |
|
|
the user is listed in the host file (as either the user or in moreUsers) |
4830 |
|
|
are displayed. |
4831 |
|
|
</dd> |
4832 |
|
|
<p></p> |
4833 |
|
|
<dt><strong><a name="item_%24conf%7bcgisearchboxenable%7d">$Conf{CgiSearchBoxEnable} = 1;</a></strong><br /> |
4834 |
|
|
</dt> |
4835 |
|
|
<dd> |
4836 |
|
|
Enable/disable the search box in the navigation bar. |
4837 |
|
|
</dd> |
4838 |
|
|
<p></p> |
4839 |
|
|
<dt><strong><a name="item_%24conf%7bcginavbarlinks%7d">$Conf{CgiNavBarLinks} = [ ... ];</a></strong><br /> |
4840 |
|
|
</dt> |
4841 |
|
|
<dd> |
4842 |
|
|
Additional navigation bar links. These appear for both regular users |
4843 |
|
|
and administrators. This is a list of hashes giving the link (URL) |
4844 |
|
|
and the text (name) for the link. Specifying lname instead of name |
4845 |
|
|
uses the language specific string (ie: $Lang->{lname}) instead of |
4846 |
|
|
just literally displaying name. |
4847 |
|
|
</dd> |
4848 |
|
|
<p></p> |
4849 |
|
|
<dt><strong><a name="item_%24conf%7bcgistatushilightcolor%7d">$Conf{CgiStatusHilightColor} = { ...</a></strong><br /> |
4850 |
|
|
</dt> |
4851 |
|
|
<dd> |
4852 |
|
|
Hilight colors based on status that are used in the PC summary page. |
4853 |
|
|
</dd> |
4854 |
|
|
<p></p> |
4855 |
|
|
<dt><strong><a name="item_%24conf%7bcgiheaders%7d">$Conf{CgiHeaders} = '<meta http-equiv=``pragma'' content=``no-cache''>';</a></strong><br /> |
4856 |
|
|
</dt> |
4857 |
|
|
<dd> |
4858 |
|
|
Additional CGI header text. |
4859 |
|
|
</dd> |
4860 |
|
|
<p></p> |
4861 |
|
|
<dt><strong><a name="item_%24conf%7bcgiimagedir%7d">$Conf{CgiImageDir} = '';</a></strong><br /> |
4862 |
|
|
</dt> |
4863 |
|
|
<dd> |
4864 |
|
|
Directory where images are stored. This directory should be below |
4865 |
|
|
Apache's DocumentRoot. This value isn't used by BackupPC but is |
4866 |
|
|
used by configure.pl when you upgrade BackupPC. |
4867 |
|
|
</dd> |
4868 |
|
|
<dd> |
4869 |
|
|
<p>Example:</p> |
4870 |
|
|
</dd> |
4871 |
|
|
<dd> |
4872 |
|
|
<pre> |
4873 |
|
|
<a href="#item_%24conf%7bcgiimagedir%7d">$Conf{CgiImageDir}</A> = '/usr/local/apache/htdocs/BackupPC';</pre> |
4874 |
|
|
</dd> |
4875 |
|
|
<p></p> |
4876 |
|
|
<dt><strong><a name="item_%24conf%7bcgiext2contenttype%7d">$Conf{CgiExt2ContentType} = { };</a></strong><br /> |
4877 |
|
|
</dt> |
4878 |
|
|
<dd> |
4879 |
|
|
Additional mappings of file name extenions to Content-Type for |
4880 |
|
|
individual file restore. See $Ext2ContentType in BackupPC_Admin |
4881 |
|
|
for the default setting. You can add additional settings here, |
4882 |
|
|
or override any default settings. Example: |
4883 |
|
|
</dd> |
4884 |
|
|
<dd> |
4885 |
|
|
<pre> |
4886 |
|
|
<a href="#item_%24conf%7bcgiext2contenttype%7d">$Conf{CgiExt2ContentType}</A> = { |
4887 |
|
|
'pl' => 'text/plain', |
4888 |
|
|
};</pre> |
4889 |
|
|
</dd> |
4890 |
|
|
<p></p> |
4891 |
|
|
<dt><strong><a name="item_%24conf%7bcgiimagedirurl%7d">$Conf{CgiImageDirURL} = '';</a></strong><br /> |
4892 |
|
|
</dt> |
4893 |
|
|
<dd> |
4894 |
|
|
URL (without the leading <a href="http://host)">http://host)</a> for BackupPC's image directory. |
4895 |
|
|
The CGI script uses this value to serve up image files. |
4896 |
|
|
</dd> |
4897 |
|
|
<dd> |
4898 |
|
|
<p>Example:</p> |
4899 |
|
|
</dd> |
4900 |
|
|
<dd> |
4901 |
|
|
<pre> |
4902 |
|
|
<a href="#item_%24conf%7bcgiimagedirurl%7d">$Conf{CgiImageDirURL}</A> = '/BackupPC';</pre> |
4903 |
|
|
</dd> |
4904 |
|
|
<p></p> |
4905 |
|
|
<dt><strong><a name="item_%24conf%7bcgicssfile%7d">$Conf{CgiCSSFile} = 'BackupPC_stnd.css';</a></strong><br /> |
4906 |
|
|
</dt> |
4907 |
|
|
<dd> |
4908 |
|
|
CSS stylesheet for the CGI interface. It is stored in the |
4909 |
|
|
<a href="#item_%24conf%7bcgiimagedir%7d">$Conf{CgiImageDir}</A> directory and accessed via the |
4910 |
|
|
<a href="#item_%24conf%7bcgiimagedirurl%7d">$Conf{CgiImageDirURL}</A> URL. |
4911 |
|
|
</dd> |
4912 |
|
|
<p></p></dl> |
4913 |
|
|
<p> |
4914 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
4915 |
|
|
</p> |
4916 |
|
|
<hr /> |
4917 |
|
|
<h1><a name="version_numbers">Version Numbers</a></h1> |
4918 |
|
|
<p>Starting with v1.4.0 BackupPC uses a X.Y.Z version numbering system, |
4919 |
|
|
instead of X.0Y. The first digit is for major new releases, the middle |
4920 |
|
|
digit is for significant feature releases and improvements (most of |
4921 |
|
|
the releases have been in this category), and the last digit is for |
4922 |
|
|
bug fixes. You should think of the old 1.00, 1.01, 1.02 and 1.03 as |
4923 |
|
|
1..0, 1.1.0, 1.2.0 and 1.3.0.</p> |
4924 |
|
|
<p>Additionally, patches might be made available. A patched version |
4925 |
|
|
number is of the form X.Y.ZplN (eg: 2.1.0pl2), where N is the |
4926 |
|
|
patch level.</p> |
4927 |
|
|
<p> |
4928 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
4929 |
|
|
</p> |
4930 |
|
|
<hr /> |
4931 |
|
|
<h1><a name="author">Author</a></h1> |
4932 |
|
|
<p>Craig Barratt <<a href="mailto:cbarratt@users.sourceforge.net">cbarratt@users.sourceforge.net</a>></p> |
4933 |
|
|
<p>See <a href="http://backuppc.sourceforge.net">http://backuppc.sourceforge.net</a>.</p> |
4934 |
|
|
<p> |
4935 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
4936 |
|
|
</p> |
4937 |
|
|
<hr /> |
4938 |
|
|
<h1><a name="copyright">Copyright</a></h1> |
4939 |
|
|
<p>Copyright (C) 2001-2004 Craig Barratt</p> |
4940 |
|
|
<p> |
4941 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
4942 |
|
|
</p> |
4943 |
|
|
<hr /> |
4944 |
|
|
<h1><a name="credits">Credits</a></h1> |
4945 |
|
|
<p>Ryan Kucera contributed the directory navigation code and images |
4946 |
|
|
for v1.5.0. He contributed the first skeleton of BackupPC_restore. |
4947 |
|
|
He also added a significant revision to the CGI interface, including |
4948 |
|
|
CSS tags, in v2.1.0, and designed the BackupPC logo.</p> |
4949 |
|
|
<p>Xavier Nicollet, with additions from Guillaume Filion, added the |
4950 |
|
|
internationalization (i18n) support to the CGI interface for v2.0.0. |
4951 |
|
|
Xavier provided the French translation fr.pm, with additions from |
4952 |
|
|
Guillaume.</p> |
4953 |
|
|
<p>Guillaume Filion wrote BackupPC_zipCreate and added the CGI support |
4954 |
|
|
for zip download, in addition to some CGI cleanup, for v1.5.0. |
4955 |
|
|
Guillaume continues to support fr.pm updates for each new version.</p> |
4956 |
|
|
<p>Josh Marshall implemented the Archive feature in v2.1.0.</p> |
4957 |
|
|
<p>Ludovic Drolez supports the BackupPC Debian package.</p> |
4958 |
|
|
<p>Javier Gonzalez provided the Spanish translation, es.pm for v2.0.0.</p> |
4959 |
|
|
<p>Manfred Herrmann provided the German translation, de.pm for v2.0.0. |
4960 |
|
|
Manfred continues to support de.pm updates for each new version, |
4961 |
|
|
together with some help frmo Ralph Paßgang.</p> |
4962 |
|
|
<p>Lorenzo Cappelletti provided the Italian translation, it.pm for v2.1.0.</p> |
4963 |
|
|
<p>Lieven Bridts provided the Dutch translation, nl.pm, for v2.1.0, |
4964 |
|
|
with some tweaks from Guus Houtzager.</p> |
4965 |
|
|
<p>Many people have reported bugs, made useful suggestions and helped |
4966 |
|
|
with testing; see the ChangeLog and the mail lists.</p> |
4967 |
|
|
<p>Your name could appear here in the next version!</p> |
4968 |
|
|
<p> |
4969 |
|
|
<a href="#__index__"><small>Back to Top</small></a> |
4970 |
|
|
</p> |
4971 |
|
|
<hr /> |
4972 |
|
|
<h1><a name="license">License</a></h1> |
4973 |
|
|
<p>This program is free software; you can redistribute it and/or modify it |
4974 |
|
|
under the terms of the GNU General Public License as published by the |
4975 |
|
|
Free Software Foundation; either version 2 of the License, or (at your |
4976 |
|
|
option) any later version.</p> |
4977 |
|
|
<p>This program is distributed in the hope that it will be useful, |
4978 |
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
4979 |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4980 |
|
|
General Public License for more details.</p> |
4981 |
|
|
<p>You should have received a copy of the GNU General Public License in the |
4982 |
|
|
LICENSE file along with this program; if not, write to the Free Software |
4983 |
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</p> |
4984 |
|
|
<p><a href="#__index__"><small>Back to Top</small></a></p> |
4985 |
|
|
<table border="0" width="100%" cellspacing="0" cellpadding="3"> |
4986 |
|
|
<tr><td class="block" style="background-color: #cccccc" valign="middle"> |
4987 |
|
|
<big><strong><span class="block"> BackupPC</span></strong></big> |
4988 |
|
|
</td></tr> |
4989 |
|
|
</table> |
4990 |
|
|
|
4991 |
|
|
</body> |
4992 |
|
|
|
4993 |
|
|
</html> |