1 |
#!/bin/bash |
#!/bin/bash |
2 |
|
|
3 |
cd /root |
echo "#*************************************************************************# " |
4 |
# list of included files to the backup |
echo "# Note we are NOT including >>" |
5 |
# note we are not including /home/e-smith/{files,shares} and /home/e-smith/db/mysql*/{daily,hourly} |
echo "# /home/e-smith/{files,shares} " |
6 |
# you are responsible to backup and restore them separatly |
echo "# /home/e-smith/db/mysql*/{daily,hourly}" |
7 |
cat <<'EOF' > dir.list |
echo "# " |
8 |
|
echo "# You are responsible for backing up and restoring them separately" |
9 |
|
echo "#*************************************************************************# " |
10 |
|
|
11 |
|
TEST="n" # Set Test mode default |
12 |
|
VERSION=1 # Just because |
13 |
|
NOCHECK="0" |
14 |
|
|
15 |
|
# =========================================================================== |
16 |
|
|
17 |
|
function usage() { # Function: Print a help message. |
18 |
|
echo "Usage: $0 [ -t Enable Test mode ] [ -n no-check ] [ -v Version ] [ -h Help ]" 1>&2 |
19 |
|
} |
20 |
|
|
21 |
|
function exit_abnormal() { # Function: Exit with error. |
22 |
|
usage |
23 |
|
exit 1 |
24 |
|
} |
25 |
|
|
26 |
|
function prompt_confirm() { |
27 |
|
while true; do |
28 |
|
read -r -n 1 -p "${1:-Continue?} [y/n]: " REPLY |
29 |
|
case $REPLY in |
30 |
|
[yY]) |
31 |
|
echo |
32 |
|
return 0 |
33 |
|
;; |
34 |
|
[nN]) |
35 |
|
echo |
36 |
|
return 1 |
37 |
|
;; |
38 |
|
*) printf " \033[31m %s \n\033[0m" "invalid input" ;; |
39 |
|
esac |
40 |
|
done |
41 |
|
} |
42 |
|
|
43 |
|
while getopts ":vthn" options; do # Loop: Get the next option; |
44 |
|
# use silent error checking; |
45 |
|
# options have no arguments |
46 |
|
case "${options}" in # |
47 |
|
v) # If the option is n, |
48 |
|
echo "Version $VERSION" |
49 |
|
exit_abnormal |
50 |
|
;; |
51 |
|
t) # If the option is t, |
52 |
|
TEST="y" # Set $TEST |
53 |
|
;; |
54 |
|
n) |
55 |
|
echo "Checking" |
56 |
|
NOCHECK="1" |
57 |
|
;; |
58 |
|
h) |
59 |
|
exit_abnormal |
60 |
|
;; |
61 |
|
|
62 |
|
\?) # If unknown (any other) option: |
63 |
|
echo "invalid_option" |
64 |
|
exit_abnormal # Exit abnormally. |
65 |
|
;; |
66 |
|
|
67 |
|
*) # If unknown (any other) option: |
68 |
|
echo "unknown_option" |
69 |
|
exit_abnormal # Exit abnormally. |
70 |
|
;; |
71 |
|
|
72 |
|
# Me hacking about |
73 |
|
# :) # If expected argument omitted: |
74 |
|
# echo "Error: -${OPTARG} requires an argument." |
75 |
|
# exit_abnormal # Exit abnormally. |
76 |
|
# ;; |
77 |
|
|
78 |
|
esac |
79 |
|
|
80 |
|
done |
81 |
|
|
82 |
|
if [ "$NOCHECK" = "0" ]; then |
83 |
|
prompt_confirm "Can we start?" || exit 0 |
84 |
|
fi |
85 |
|
|
86 |
|
# Let's go. |
87 |
|
echo "Starting - please be patient" |
88 |
|
|
89 |
|
if [ "$TEST" = "y" ]; then |
90 |
|
echo "We are in TEST mode. No backup will be created or services affected" |
91 |
|
else |
92 |
|
echo "We are in REAL mode." |
93 |
|
echo "This creates a backup file for restore" |
94 |
|
echo "The file includes and excludes various items" |
95 |
|
echo "All files, mails and MySQL DBS are not included, except dumps in /home/e-smith/db/mysql*/" |
96 |
|
echo "if you took the time to execute signal-event pre-backup, before" |
97 |
|
echo "We will create the backup file like this" |
98 |
|
echo "tar cvzf /mnt/backup/smeserver.tgz -T dir.list --exclude-from exclude.list" |
99 |
|
echo "" |
100 |
|
echo "After the script has finished all mail/file/web services will remain stopped" |
101 |
|
echo "This is to ensure your backup is up to date untill you transfer it to new server." |
102 |
|
echo "Copy the backup to your new server, and manually copy over the remaining files" |
103 |
|
fi |
104 |
|
|
105 |
|
# Added failure check |
106 |
|
# https://github.com/koalaman/shellcheck/wiki/SC2164 |
107 |
|
|
108 |
|
cd /root || exit_abnormal |
109 |
|
|
110 |
|
cat <<'EOF' >dir.list |
111 |
/etc/e-smith/templates-custom |
/etc/e-smith/templates-custom |
112 |
/etc/e-smith/templates-user-custom |
/etc/e-smith/templates-user-custom |
113 |
/etc/group |
/etc/group |
116 |
/etc/samba/secrets.tdb |
/etc/samba/secrets.tdb |
117 |
/etc/samba/smbpasswd |
/etc/samba/smbpasswd |
118 |
/etc/shadow |
/etc/shadow |
|
/etc/smbpasswd |
|
119 |
/etc/ssh |
/etc/ssh |
120 |
/etc/sudoers |
/etc/sudoers |
121 |
/root |
/root |
122 |
/home/e-smith/Maildir |
/home/e-smith/Maildir |
|
/home/e-smith/home |
|
123 |
/home/e-smith/ssl.crt |
/home/e-smith/ssl.crt |
124 |
/home/e-smith/ssl.key |
/home/e-smith/ssl.key |
125 |
/home/e-smith/dkim_keys |
/home/e-smith/dkim_keys |
134 |
/var/log/iptables/ |
/var/log/iptables/ |
135 |
/var/spool/mail/ |
/var/spool/mail/ |
136 |
/var/spool/spamd/ |
/var/spool/spamd/ |
137 |
|
/var/spool/cron/ |
138 |
EOF |
EOF |
139 |
|
|
140 |
[ -e /var/log/samba/samba_audit ] && cat <<'EOF' >> dir.list |
[ -e /etc/smbpasswd ] && cat <<'EOF' >>dir.list |
141 |
|
/etc/smbpasswd |
142 |
|
EOF |
143 |
|
|
144 |
|
[ -e /var/log/samba/samba_audit ] && cat <<'EOF' >>dir.list |
145 |
/var/log/samba/samba_audit |
/var/log/samba/samba_audit |
146 |
EOF |
EOF |
147 |
|
|
148 |
[ -e /var/service/qpsmtpd/config/dkimkeys/ ] && cat <<'EOF' >> dir.list |
[ -e /etc/samba/schannel_store.tdb ] && cat <<'EOF' >>dir.list |
149 |
|
/etc/samba/schannel_store.tdb |
150 |
|
EOF |
151 |
|
|
152 |
|
[ -e /var/lib/samba/group_mapping.tdb ] && cat <<'EOF' >>dir.list |
153 |
|
/var/lib/samba/group_mapping.tdb |
154 |
|
EOF |
155 |
|
|
156 |
|
[ -e /var/lib/samba/account_policy.tdb ] && cat <<'EOF' >>dir.list |
157 |
|
/var/lib/samba/account_policy.tdb |
158 |
|
EOF |
159 |
|
|
160 |
|
[ -e /var/log/samba/samba_audit ] && cat <<'EOF' >>dir.list |
161 |
|
/var/log/samba/samba_audit |
162 |
|
EOF |
163 |
|
|
164 |
|
[ -e /var/service/qpsmtpd/config/dkimkeys/ ] && cat <<'EOF' >>dir.list |
165 |
/var/service/qpsmtpd/config/dkimkeys/ |
/var/service/qpsmtpd/config/dkimkeys/ |
166 |
EOF |
EOF |
167 |
|
|
187 |
EOF |
EOF |
188 |
|
|
189 |
## add here exclusion from db key |
## add here exclusion from db key |
190 |
|
# Added -print0 here - also needs -0 on xargs |
191 |
# search for local script added |
# https://github.com/koalaman/shellcheck/wiki/SC2038 |
192 |
find /usr/local/bin/ -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
# search for local script added |
193 |
|
find /usr/local/bin/ -type f -print0 | xargs -0 -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
194 |
# search for local dir script added |
# search for local dir script added |
195 |
find /usr/local/ -maxdepth 1 -type d | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
find /usr/local/ -maxdepth 1 -type d -print0 | xargs -0 -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
196 |
# search for cron files not owned by a rpm |
# search for cron files not owned by a rpm |
197 |
find /etc/cron.* -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
find /etc/cron.* -type f -print0 | xargs -0 -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
198 |
# search for udev rules not owned by a rpm ! oucl add an option there in case you change of hardware |
# search for udev rules not owned by a rpm ! could add an option there in case you change of hardware |
199 |
find /etc/udev/rules.d/ -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
# removed as migration from sme9 to sme10 will change the names, and this will make it worst |
200 |
|
#find /etc/udev/rules.d/ -type f -print0 | xargs -0 -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
201 |
# search for spamassassin user created config |
# search for spamassassin user created config |
202 |
find /etc/mail/spamassassin -maxdepth 1 -type f | xargs -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
find /etc/mail/spamassassin -maxdepth 1 -type f -print0 | xargs -0 -I % sh -c "rpm -qf % 2>&1 > /dev/null || echo % >> dir.list" |
203 |
|
|
204 |
################## |
################## |
205 |
# |
# |
206 |
# here starts the magic |
# here starts the magic |
207 |
# we backup each known corpm -q smeserver-dovecot ntribs folder |
# we backup each known contribs folder |
208 |
# |
# |
209 |
################## |
################## |
210 |
#smeserver-awstats.noarch |
#smeserver-awstats.noarch |
211 |
# data will be in /home/e-smith/files/users/admin |
# data will be in /home/e-smith/files/users/admin |
212 |
# we only backup the config files |
# we only backup the config files |
213 |
rpm -q smeserver-awstats >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-awstats >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
214 |
/etc/e-smith/web/panels/manager/cgi-bin/.awstats/ |
/etc/e-smith/web/panels/manager/cgi-bin/.awstats/ |
215 |
EOF |
EOF |
216 |
# see with Daniel if they have a specific config |
# see with Daniel if they have a specific config |
217 |
#rpm -q awstats >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
#rpm -q awstats >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
218 |
#/var/lib/awstats |
#/var/lib/awstats |
219 |
#EOF |
#EOF |
220 |
#for those we assume you handle yourself the backup or the pools in /var/lib/BackupPC |
#for those we assume you handle yourself the backup or the pools in /var/lib/BackupPC |
221 |
rpm -q smeserver-BackupPC >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-BackupPC >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
222 |
/etc/BackupPC |
/etc/BackupPC |
223 |
EOF |
EOF |
224 |
rpm -q smeserver-BackupPC4 >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-BackupPC4 >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
225 |
/etc/BackupPC |
/etc/BackupPC |
226 |
EOF |
EOF |
227 |
rpm -q smeserver-bandwidthd >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-bandwidthd >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
228 |
/var/www/bandwidthd/ |
/var/www/bandwidthd/ |
229 |
EOF |
EOF |
230 |
#smeserver-clamav-unofficial-sigs and clamav-unofficial-sigs |
#smeserver-clamav-unofficial-sigs and clamav-unofficial-sigs |
231 |
rpm -q smeserver-clamav-unofficial-sigs >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-clamav-unofficial-sigs >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
232 |
/var/lib/clamav-unofficial-sigs/ |
/var/lib/clamav-unofficial-sigs/ |
233 |
EOF |
EOF |
234 |
#smeserver-dansguardian smeserver-dansguardian-panel |
#smeserver-dansguardian smeserver-dansguardian-panel |
235 |
rpm -q smeserver-dansguardian >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-dansguardian >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
236 |
/etc/dansguardian/ |
/etc/dansguardian/ |
237 |
EOF |
EOF |
238 |
#smeserver-denyhosts |
#smeserver-denyhosts |
239 |
rpm -q smeserver-denyhosts >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-denyhosts >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
240 |
/var/lib/denyhosts/ |
/var/lib/denyhosts/ |
241 |
/etc/hosts.deny_ssh |
/etc/hosts.deny_ssh |
242 |
/etc/hosts.deny_ssh.purge.bak |
/etc/hosts.deny_ssh.purge.bak |
243 |
EOF |
EOF |
244 |
rpm -q smeserver-dl >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-dl >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
245 |
/var/lib/dl/ |
/var/lib/dl/ |
246 |
EOF |
EOF |
247 |
rpm -q dokuwiki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q dokuwiki >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
248 |
/etc/dokuwiki/acl.auth.php |
/etc/dokuwiki/acl.auth.php |
249 |
/etc/dokuwiki/acronyms.conf |
/etc/dokuwiki/acronyms.conf |
250 |
/etc/dokuwiki/entities.conf |
/etc/dokuwiki/entities.conf |
260 |
/var/lib/dokuwiki/data/meta |
/var/lib/dokuwiki/data/meta |
261 |
/var/lib/dokuwiki/data/pages |
/var/lib/dokuwiki/data/pages |
262 |
EOF |
EOF |
263 |
rpm -q dokuwiki >/dev/null 2>&1 && for D in /usr/share/dokuwiki/lib/plugins/*;do |
rpm -q dokuwiki >/dev/null 2>&1 && for D in /usr/share/dokuwiki/lib/plugins/*; do |
264 |
rpm -qf $D >/dev/null 2>&1 || echo $D >> dir.list |
rpm -qf "$D" >/dev/null 2>&1 || echo "$D" >>dir.list |
265 |
done |
done |
266 |
|
|
267 |
|
#rpm -q smeserver-dovecot >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
268 |
rpm -q smeserver-dovecot >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
[ -e /etc/dovecot/sharemailbox ] && cat <<'EOF' >>dir.list |
269 |
/etc/dovecot/sharemailbox/ |
/etc/dovecot/sharemailbox/ |
270 |
EOF |
EOF |
271 |
|
|
272 |
#smeserver-durep |
#smeserver-durep |
273 |
rpm -q smeserver-durep >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-durep >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
274 |
/var/lib/durep |
/var/lib/durep |
275 |
EOF |
EOF |
276 |
#smeserver-ezmlm-web |
#smeserver-ezmlm-web |
277 |
rpm -q smeserver-ezmlm-web >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-ezmlm-web >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
278 |
/home/e-smith/files/ezmlm |
/home/e-smith/files/ezmlm |
279 |
EOF |
EOF |
280 |
[ -e /var/lib/phone ] && cat <<'EOF' >> dir.list |
[ -e /var/lib/phone ] && cat <<'EOF' >>dir.list |
281 |
/var/lib/phone |
/var/lib/phone |
282 |
EOF |
EOF |
283 |
rpm -q smeserver-freepbx >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-freepbx >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
284 |
/opt/freepbx |
/opt/freepbx |
285 |
/var/lib/asterisk/ |
/var/lib/asterisk/ |
286 |
/etc/asterisk |
/etc/asterisk |
293 |
EOF |
EOF |
294 |
# smeserver-fail2ban |
# smeserver-fail2ban |
295 |
if [ -d /etc/fail2ban/action.d ]; then |
if [ -d /etc/fail2ban/action.d ]; then |
296 |
for F in /etc/fail2ban/action.d/*;do |
for F in $(ls /etc/fail2ban/action.d/);do |
297 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf /etc/fail2ban/action.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/action.d/$F >> dir.list |
298 |
done |
done |
299 |
fi |
fi |
300 |
if [ -d /etc/fail2ban/fail2ban.d ]; then |
if [ -d /etc/fail2ban/fail2ban.d ]; then |
301 |
for F in /etc/fail2ban/fail2ban.d/*;do |
for F in $(ls /etc/fail2ban/fail2ban.d/);do |
302 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf /etc/fail2ban/fail2ban.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/fail2ban.d/$F >> dir.list |
303 |
done |
done |
304 |
fi |
fi |
305 |
if [ -d /etc/fail2ban/filter.d ]; then |
if [ -d /etc/fail2ban/filter.d ]; then |
306 |
for F in /etc/fail2ban/filter.d/*;do |
for F in $(ls /etc/fail2ban/filter.d/);do |
307 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf /etc/fail2ban/filter.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/filter.d/$F >> dir.list |
308 |
done |
done |
309 |
fi |
fi |
310 |
if [ -d /etc/fail2ban/jail.d ]; then |
if [ -d /etc/fail2ban/jail.d ]; then |
311 |
for F in /etc/fail2ban/jail.d/*;do |
for F in $(ls /etc/fail2ban/jail.d/);do |
312 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf /etc/fail2ban/jail.d/$F >/dev/null 2>&1 || echo /etc/fail2ban/jail.d/$F >> dir.list |
313 |
done |
done |
314 |
fi |
fi |
315 |
rpm -q smeserver-grr >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-grr >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
316 |
/usr/share/grr/images/ |
/usr/share/grr/images/ |
317 |
EOF |
EOF |
318 |
rpm -q ipasserelle-im >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q ipasserelle-im >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
319 |
/var/lib/ejabberd/ |
/var/lib/ejabberd/ |
320 |
/var/log/ejabberd.run |
/var/log/ejabberd.run |
321 |
EOF |
EOF |
322 |
#smeserver-isoqlog |
#smeserver-isoqlog |
323 |
rpm -q smeserver-isoqlog >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-isoqlog >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
324 |
/var/lib/qmailtools/isoqlog/htdocs/ |
/var/lib/qmailtools/isoqlog/htdocs/ |
325 |
EOF |
EOF |
326 |
rpm -q smeserver-jappix >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-jappix >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
327 |
/var/lib/jappix/ |
/var/lib/jappix/ |
328 |
/var/log/jappix |
/var/log/jappix |
329 |
EOF |
EOF |
330 |
rpm -q smeserver-lemonldap-ng >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-lemonldap-ng >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
331 |
/var/lib/lemonldap-ng/conf |
/var/lib/lemonldap-ng/conf |
332 |
/var/lib/lemonldap-ng/notifications |
/var/lib/lemonldap-ng/notifications |
333 |
EOF |
EOF |
334 |
#smeserver-letsencrypt |
#smeserver-letsencrypt |
335 |
rpm -q smeserver-letsencrypt >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
#rpm -q smeserver-letsencrypt >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
336 |
|
[ -d /etc/letsencrypt.sh/ ] && cat <<'EOF' >>dir.list |
337 |
/etc/letsencrypt.sh/ |
/etc/letsencrypt.sh/ |
338 |
|
EOF |
339 |
|
[ -d /etc/dehydrated/ ] && cat <<'EOF' >>dir.list |
340 |
/etc/dehydrated/ |
/etc/dehydrated/ |
341 |
EOF |
EOF |
342 |
rpm -q smeserver-limesurvey >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
|
343 |
|
rpm -q smeserver-limesurvey >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
344 |
/var/lib/limesurvey/uploads |
/var/lib/limesurvey/uploads |
345 |
EOF |
EOF |
346 |
rpm -q ipasserelle-listes >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q ipasserelle-listes >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
347 |
/var/lib/mailman/ |
/var/lib/mailman/ |
348 |
/usr/lib/mailman/aliases/ |
/usr/lib/mailman/aliases/ |
349 |
EOF |
EOF |
350 |
if [ -d /usr/share/mozilla-mcd/ ]; then |
if [ -d /usr/share/mozilla-mcd/ ]; then |
351 |
for F in /usr/share/mozilla-mcd/*;do |
for F in /usr/share/mozilla-mcd/*; do |
352 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf "$F" >/dev/null 2>&1 || echo "$F" >>dir.list |
353 |
done |
done |
354 |
fi |
fi |
355 |
rpm -q smeserver-madsonic >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-madsonic >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
356 |
/var/madsonic/db/ |
/var/madsonic/db/ |
357 |
/var/madsonic/madsonic.properties |
/var/madsonic/madsonic.properties |
358 |
/var/madsonic/madsonic.log |
/var/madsonic/madsonic.log |
359 |
/var/madsonic/madsonic_sh.log |
/var/madsonic/madsonic_sh.log |
360 |
EOF |
EOF |
361 |
rpm -q smeserver-mailman >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-mailman >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
362 |
/var/lib/mailman/ |
/var/lib/mailman/ |
363 |
/usr/lib/mailman/aliases/ |
/usr/lib/mailman/aliases/ |
364 |
EOF |
EOF |
365 |
rpm -q smeserver-nextcloud >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-nextcloud >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
366 |
/usr/share/nextcloud/ |
/usr/share/nextcloud/ |
367 |
EOF |
EOF |
368 |
rpm -q smeserver-ntop >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-ntop >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
369 |
/var/lib/ntop/ |
/var/lib/ntop/ |
370 |
EOF |
EOF |
371 |
rpm -q phpki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q phpki >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
372 |
/opt/phpki/phpki-store/ |
/opt/phpki/phpki-store/ |
373 |
/opt/phpki/html/config.php |
/opt/phpki/html/config.php |
374 |
EOF |
EOF |
375 |
rpm -q smeserver-openvpn-bridge >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-openvpn-bridge >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
376 |
/etc/openvpn/bridge/priv |
/etc/openvpn/bridge/priv |
377 |
/etc/openvpn/bridge/pub |
/etc/openvpn/bridge/pub |
378 |
/var/log/openvpn-bridge |
/var/log/openvpn-bridge |
379 |
EOF |
EOF |
380 |
rpm -q smeserver-openvpn-s2s >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-openvpn-s2s >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
381 |
/etc/openvpn/s2s/priv |
/etc/openvpn/s2s/priv |
382 |
/etc/openvpn/s2s/pub |
/etc/openvpn/s2s/pub |
383 |
/var/log/openvpn-s2s |
/var/log/openvpn-s2s |
384 |
EOF |
EOF |
385 |
rpm -q smeserver-openvpn-routed >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-openvpn-routed >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
386 |
/etc/openvpn/routed/priv |
/etc/openvpn/routed/priv |
387 |
/etc/openvpn/routed/pub |
/etc/openvpn/routed/pub |
388 |
/var/log/openvpn-routed |
/var/log/openvpn-routed |
389 |
EOF |
EOF |
390 |
rpm -q smeserver-phpki >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-phpki >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
391 |
/opt/phpki/ |
/opt/phpki/ |
392 |
EOF |
EOF |
393 |
rpm -q smeserver-phpki-ng >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-phpki-ng >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
394 |
/opt/phpki/ |
/opt/phpki/ |
395 |
EOF |
EOF |
396 |
rpm -q pydio >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q pydio >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
397 |
/var/lib/pydio/files |
/var/lib/pydio/files |
398 |
/var/lib/pydio/personal |
/var/lib/pydio/personal |
399 |
/var/lib/pydio/public |
/var/lib/pydio/public |
400 |
/var/log/pydio |
/var/log/pydio |
401 |
EOF |
EOF |
402 |
|
|
403 |
rpm -q smeserver-sarg >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-sarg >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
404 |
/var/www/sarg/ |
/var/www/sarg/ |
405 |
EOF |
EOF |
406 |
#smeserver-sme8admin |
#smeserver-sme8admin |
407 |
rpm -q smeserver-sme8admin >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-sme8admin >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
408 |
/var/lib/sme8admin/ |
/var/lib/sme8admin/ |
409 |
EOF |
EOF |
410 |
#smeserver-sme9admin |
#smeserver-sme9admin |
411 |
rpm -q smeserver-sme9admin >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-sme9admin >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
412 |
/var/lib/sme9admin/ |
/var/lib/sme9admin/ |
413 |
EOF |
EOF |
414 |
|
rpm -q smeserver-smeadmin >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
415 |
|
/var/lib/smeadmin/ |
416 |
|
EOF |
417 |
|
#softethernet |
418 |
|
rpm -q softethervpn >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
419 |
|
/usr/vpnserver/vpn_server.config |
420 |
|
/usr/vpnserver/backup.vpn_server.config |
421 |
|
/usr/vpnserver/chain_certs |
422 |
|
/usr/vpnserver/packet_log |
423 |
|
/usr/vpnserver/security_log |
424 |
|
/usr/vpnserver/server_log |
425 |
|
EOF |
426 |
#smeserver-sysmon |
#smeserver-sysmon |
427 |
rpm -q smeserver-sysmon >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-sysmon >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
428 |
/var/lib/rrd/ |
/var/lib/rrd/ |
429 |
EOF |
EOF |
430 |
rpm -q smeserver-tftp-server >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-tftp-server >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
431 |
/tftpboot |
/tftpboot |
432 |
EOF |
EOF |
433 |
rpm -q smeserver-transmission >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-transmission >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
434 |
/var/lib/transmission/Downloads |
/var/lib/transmission/Downloads |
435 |
EOF |
EOF |
436 |
rpm -q smeserver-unifi >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-unifi >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
437 |
/opt/UniFi |
/opt/UniFi |
438 |
/opt/UniFi_bak |
/opt/UniFi_bak |
439 |
EOF |
EOF |
440 |
rpm -q smeserver-xinetd >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-xinetd >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
441 |
/etc/rsyncd.conf |
/etc/rsyncd.conf |
442 |
/etc/xinetd.d/rsync |
/etc/xinetd.d/rsync |
443 |
/etc/logrotate.d/rsyncd |
/etc/logrotate.d/rsyncd |
444 |
EOF |
EOF |
445 |
rpm -q smeserver-xt_geoip >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-xt_geoip >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
446 |
/usr/share/xt_geoip/BE/ |
/usr/share/xt_geoip/BE/ |
447 |
/usr/share/xt_geoip/LE/ |
/usr/share/xt_geoip/LE/ |
448 |
/var/lib/xt_geoip/ |
/var/lib/xt_geoip/ |
449 |
EOF |
EOF |
450 |
rpm -q smeserver-webfilter >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-webfilter >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
451 |
/var/squidGuard/blacklists/ |
/var/squidGuard/blacklists/ |
452 |
EOF |
EOF |
453 |
#smeserver-webshares |
#smeserver-webshare |
454 |
rpm -q smeserver-webshares >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-webshare >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
455 |
/opt/webshare |
/opt/webshare |
456 |
EOF |
EOF |
457 |
# smeserver-zabbix-server smeserver-zabbix-agent smeserver-zabbix-proxy |
# smeserver-zabbix-server smeserver-zabbix-agent smeserver-zabbix-proxy |
458 |
if [ -d /etc/zabbix ]; then |
if [ -d /etc/zabbix ]; then |
459 |
for F in /etc/zabbix/*;do |
for F in /etc/zabbix/*; do |
460 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf "$F" >/dev/null 2>&1 || echo "$F" >>dir.list |
461 |
done |
done |
462 |
fi |
fi |
463 |
if [ -d /etc/zabbix/zabbix_agentd.conf.d ]; then |
if [ -d /etc/zabbix/zabbix_agentd.conf.d ]; then |
464 |
for F in /etc/zabbix/zabbix_agentd.conf.d/*;do |
for F in /etc/zabbix/zabbix_agentd.conf.d/*; do |
465 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf "$F" >/dev/null 2>&1 || echo "$F" >>dir.list |
466 |
done |
done |
467 |
fi |
fi |
468 |
if [ -d /var/lib/zabbix/bin ]; then |
if [ -d /var/lib/zabbix/bin ]; then |
469 |
for F in /var/lib/zabbix/bin/*;do |
for F in /var/lib/zabbix/bin/*; do |
470 |
rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
rpm -qf "$F" >/dev/null 2>&1 || echo "$F" >>dir.list |
471 |
done |
done |
472 |
fi |
fi |
473 |
rpm -q smeserver-zoneminder >/dev/null 2>&1 && cat <<'EOF' >> dir.list |
rpm -q smeserver-zoneminder >/dev/null 2>&1 && cat <<'EOF' >>dir.list |
474 |
/var/lib/zoneminder |
/var/lib/zoneminder |
475 |
/var/log/zoneminder |
/var/log/zoneminder |
476 |
/var/spool/zoneminder-upload |
/var/spool/zoneminder-upload |
504 |
#smeserver-sane |
#smeserver-sane |
505 |
#smeserver-usbdisksmanager |
#smeserver-usbdisksmanager |
506 |
|
|
507 |
#we might get issue there with .rpmnew files |
# we might get issue there with .rpmnew files |
508 |
# but we need to get the same version as in db |
# but we need to get the same version as in db |
509 |
|
|
510 |
# for F in /usr/share/nextcloud/apps/*;do |
# for F in /usr/share/nextcloud/apps/*;do |
511 |
# rpm -qf $F >/dev/null 2>&1 || echo $F >> dir.list |
# rpm -qf "$F" >/dev/null 2>&1 || echo "$F" >> dir.list |
512 |
# done |
# done |
513 |
|
|
514 |
|
/sbin/e-smith/audittools/newrpms >/root/newrpms |
515 |
|
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 |
516 |
|
cat </root/newrpms | grep @ | cut -d' ' -f1 | sed 's/.noarch//g' | sed 's/.x86_64//g' | sed 's/.i386//g' | sort >/root/rpmsextra |
517 |
|
|
|
|
|
|
## add here selection for test or live and stop services |
|
|
/sbin/e-smith/audittools/newrpms > /root/newrpms |
|
|
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 |
|
|
cat /root/newrpms|grep @ |cut -d' ' -f1|sed 's/.noarch//g'| sed 's/.x86_64//g'|sed 's/.i386//g'|sort >/root/rpmsextra |
|
|
#ADD here |
|
518 |
mkdir -p /root/migratehelper/{yumDownload,lists} |
mkdir -p /root/migratehelper/{yumDownload,lists} |
519 |
# filter out in file per repo |
|
520 |
# run trhough all created files for /root/migratehelper/lists/RpmsPerRepos_*.list |
# Filter out in file per repo |
521 |
# and yum reinstall --downloadonly --downloaddir=/root/migratehelper/yumDownload # mayded followed by yum update --downloadonly --downloaddir=/root/migratehelper/yumDownload |
|
522 |
# or yum install --downloadonly --downloaddir=/root/migratehelper/yumDownload --installroot=/root/migratehelper/ smeserver-yum --enablerepo=smeos,base --releasever=6 |
echo "Run through all created files for /root/migratehelper/lists/RpmsPerRepos_*.list" |
523 |
# or after requiring yum-utils (bug it seems to only download to current dir whatever you do: |
echo "and" |
524 |
# cd /root/migratehelper/yumDownload; yumdownloader install --downloadonly --downloaddir=. smeserver-freepbx -y --diablerepo=* --enablerepo=$repo --releasever=6 |
echo "yum reinstall --downloadonly --downloaddir=/root/migratehelper/yumDownload" |
525 |
|
echo "maybe followed by" |
526 |
#### stop services so no changes occurs |
echo "yum update --downloadonly --downloaddir=/root/migratehelper/yumDownload" |
527 |
if [ -e /usr/lib/systemd/system/qmail.service ]; then |
echo "or" |
528 |
/usr/bin/systemctl stop qmail.service qpsmtpd.service sqpsmtpd.service ejabberd.service smb.service smbd.service nmbd.service httpd-e-smith.service |
echo "yum install --downloadonly --downloaddir=/root/migratehelper/yumDownload --installroot=/root/migratehelper/ smeserver-yum --enablerepo=smeos,base --releasever=6" |
529 |
|
echo "or after requiring yum-utils (bug it seems to only download to current dir whatever you do:" |
530 |
|
echo "cd /root/migratehelper/yumDownload; yumdownloader install --downloadonly --downloaddir=. smeserver-freepbx -y --disablerepo=* --enablerepo=\$repo --releasever=6" |
531 |
|
|
532 |
|
if [ $TEST = "n" ]; then |
533 |
|
echo "Stopping Services and running backup" |
534 |
|
|
535 |
|
# uncomment to test Test and prevent backup running |
536 |
|
# echo "Test mode $TEST" |
537 |
|
# exit 1 |
538 |
|
|
539 |
|
#### stop services so no changes occurs |
540 |
|
if [ -e /usr/lib/systemd/system/qmail.service ]; then |
541 |
|
/usr/bin/systemctl stop qmail.service qpsmtpd.service sqpsmtpd.service ejabberd.service smb.service smbd.service nmbd.service httpd-e-smith.service |
542 |
|
else |
543 |
|
sv d /service/qmail |
544 |
|
sv d /service/qpsmtpd |
545 |
|
sv d /service/sqpsmtpd |
546 |
|
[ -e /service/ejabberd ] && sv d /service/ejabberd |
547 |
|
sv d /service/smbd |
548 |
|
sv d /service/httpd-e-smith |
549 |
|
fi |
550 |
|
|
551 |
|
#### prebackup |
552 |
|
signal-event pre-backup |
553 |
|
|
554 |
|
if [ ! -d /mnt/backup ]; then |
555 |
|
mkdir -p /mnt/backup |
556 |
|
fi |
557 |
|
|
558 |
|
tar cvzf /mnt/backup/smeserver.tgz -T dir.list --exclude-from exclude.list --xattrs |
559 |
|
echo "Finished. Backup file is in /mnt/backup" |
560 |
|
echo "All services stopped." |
561 |
|
echo "Please copy the remaining excluded files (e.g. /home/e-smith/files/*) to the new server before you halt this server" |
562 |
|
|
563 |
else |
else |
564 |
sv d /service/qmail |
echo "Test mode enabled - no backup run" |
565 |
sv d /service/qpsmtpd |
echo "Test mode $TEST" |
566 |
sv d /service/sqpsmtpd |
exit 0 |
567 |
[ -e /service/ejabberd ] && sv d /service/ejabberd |
fi |
568 |
sv d /service/smbd |
|
569 |
sv d /service/httpd-e-smith |
exit 0 |
|
fi |
|
|
#### prebackup |
|
|
signal-event pre-backup |
|
|
tar cvzf /mnt/backup/smeserver.tgz -T dir.list --exclude-from exclude.list --xattrs |
|