Migratehelper
migratehelper logo | |
Maintainer | [[user:Jean-Philippe Pialasse|Jean-Philippe Pialasse]] |
---|---|
Url | https://wiki.contribs.org |
Licence | GPL |
Category | |
Tags | backup, restore, contribs |
Maintainer
Version
Description
This is a script intended to help backup and restore when migrating to another box with the same SME version or newer.
It will create an archive similar to the console usb backup, hence allowing console restore at startup directly after install.
It will backup all the known configurations and files for every installed contribs.
It will also backup some user space known to potentially have manually added files.
It will create a list of rpm currently installed and break them down to ease the install later.
A WIP will be to download the rpms from the repos to allow quick reinstall. Another script will be used later to allow download from a more recent version.
There is also an exclusion list. By default /home/e-smith/files is in this exclusion list so you can have a faster server backup and restore. It assumes you backup those files separately and restore them manually later (or have them on a separate mount point you can easily remount latter), as the server can boot without them on install.
Installation
yum --enablerepo=smecontribs install smeserver-migratehelper
wget http://viewvc.koozali.org/smecontribs/rpms/smeserver-migratehelper/contribs10/migratehelper.sh -O /usr/bin/migratehelper.sh --no-check-certificate
Usage and behaviour
You must first create the mount point and mount your external disk already formatted and with sufficient place to receive the archive:
mkdir /mnt/backup
mount /dev/mydisk /mnt/backup
You can then edit the script and Add your directories or files to include in the dir.list section, your exclusion in exclude.list section. Then check all your contribs are listed, and the associated destination are correct.
vim /usr/bin/migratehelper.sh
Then run the script.
Script Options
Usage: [ -t Enable Test mode ] [ -n no-check ] [ -v Version ] [ -h Help ]
test mode - does not stop services and run the backup no-check - don't stop and ask questions
/usr/bin/migratehelper.sh
It will then process all the files to backup and display the progress on screen. After creating the definitive list depending on installed rpms, it will then create a list of rpm installed and breakdown them in two easy to restore lists :
files | description |
---|---|
/root/newrpms | output of /sbin/e-smith/auditiools/newrpms |
/root/contribs | previous output filtered for smeserver-* rpms |
/root/rpmsextra | all other non base distro rpms. |
Default backup list
note : we are excluding /home/e-smith/{files,shares} and /home/e-smith/db/mysql*/{daily,hourly}
/etc/e-smith/templates-custom
/etc/e-smith/templates-user-custom
/etc/group
/etc/gshadow
/etc/passwd
/etc/samba/secrets.tdb
/etc/samba/smbpasswd
/etc/shadow
/etc/smbpasswd
/etc/ssh
/etc/sudoers
/root
/home/e-smith/Maildir
/home/e-smith/home
/home/e-smith/ssl.crt
/home/e-smith/ssl.key
/home/e-smith/dkim_keys
/home/e-smith/db
/var/lib/dhcpd/dhcpd.leases
/var/log/qpsmtpd
/var/log/sqpsmtpd
/var/log/qmail
/var/log/httpd/
/var/log/dovecot/
/var/log/squid
/var/log/iptables/
/var/spool/mail/
/var/spool/spamd/
/var/log/samba/samba_audit
/var/service/qpsmtpd/config/dkimkeys/
also we add any non rpm owned files in
/usr/local/bin/ /etc/cron.* /etc/udev/rules.d/
Default exclusions
/home/e-smith/db/mysql/daily
/home/e-smith/db/mysql/hourly
/home/e-smith/db/mysql55/daily
/home/e-smith/db/mysql55/hourly
/home/e-smith/db/mysql57/daily
/home/e-smith/db/mysql57/hourly
/home/e-smith/files
/home/e-smith/shares
/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule80PHP
/etc/e-smith/templates-custom/etc/hosts.allow/sshd
/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/35SSL00Listen443
/etc/e-smith/templates-custom/etc/dhcpd.conf/25DomainNameServers
/etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeDefault
/etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeMax
/etc/e-smith/templates-custom/etc/dhcpd.conf/25Routers
Supported contribs
this is a list of currently configured and known contribs to save in the process. Please be aware that it is not exhaustive. Check if yours is in there, and check that all the needed files are included.
smeserver-awstats
smeserver-BackupPC4
smeserver-BackupPC
smeserver-bandwidthd
smeserver-clamav-unofficial-sigs
smeserver-dansguardian
smeserver-dansguardian
smeserver-dansguardian-panel
smeserver-denyhosts
smeserver-dl
dokuwiki
smeserver-durep
smeserver-ezmlm-web
smeserver-freepbx
smeserver-fail2ban
smeserver-grr
ipasserelle-im
smeserver-isoqlog
smeserver-jappix
smeserver-lemonldap-ng
smeserver-letsencrypt
smeserver-limesurvey
ipasserelle-listes
smeserver-madsonic
smeserver-mailman
smeserver-nextcloud
smeserver-ntop
smeserver-openvpn-bridge
smeserver-openvpn-routed
smeserver-openvpn-s2s
phpki
phpki-ng
smeserver-phpki
smeserver-phpki-ng
pydio
smeserver-sarg
smeserver-sme8admin
smeserver-sme9admin
smeserver-smeadmin
smeserver-softethervpn-server
smeserver-sysmon
smeserver-tftp-server
smeserver-transmission
smeserver-unifi
smeserver-xt_geoip
smeserver-webfilter
smeserver-webshares
smeserver-zabbix-agent
smeserver-zabbix-proxy
smeserver-zabbix-server
smeserver-zoneminder
Contribs that do not need any file backup:
- smeserver-bridge-interface
- smeserver-ddclient
- smeserver-email-management
- smeserver-geoip
- smeserver-kronolith
- smeserver-lazy_admin_tools
- smeserver-learn
- smeserver-mailsorting
- smeserver-mailstats
- smeserver-mediatomb
- smeserver-mod_dav
- smeserver-nag
- smeserver-php-fpm
- smeserver-php-scl
- smeserver-phpldapadmin.
- smeserver-phpsysinfo
- smeserver-qmHandle
- smeserver-remoteuseraccess
- smeserver-sane
- smeserver-usbdisksmanager
- smeserver-userpanel
- smeserver-userpanels
- smeserver-vacation
- smeserver-wbl
- smeserver-webapps-common
- smeserver-webhosting
Restore
First step will be to simply use the console restore with the obtained smeserver.tgz. We expect you handle the transfer either using a USB disk, or by having used sshfs and already mounted one extra partition of your new server to your old to create you archive on.
Second use the configuration console to fix any changes needed on network card or IP, domain name...
Third you can use the saved list of rpm to try to install your contribs and other missing things
yum install --enablerepo=smecontribs `cat /root/contribs` yum install --enablerepo=smecontribs `cat /root/rpmsextra`
You can also enable the needed repo depending on what you would have : epel, fws, ....
Fourth, you can start a rsync for the missing bits
rsync -arv root@oldsme:/home/e-smith/files/ibays/ /home/e-smith/files/ibays rsync -arv root@oldsme:/home/e-smith/files/shares/ /home/e-smith/files/shares rsync -arv root@oldsme:/home/e-smith/files/users/ /home/e-smith/files/users rsync -arv root@oldsme:/home/e-smith/files/nextcloud home/e-smith/files/nextcloud
or simply
rsync -arv root@oldsme:/home/e-smith/files/ /home/e-smith/files
Some might enjoy to get back their old log too
then you should be good to enjoy your new server....
Uninstall
yum remove smeserver-migratehelper
Issues
Certificate
If you experience issues with certificates
https://vault.centos.org/6.10/os/x86_64/repodata/repomd.xml: [Errno 14] Peer cert cannot be verified or peer cert invalid
cd /etc/yum.smerepos.d nano sme-base.repo
Add this to the relevant sections:
sslverify=0
(Do not run yum-modify as it will overwrite this)
Save and then re-run the migratehelper.
Bugs
Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-migratehelper component or use this link
Below is an overview of the current issues for this contrib:
Changelog
Only released version in smecontrib are listed here.
- remove non existing standard path /home/e-smith/home
- Fix JPs typo
- fix mangled fail2ban conf backup lines
- remove debug line left by mistake
2021/10/29 John Crisp 1.0-6.sme
- add check/create for a /mnt/backup dir
- Fix typos
- Fix bash syntax errors via the IDE plugin