new fortean
[feisty_meow.git] / scripts / archival / snarf_linux_config.pl
1 #!/usr/bin/perl
2
3 ##############
4 #  Name   : snarf_linux_config
5 #  Author : Chris Koeritz
6 #  Rights : Copyright (C) 1996-$now by Author
7 #  Purpose:
8 #    Backs up the useful linux config files and names the file after the
9 #  host it's run on.
10 ##############
11 #  This program is free software; you can redistribute it and/or modify it
12 #  under the terms of the GNU General Public License as published by the Free
13 #  Software Foundation; either version 2 of the License or (at your option)
14 #  any later version.  See: "http://www.gruntose.com/Info/GNU/GPL.html" for a
15 #  version of the License.  Please send any updates to "fred@gruntose.com".
16 ##############
17
18 require "shared_snarfer.pl";
19
20 use Env qw(HOME);
21
22 &initialize_snarfer;
23
24 # get the number we use and increment it for the next use.
25 local($number) = &retrieve_number("aa_backup");
26
27 # variables used throughout.
28 local($snarf_file_base) = snarf_prefix("config-linux");
29 local($snarf_file) = &snarf_name($snarf_file_base, $number);
30
31 # store the current archive number in the file for retrieval on the
32 # other side.
33 &backup_number("aa_backup", $snarf_file_base, $number);
34
35 # write a little file showing the disk status.
36 local($infofile) = $HOME . "/disk_info.txt";
37 unlink $infofile;
38 open(INF, ">>" . $infofile);
39 print INF "Current mount configuration:\n";
40 print INF "\n";
41 close(INF);
42 system("mount >>$infofile");
43 open(INF, ">>" . $infofile);
44 print INF "\n";
45 print INF "\n";
46 print INF "Current disk configuration:\n";
47 print INF "\n";
48 close(INF);
49 system("fdisk -l >>$HOME/disk_info.txt");
50 &backup_files($snarf_file_base, $number, $HOME, ".", ("disk_info.txt"));
51 unlink $infofile;
52
53 # backup the dpkg info.
54 &backup_files($snarf_file_base, $number, "/", "var/lib/dpkg", ("status*"));
55
56 # backup the crucial hierarchies in /var...
57 #gone: &backup_hierarchy($snarf_file_base, $number, "/", "var/named");
58 #gone: &backup_hierarchy($snarf_file_base, $number, "/", "var/lib/named/master");
59
60 ###not good: &backup_hierarchy($snarf_file_base, $number, "/", "var/lib/mysql");
61 ###the mysql snarf is not necessarily usable, since we really should be
62 ###backing up the databases by another means than this.
63
64 &backup_hierarchy($snarf_file_base, $number, "/", "var/lib/webalizer");
65
66 # snag the grub bootloader files.
67 &backup_hierarchy($snarf_file_base, $number, "/", "boot/grub");
68
69 # now get the entire /etc hierarchy...
70 &backup_hierarchy($snarf_file_base, $number, "/", "etc");
71
72 # suck in the current state for the resolver.
73 &backup_hierarchy($snarf_file_base, $number, "/", "run/resolvconf");
74
75 # clean out extra files.
76 &remove_from_backup($snarf_file_base, $number, "etc/cups/ppds.dat*");
77 &remove_from_backup($snarf_file_base, $number, "etc/httpd/conf/ssl.crt/ca-bundle.crt");
78 &remove_from_backup($snarf_file_base, $number, "etc/locale");
79 &remove_from_backup($snarf_file_base, $number, "etc/alternatives");
80 &remove_from_backup($snarf_file_base, $number, "etc/opt/kde3/share/services/ksycoca");
81 &remove_from_backup($snarf_file_base, $number, "etc/preload.d");
82 &remove_from_backup($snarf_file_base, $number, "etc/rmt");
83 &remove_from_backup($snarf_file_base, $number, "etc/termcap");
84 &remove_from_backup($snarf_file_base, $number, "etc/X11/X");
85 &remove_from_backup($snarf_file_base, $number, "etc/X11/xkb");
86 &remove_from_backup($snarf_file_base, $number, "*.bak");
87 &remove_from_backup($snarf_file_base, $number, "*.cache");
88 &remove_from_backup($snarf_file_base, $number, "*.crt");
89 &remove_from_backup($snarf_file_base, $number, "*.old");
90 &remove_from_backup($snarf_file_base, $number, "*.schemas");
91 &remove_from_backup($snarf_file_base, $number, "*.so");
92 &remove_from_backup($snarf_file_base, $number, "*.xml");
93
94 # now rename the file so only the unpacker can access it.
95 &rename_archive($snarf_file);
96
97 exit 0;
98