1 |
#!/bin/bash |
2 |
|
3 |
cd /root |
4 |
# list of included files to the backup |
5 |
# note we are not including /home/e-smith/{files,shares} and /home/e-smith/db/mysql*/{daily,hourly} |
6 |
# you are responsible to backup and restore them separatly |
7 |
cat <<'EOF' > dir.list |
8 |
/etc/e-smith/templates-custom |
9 |
/etc/e-smith/templates-user-custom |
10 |
/etc/group |
11 |
/etc/gshadow |
12 |
/etc/passwd |
13 |
/etc/samba/secrets.tdb |
14 |
/etc/samba/smbpasswd |
15 |
/etc/shadow |
16 |
/etc/ssh |
17 |
/etc/sudoers |
18 |
/root |
19 |
/home/e-smith/Maildir |
20 |
/home/e-smith/home |
21 |
/home/e-smith/ssl.crt |
22 |
/home/e-smith/ssl.key |
23 |
/home/e-smith/dkim_keys |
24 |
/home/e-smith/db |
25 |
/var/lib/dhcpd/dhcpd.leases |
26 |
/var/log/qpsmtpd |
27 |
/var/log/sqpsmtpd |
28 |
/var/log/qmail |
29 |
/var/log/httpd/ |
30 |
/var/log/dovecot/ |
31 |
/var/log/squid/ |
32 |
/var/log/iptables/ |
33 |
/var/spool/mail/ |
34 |
/var/spool/spamd/ |
35 |
/var/spool/cron/ |
36 |
EOF |
37 |
|
38 |
[ -e /etc/smbpasswd ] && cat <<'EOF' >> dir.list |
39 |
/etc/smbpasswd |
40 |
EOF |
41 |
|
42 |
[ -e /var/log/samba/samba_audit ] && cat <<'EOF' >> dir.list |
43 |
/var/log/samba/samba_audit |
44 |
EOF |
45 |
|
46 |
[ -e /etc/samba/schannel_store.tdb ] && cat <<'EOF' >> dir.list |
47 |
/etc/samba/schannel_store.tdb |
48 |
EOF |
49 |
|
50 |
[ -e /var/lib/samba/group_mapping.tdb ] && cat <<'EOF' >> dir.list |
51 |
/var/lib/samba/group_mapping.tdb |
52 |
EOF |
53 |
|
54 |
[ -e /var/lib/samba/account_policy.tdb ] && cat <<'EOF' >> dir.list |
55 |
/var/lib/samba/account_policy.tdb |
56 |
EOF |
57 |
|
58 |
[ -e /var/log/samba/samba_audit ] && cat <<'EOF' >> dir.list |
59 |
/var/log/samba/samba_audit |
60 |
EOF |
61 |
|
62 |
[ -e /var/service/qpsmtpd/config/dkimkeys/ ] && cat <<'EOF' >> dir.list |
63 |
/var/service/qpsmtpd/config/dkimkeys/ |
64 |
EOF |
65 |
|
66 |
## add here inclusion from db key |
67 |
|
68 |
## exclude files |
69 |
cat <<EOF >exclude.list |
70 |
/home/e-smith/db/mysql/daily |
71 |
/home/e-smith/db/mysql/hourly |
72 |
/home/e-smith/db/mysql55/daily |
73 |
/home/e-smith/db/mysql55/hourly |
74 |
/home/e-smith/db/mysql57/daily |
75 |
/home/e-smith/db/mysql57/hourly |
76 |
/home/e-smith/files |
77 |
/home/e-smith/shares |
78 |
/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule80PHP |
79 |
/etc/e-smith/templates-custom/etc/hosts.allow/sshd |
80 |
/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/35SSL00Listen443 |
81 |
/etc/e-smith/templates-custom/etc/dhcpd.conf/25DomainNameServers |
82 |
/etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeDefault |
83 |
/etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeMax |
84 |
/etc/e-smith/templates-custom/etc/dhcpd.conf/25Routers |
85 |
EOF |
86 |
|
87 |
## add here exclusion from db key |
88 |
|
89 |
# search for local script added |
90 |
find /usr/local/bin/ -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
91 |
# search for local dir script added |
92 |
find /usr/local/ -maxdepth 1 -type d | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
93 |
# search for cron files not owned by a rpm |
94 |
find /etc/cron.* -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
95 |
# search for udev rules not owned by a rpm ! oucl add an option there in case you change of hardware |
96 |
find /etc/udev/rules.d/ -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
97 |
# search for spamassassin user created config |
98 |
find /etc/mail/spamassassin -maxdepth 1 -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
99 |
|
100 |
################## |
101 |
# |
102 |
# here starts the magic |
103 |
# we backup each known corpm -q smeserver-dovecot ntribs folder |
104 |
# |
105 |
################## |
106 |
#smeserver-awstats.noarch |
107 |
# data will be in /home/e-smith/files/users/admin |
108 |
# we only backup the config files |
109 |
rpm -q smeserver-awstats >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
110 |
/etc/e-smith/web/panels/manager/cgi-bin/.awstats/ |
111 |
EOF |
112 |
# see with Daniel if they have a specific config |
113 |
#rpm -q awstats >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
114 |
#/var/lib/awstats |
115 |
#EOF |
116 |
#for those we assume you handle yourself the backup or the pools in /var/lib/BackupPC |
117 |
rpm -q smeserver-BackupPC >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
118 |
/etc/BackupPC |
119 |
EOF |
120 |
rpm -q smeserver-BackupPC4 >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
121 |
/etc/BackupPC |
122 |
EOF |
123 |
rpm -q smeserver-bandwidthd >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
124 |
/var/www/bandwidthd/ |
125 |
EOF |
126 |
#smeserver-clamav-unofficial-sigs and clamav-unofficial-sigs |
127 |
rpm -q smeserver-clamav-unofficial-sigs >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
128 |
/var/lib/clamav-unofficial-sigs/ |
129 |
EOF |
130 |
#smeserver-dansguardian smeserver-dansguardian-panel |
131 |
rpm -q smeserver-dansguardian >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
132 |
/etc/dansguardian/ |
133 |
EOF |
134 |
#smeserver-denyhosts |
135 |
rpm -q smeserver-denyhosts >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
136 |
/var/lib/denyhosts/ |
137 |
/etc/hosts.deny_ssh |
138 |
/etc/hosts.deny_ssh.purge.bak |
139 |
EOF |
140 |
rpm -q smeserver-dl >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
141 |
/var/lib/dl/ |
142 |
EOF |
143 |
rpm -q dokuwiki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
144 |
/etc/dokuwiki/acl.auth.php |
145 |
/etc/dokuwiki/acronyms.conf |
146 |
/etc/dokuwiki/entities.conf |
147 |
/etc/dokuwiki/interwiki.conf |
148 |
/etc/dokuwiki/local.php |
149 |
/etc/dokuwiki/plugins.local.php |
150 |
/etc/dokuwiki/scheme.conf |
151 |
/var/lib/dokuwiki/data/attic |
152 |
/var/lib/dokuwiki/data/index |
153 |
/var/lib/dokuwiki/data/media |
154 |
/var/lib/dokuwiki/data/media_attic |
155 |
/var/lib/dokuwiki/data/media_meta |
156 |
/var/lib/dokuwiki/data/meta |
157 |
/var/lib/dokuwiki/data/pages |
158 |
EOF |
159 |
rpm -q dokuwiki >/dev/null 2>&1 && for D in /usr/share/dokuwiki/lib/plugins/*;do |
160 |
rpm -qf $D >/dev/null 2>&1 || echo $D >> dir.list |
161 |
done |
162 |
|
163 |
|
164 |
#rpm -q smeserver-dovecot >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
165 |
[ -e /etc/dovecot/sharemailbox ] && cat <<'EOF' >> dir.list |
166 |
/etc/dovecot/sharemailbox/ |
167 |
EOF |
168 |
|
169 |
#smeserver-durep |
170 |
rpm -q smeserver-durep >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
171 |
/var/lib/durep |
172 |
EOF |
173 |
#smeserver-ezmlm-web |
174 |
rpm -q smeserver-ezmlm-web >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
175 |
/home/e-smith/files/ezmlm |
176 |
EOF |
177 |
[ -e /var/lib/phone ] && cat <<'EOF' >> dir.list |
178 |
/var/lib/phone |
179 |
EOF |
180 |
rpm -q smeserver-freepbx >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
181 |
/opt/freepbx |
182 |
/var/lib/asterisk/ |
183 |
/etc/asterisk |
184 |
/var/spool/asterisk/ |
185 |
/var/log/asterisk |
186 |
/usr/local/sbin/amportal |
187 |
/usr/local/sbin/fwconsole |
188 |
/usr/sbin/amportal |
189 |
/usr/sbin/fwconsole |
190 |
EOF |
191 |
# smeserver-fail2ban |
192 |
if [ -d /etc/fail2ban/action.d ]; then |
193 |
for F in $(ls /etc/fail2ban/action.d/);do |
194 |
rpm -qf /etc/fail2ban/action.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/action.d/$F >> dir.list |
195 |
done |
196 |
fi |
197 |
if [ -d /etc/fail2ban/fail2ban.d ]; then |
198 |
for F in $(ls /etc/fail2ban/fail2ban.d/);do |
199 |
rpm -qf /etc/fail2ban/fail2ban.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/fail2ban.d/$F >> dir.list |
200 |
done |
201 |
fi |
202 |
if [ -d /etc/fail2ban/filter.d ]; then |
203 |
for F in $(ls /etc/fail2ban/filter.d/);do |
204 |
rpm -qf /etc/fail2ban/filter.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/filter.d/$F >> dir.list |
205 |
done |
206 |
fi |
207 |
if [ -d /etc/fail2ban/jail.d ]; then |
208 |
for F in $(/etc/fail2ban/jail.d/);do |
209 |
rpm -qf /etc/fail2ban/jail.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/jail.d/$F >> dir.list |
210 |
done |
211 |
fi |
212 |
rpm -q smeserver-grr >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
213 |
/usr/share/grr/images/ |
214 |
EOF |
215 |
rpm -q ipasserelle-im >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
216 |
/var/lib/ejabberd/ |
217 |
/var/log/ejabberd.run |
218 |
EOF |
219 |
#smeserver-isoqlog |
220 |
rpm -q smeserver-isoqlog >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
221 |
/var/lib/qmailtools/isoqlog/htdocs/ |
222 |
EOF |
223 |
rpm -q smeserver-jappix >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
224 |
/var/lib/jappix/ |
225 |
/var/log/jappix |
226 |
EOF |
227 |
rpm -q smeserver-lemonldap-ng >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
228 |
/var/lib/lemonldap-ng/conf |
229 |
/var/lib/lemonldap-ng/notifications |
230 |
EOF |
231 |
#smeserver-letsencrypt |
232 |
#rpm -q smeserver-letsencrypt >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
233 |
[ -d /etc/letsencrypt.sh/ ] && cat <<'EOF' >> dir.list |
234 |
/etc/letsencrypt.sh/ |
235 |
EOF |
236 |
[ -d /etc/dehydrated/ ] && cat <<'EOF' >> dir.list |
237 |
/etc/dehydrated/ |
238 |
EOF |
239 |
|
240 |
rpm -q smeserver-limesurvey >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
241 |
/var/lib/limesurvey/uploads |
242 |
EOF |
243 |
rpm -q ipasserelle-listes >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
244 |
/var/lib/mailman/ |
245 |
/usr/lib/mailman/aliases/ |
246 |
EOF |
247 |
if [ -d /usr/share/mozilla-mcd/ ]; then |
248 |
for F in /usr/share/mozilla-mcd/*;do |
249 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
250 |
done |
251 |
fi |
252 |
rpm -q smeserver-madsonic >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
253 |
/var/madsonic/db/ |
254 |
/var/madsonic/madsonic.properties |
255 |
/var/madsonic/madsonic.log |
256 |
/var/madsonic/madsonic_sh.log |
257 |
EOF |
258 |
rpm -q smeserver-mailman >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
259 |
/var/lib/mailman/ |
260 |
/usr/lib/mailman/aliases/ |
261 |
EOF |
262 |
rpm -q smeserver-nextcloud >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
263 |
/usr/share/nextcloud/ |
264 |
EOF |
265 |
rpm -q smeserver-ntop >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
266 |
/var/lib/ntop/ |
267 |
EOF |
268 |
rpm -q phpki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
269 |
/opt/phpki/phpki-store/ |
270 |
/opt/phpki/html/config.php |
271 |
EOF |
272 |
rpm -q smeserver-openvpn-bridge >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
273 |
/etc/openvpn/bridge/priv |
274 |
/etc/openvpn/bridge/pub |
275 |
/var/log/openvpn-bridge |
276 |
EOF |
277 |
rpm -q smeserver-openvpn-s2s >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
278 |
/etc/openvpn/s2s/priv |
279 |
/etc/openvpn/s2s/pub |
280 |
/var/log/openvpn-s2s |
281 |
EOF |
282 |
rpm -q smeserver-openvpn-routed >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
283 |
/etc/openvpn/routed/priv |
284 |
/etc/openvpn/routed/pub |
285 |
/var/log/openvpn-routed |
286 |
EOF |
287 |
rpm -q smeserver-phpki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
288 |
/opt/phpki/ |
289 |
EOF |
290 |
rpm -q smeserver-phpki-ng >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
291 |
/opt/phpki/ |
292 |
EOF |
293 |
rpm -q pydio >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
294 |
/var/lib/pydio/files |
295 |
/var/lib/pydio/personal |
296 |
/var/lib/pydio/public |
297 |
/var/log/pydio |
298 |
EOF |
299 |
|
300 |
rpm -q smeserver-sarg >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
301 |
/var/www/sarg/ |
302 |
EOF |
303 |
#smeserver-sme8admin |
304 |
rpm -q smeserver-sme8admin >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
305 |
/var/lib/sme8admin/ |
306 |
EOF |
307 |
#smeserver-sme9admin |
308 |
rpm -q smeserver-sme9admin >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
309 |
/var/lib/sme9admin/ |
310 |
EOF |
311 |
#smeserver-sysmon |
312 |
rpm -q smeserver-sysmon >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
313 |
/var/lib/rrd/ |
314 |
EOF |
315 |
rpm -q smeserver-tftp-server >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
316 |
/tftpboot |
317 |
EOF |
318 |
rpm -q smeserver-transmission >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
319 |
/var/lib/transmission/Downloads |
320 |
EOF |
321 |
rpm -q smeserver-unifi >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
322 |
/opt/UniFi |
323 |
/opt/UniFi_bak |
324 |
EOF |
325 |
rpm -q smeserver-xinetd >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
326 |
/etc/rsyncd.conf |
327 |
/etc/xinetd.d/rsync |
328 |
/etc/logrotate.d/rsyncd |
329 |
EOF |
330 |
rpm -q smeserver-xt_geoip >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
331 |
/usr/share/xt_geoip/BE/ |
332 |
/usr/share/xt_geoip/LE/ |
333 |
/var/lib/xt_geoip/ |
334 |
EOF |
335 |
rpm -q smeserver-webfilter >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
336 |
/var/squidGuard/blacklists/ |
337 |
EOF |
338 |
#smeserver-webshares |
339 |
rpm -q smeserver-webshares >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
340 |
/opt/webshare |
341 |
EOF |
342 |
# smeserver-zabbix-server smeserver-zabbix-agent smeserver-zabbix-proxy |
343 |
if [ -d /etc/zabbix ]; then |
344 |
for F in /etc/zabbix/*;do |
345 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
346 |
done |
347 |
fi |
348 |
if [ -d /etc/zabbix/zabbix_agentd.conf.d ]; then |
349 |
for F in /etc/zabbix/zabbix_agentd.conf.d/*;do |
350 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
351 |
done |
352 |
fi |
353 |
if [ -d /var/lib/zabbix/bin ]; then |
354 |
for F in /var/lib/zabbix/bin/*;do |
355 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
356 |
done |
357 |
fi |
358 |
rpm -q smeserver-zoneminder >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
359 |
/var/lib/zoneminder |
360 |
/var/log/zoneminder |
361 |
/var/spool/zoneminder-upload |
362 |
EOF |
363 |
|
364 |
#contribs we are aware of, but NOTHING TO DO |
365 |
#smeserver-email-management |
366 |
#smeserver-geoip |
367 |
#smeserver-kronolith |
368 |
#smeserver-lazy_admin_tools |
369 |
#smeserver-learn |
370 |
#smeserver-mailsorting |
371 |
#smeserver-mailstats |
372 |
#smeserver-mod_dav |
373 |
#smeserver-nag |
374 |
#smeserver-php-fpm |
375 |
#smeserver-php-scl |
376 |
#smeserver-phpldapadmin. |
377 |
#smeserver-phpsysinfo |
378 |
#smeserver-qmHandle |
379 |
#smeserver-remoteuseraccess |
380 |
#smeserver-userpanel |
381 |
#smeserver-userpanels |
382 |
#smeserver-vacation |
383 |
#smeserver-wbl |
384 |
#smeserver-webapps-common |
385 |
#smeserver-webhosting |
386 |
#smeserver-bridge-interface |
387 |
#smeserver-ddclient |
388 |
#smeserver-mediatomb |
389 |
#smeserver-sane |
390 |
#smeserver-usbdisksmanager |
391 |
|
392 |
#we might get issue there with .rpmnew files |
393 |
# but we need to get the same version as in db |
394 |
|
395 |
# for F in /usr/share/nextcloud/apps/*;do |
396 |
# rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
397 |
# done |
398 |
|
399 |
|
400 |
|
401 |
## add here selection for test or live and stop services |
402 |
/sbin/e-smith/audittools/newrpms > /root/newrpms |
403 |
cat /root/newrpms|grep @ |cut -d' ' -f1|sed 's/.noarch//g'| sed 's/.x86_64//g'|sed 's/.i386//g'|sort|grep smeserver >/root/contribs |
404 |
cat /root/newrpms|grep @ |cut -d' ' -f1|sed 's/.noarch//g'| sed 's/.x86_64//g'|sed 's/.i386//g'|sort >/root/rpmsextra |
405 |
#ADD here |
406 |
mkdir -p /root/migratehelper/{yumDownload,lists} |
407 |
# filter out in file per repo |
408 |
# run trhough all created files for /root/migratehelper/lists/RpmsPerRepos_*.list |
409 |
# and yum reinstall --downloadonly --downloaddir=/root/migratehelper/yumDownload # mayded followed by yum update --downloadonly --downloaddir=/root/migratehelper/yumDownload |
410 |
# or yum install --downloadonly --downloaddir=/root/migratehelper/yumDownload --installroot=/root/migratehelper/ smeserver-yum --enablerepo=smeos,base --releasever=6 |
411 |
# or after requiring yum-utils (bug it seems to only download to current dir whatever you do: |
412 |
# cd /root/migratehelper/yumDownload; yumdownloader install --downloadonly --downloaddir=. smeserver-freepbx -y --diablerepo=* --enablerepo=$repo --releasever=6 |
413 |
|
414 |
#### stop services so no changes occurs |
415 |
if [ -e /usr/lib/systemd/system/qmail.service ]; then |
416 |
/usr/bin/systemctl stop qmail.service qpsmtpd.service sqpsmtpd.service ejabberd.service smb.service smbd.service nmbd.service httpd-e-smith.service |
417 |
else |
418 |
sv d /service/qmail |
419 |
sv d /service/qpsmtpd |
420 |
sv d /service/sqpsmtpd |
421 |
[ -e /service/ejabberd ] && sv d /service/ejabberd |
422 |
sv d /service/smbd |
423 |
sv d /service/httpd-e-smith |
424 |
fi |
425 |
#### prebackup |
426 |
signal-event pre-backup |
427 |
tar cvzf /mnt/backup/smeserver.tgz -T dir.list --exclude-from exclude.list --xattrs |