From b14460369054554c697d7bedaf17e23e6217f867 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Wed, 15 Aug 2018 15:23:41 +0200 Subject: [PATCH] update mysqldump, add imapsync * remove useless --skip-lock-tables option for mysqldump, already set by --single-transaction * set gzip compression level to 1 instead of 9 : backup process is two times faster, but dump size is only 15% higher * add imapsync script, installation instructions will be added soon --- README.md | 4 ++++ backup/mysqldump/mysqldump.sh | 8 ++++---- mail/imapsync/README.md | 17 +++++++++++++++++ mail/imapsync/credentials.csv | 2 ++ mail/imapsync/imapsync-from-csv.sh | 17 +++++++++++++++++ 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 mail/imapsync/README.md create mode 100644 mail/imapsync/credentials.csv create mode 100644 mail/imapsync/imapsync-from-csv.sh diff --git a/README.md b/README.md index fa52099..d356fbd 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ A collection of bash scripts * [mysqldump](https://github.com/VirtuBox/bash-scripts/blob/master/backup/mysqldump/) : dump each MySQL database or to perform a full dump. Work on almost all linux servers and support Plesk. +## Mail + +* [imapsync from csv](https://github.com/VirtuBox/bash-scripts/blob/master/mail/imapsync/) : migrate emails between two imap servers by reading users credentials in a csv file using imapsync + ## Cryptocurrency * [xmrigCC compilation](https://github.com/VirtuBox/bash-scripts/tree/master/cryptocurrency/xmrigCC) : compile xmrig from source on Ubuntu 16.04/18.04 LTS diff --git a/backup/mysqldump/mysqldump.sh b/backup/mysqldump/mysqldump.sh index 0ca68d9..8a7582b 100644 --- a/backup/mysqldump/mysqldump.sh +++ b/backup/mysqldump/mysqldump.sh @@ -126,9 +126,9 @@ backup_mysql() { else [ ! -d $MYSQLDUMPPATH/$db ] && $MKDIR -p $MYSQLDUMPPATH/$db if [ -d /etc/psa ]; then - MYSQL_PWD=$(cat /etc/psa/.psa.shadow) $MYSQLDUMP -uadmin --single-transaction --skip-lock-tables $db $EXTRA_PARAMS | $GZIP -9 >$FILE || echo -e \\t \\t "MySQLDump Failed $db" + MYSQL_PWD=$(cat /etc/psa/.psa.shadow) $MYSQLDUMP -uadmin --single-transaction $db $EXTRA_PARAMS | $GZIP -1 >$FILE || echo -e \\t \\t "MySQLDump Failed $db" else - $MYSQLDUMP --single-transaction --skip-lock-tables $db $EXTRA_PARAMS | $GZIP -9 >$FILE || echo -e \\t \\t "MySQLDump Failed $db" + $MYSQLDUMP --single-transaction --skip-lock-tables $db $EXTRA_PARAMS | $GZIP -1 >$FILE || echo -e \\t \\t "MySQLDump Failed $db" fi fi done @@ -146,9 +146,9 @@ backup_mysql_all_database() { [ ! -d $MYSQLFULLDUMPPATH ] && $MKDIR -p $MYSQLFULLDUMPPATH local FILE="$MYSQLFULLDUMPPATH/all-database.$TIME.gz" if [ -d /etc/psa ]; then - MYSQL_PWD=$(cat /etc/psa/.psa.shadow) $MYSQLDUMP -uadmin --all-databases --single-transaction --events --skip-lock-tables | $GZIP -9 >$FILE || echo -e \\t \\t "MySQLDump Failed all-databases" + MYSQL_PWD=$(cat /etc/psa/.psa.shadow) $MYSQLDUMP -uadmin --all-databases --single-transaction --events | $GZIP -1 >$FILE || echo -e \\t \\t "MySQLDump Failed all-databases" else - $MYSQLDUMP --all-databases --single-transaction --events --skip-lock-tables | $GZIP -9 >$FILE || echo -e \\t \\t "MySQLDump Failed all-databases" + $MYSQLDUMP --all-databases --single-transaction --events | $GZIP -1 >$FILE || echo -e \\t \\t "MySQLDump Failed all-databases" fi [ $LOGS -eq 1 ] && echo "*** Backup Finished At $(date) [ files wrote to $MYSQLFULLDUMPPATH] ***" >>$MYSQLDUMPLOG/mysqldumpl.log 2>&1 } diff --git a/mail/imapsync/README.md b/mail/imapsync/README.md new file mode 100644 index 0000000..795cf26 --- /dev/null +++ b/mail/imapsync/README.md @@ -0,0 +1,17 @@ +# Script to migrate emails between two servers using imapsync - user credentials read from csv + +## Download the script and csv example + +```bash +wget https://raw.githubusercontent.com/VirtuBox/bash-scripts/master/mail/imapsync/imapsync-from-csv.sh -O imapsync-from-csv.sh +wget https://raw.githubusercontent.com/VirtuBox/bash-scripts/master/mail/imapsync/credentials.csv -O credentials.csv +chmod +x imapsync-from-csv.sh +``` + +## Run the script + +Put your users crendentials in the csv file, and run imapsync-from-csv.sh this way : + +```bash +./imapsync-from-csv.sh imap-server-1.tld imap-server-2.tld +``` diff --git a/mail/imapsync/credentials.csv b/mail/imapsync/credentials.csv new file mode 100644 index 0000000..ec41adc --- /dev/null +++ b/mail/imapsync/credentials.csv @@ -0,0 +1,2 @@ +user@domain.tld | password_imap_1 | password_imap_2 +user2@domain.tld | password_imap_1 | password_imap_2 diff --git a/mail/imapsync/imapsync-from-csv.sh b/mail/imapsync/imapsync-from-csv.sh new file mode 100644 index 0000000..643160a --- /dev/null +++ b/mail/imapsync/imapsync-from-csv.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +input="credentials.csv" +while IFS='|' read -r f1 f2 f3; do + imapsync \ + --host1 "$1" \ + --user1 "$f1" \ + --ssl1 \ + --authmech1 LOGIN \ + --password1 "$f2" \ + --host2 "$2" \ + --ssl2 \ + --user2 "$f1" \ + --password2 "$f3" \ + --authmech2 LOGIN \ + --automap +done <"$input"