SCROLL
Среднее время на прочтение: 4 мин.

Резервное копирование списка учетных записей и списков рассылки в Zimbra Collaboration 8.6

Рассмотрим как делать резервные копии списка учетных записей, а так же списков рассылки. Данный бекап может пригодится, в случае переноса почтового сервера на другую машину, да и в целом на случай непредвиденного сбоя, всегда можно будет восстановить быстро как учетные записи, так и группы рассылки.

 

Итак мы имеем развернутый по этой статье почтовый сервер Zimbra Collaboration 8.6 на Ubuntu 14.04 Trusty Tahr. Для создания бекапа данных мы будем использовать bash скрипты.

 

Резервное копирование списка учетных записей

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgyJUQwJUI1JUQwJUJBJUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIyJUQxJThCJUQwJUI5JTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUI4JTIwJUQwJUI0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJUQxJThCJUQwJUJDJTNB

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nano backup_accounts.sh
sudo chmod +x backup_accounts.sh
nano backup_accounts.sh sudo chmod +x backup_accounts.sh
nano backup_accounts.sh
sudo chmod +x backup_accounts.sh

 

JUQwJTkyJTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUIyJUQwJUJGJUQwJUI4JUQxJTgxJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI1JUQwJUI1JTIwKCVEMCVCMiUyMCVEMCVCRiVEMCVCMCVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCNSVEMSU4MiVEMSU4MCVEMCVCMCVEMSU4NSUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCNSVEMCVCQSUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMSU4QiVEMCVCMiVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MSVEMCVCMiVEMCVCRSVEMCVCOCklM0E=

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
#####################
# Настройка скрипта #
#####################
# Место где хранить бекапы
Path="/home/jakonda/bkzm"
# Название домена
Domain="jakondo.ru"
# Текущая дата
Current_date=$(date +%d-%m-%Y)
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "################################################"
echo "# Резервное копирование списка учетных записей #"
echo "################################################"
echo ""
echo "Получение списка аккаунтов в домене $Domain..."
# Получаем список всех аккаунтов в указанном домене
/opt/zimbra/bin/zmprov -l gaa $Domain > $Temp
echo "Получение подробных сведений по аккаунтам..."
# Получаем развернутые данные по каждому аккаунту
for account in $( cat $Temp); do
# Фамилия
GN=$(/opt/zimbra/bin/zmprov ga $account | grep givenName)
# Имя
SN=$(/opt/zimbra/bin/zmprov ga $account | grep sn)
# Отчество
IN=$(/opt/zimbra/bin/zmprov ga $account | grep initials)
# Отображаемое полное имя
DN=$(/opt/zimbra/bin/zmprov ga $account | grep displayName)
# компануем полученные данные в одну строку и записываем ее в файл бекапа
echo "$account <$GN><$SN><$IN><$DN>" >> $Path"/$Current_date.accounts.txt"
done
echo "Создание бекапа списка аккаунтов завершено"
# Подчищаем после выполнения скрипта
rm -f $Temp
#!/bin/bash ##################### # Настройка скрипта # ##################### # Место где хранить бекапы Path="/home/jakonda/bkzm" # Название домена Domain="jakondo.ru" # Текущая дата Current_date=$(date +%d-%m-%Y) # Временный файл для работы скрипта Temp=$Path"/temp" echo "################################################" echo "# Резервное копирование списка учетных записей #" echo "################################################" echo "" echo "Получение списка аккаунтов в домене $Domain..." # Получаем список всех аккаунтов в указанном домене /opt/zimbra/bin/zmprov -l gaa $Domain > $Temp echo "Получение подробных сведений по аккаунтам..." # Получаем развернутые данные по каждому аккаунту for account in $( cat $Temp); do # Фамилия GN=$(/opt/zimbra/bin/zmprov ga $account | grep givenName) # Имя SN=$(/opt/zimbra/bin/zmprov ga $account | grep sn) # Отчество IN=$(/opt/zimbra/bin/zmprov ga $account | grep initials) # Отображаемое полное имя DN=$(/opt/zimbra/bin/zmprov ga $account | grep displayName) # компануем полученные данные в одну строку и записываем ее в файл бекапа echo "$account <$GN><$SN><$IN><$DN>" >> $Path"/$Current_date.accounts.txt" done echo "Создание бекапа списка аккаунтов завершено" # Подчищаем после выполнения скрипта rm -f $Temp
#!/bin/bash

#####################
# Настройка скрипта #
#####################
# Место где хранить бекапы
Path="/home/jakonda/bkzm"
# Название домена
Domain="jakondo.ru"
# Текущая дата
Current_date=$(date +%d-%m-%Y)
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "################################################"
echo "# Резервное копирование списка учетных записей #"
echo "################################################"
echo ""
echo "Получение списка аккаунтов в домене $Domain..."
# Получаем список всех аккаунтов в указанном домене
/opt/zimbra/bin/zmprov -l gaa $Domain > $Temp
echo "Получение подробных сведений по аккаунтам..."
# Получаем развернутые данные по каждому аккаунту
for account in $( cat $Temp); do
# Фамилия
GN=$(/opt/zimbra/bin/zmprov ga $account | grep givenName)
# Имя
SN=$(/opt/zimbra/bin/zmprov ga $account | grep sn)
# Отчество
IN=$(/opt/zimbra/bin/zmprov ga $account | grep initials)
# Отображаемое полное имя
DN=$(/opt/zimbra/bin/zmprov ga $account | grep displayName)
# компануем полученные данные в одну строку и записываем ее в файл бекапа
echo "$account <$GN><$SN><$IN><$DN>" >> $Path"/$Current_date.accounts.txt"
done
echo "Создание бекапа списка аккаунтов завершено"
# Подчищаем после выполнения скрипта
rm -f $Temp

 

JUQwJTkyJTIwJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI1JTIwJUQwJUIyJUQxJThCJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJUQwJUIwJTJDJTIwJUQxJTgxJUQwJUJEJUQwJUIwJUQxJTg3JUQwJUIwJUQwJUJCJUQwJUIwJTIwJUQxJTg0JUQwJUJFJUQxJTgwJUQwJUJDJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQxJTgxJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUJFJUQwJUJBJTIwJUQwJUIyJUQxJTgxJUQwJUI1JUQxJTg1JTIwJUQwJUJGJUQwJUJFJUQxJTg3JUQxJTgyJUQwJUJFJUQwJUIyJUQxJThCJUQxJTg1JTIwJUQxJThGJUQxJTg5JUQwJUI4JUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJThFJUQxJTg5JUQwJUI4JUQxJTg1JUQxJTgxJUQxJThGJTIwJUQwJUIyJTIwJUQxJTgzJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUIwJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUJDJTIwJUQwJUI0JUQwJUJFJUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI1JTJDJTIwJUQwJUI3JUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUJFJTIwJUQwJUJBJUQwJUIwJUQwJUI2JUQwJUI0JUQwJUJFJUQwJUJDJUQxJTgzJTIwJUQwJUJGJUQwJUJFJUQxJTg3JUQxJTgyJUQwJUJFJUQwJUIyJUQwJUJFJUQwJUJDJUQxJTgzJTIwJUQxJThGJUQxJTg5JUQwJUI4JUQwJUJBJUQxJTgzJTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUIxJUQwJUI1JUQwJUJBJUQwJUIwJUQwJUJGJTJDJTIwJUQwJUIyJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg2JUQwJUI1JTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUJCJUQwJUJFJUQwJUIzJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCLiUyMCVEMCU5RiVEMSU4MCVEMCVCOCVEMCVCQyVEMCVCNSVEMSU4MCUyMCVEMCVCMiVEMSU4QiVEMCVCMiVEMCVCRSVEMCVCNCVEMCVCMCUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMSU4QiUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUzQQ==

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
################################################
# Резервное копирование списка учетных записей #
################################################
Получение списка аккаунтов в домене jakondo.ru...
Получение подробных сведений по аккаунтам...
Создание бекапа списка аккаунтов завершено
################################################ # Резервное копирование списка учетных записей # ################################################ Получение списка аккаунтов в домене jakondo.ru... Получение подробных сведений по аккаунтам... Создание бекапа списка аккаунтов завершено
################################################
# Резервное копирование списка учетных записей #
################################################
Получение списка аккаунтов в домене jakondo.ru...
Получение подробных сведений по аккаунтам...
Создание бекапа списка аккаунтов завершено

 

JUQwJTlGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUIxJUQwJUI1JUQwJUJBJUQwJUIwJUQwJUJGJUQwJUIwJTIwJUQwJUIyJUQxJThCJUQwJUIzJUQwJUJCJUQxJThGJUQwJUI0JUQwJUI4JUQxJTgyJTIwJUQwJUIyJUQwJUJFJUQxJTgyJTIwJUQxJTgyJUQwJUIwJUQwJUJBJTNB

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
jakonda1@jakondo.ru <><sn: Жаконда1><><displayName: Жаконда1>
jakonda2@jakondo.ru <><sn: Жаконда2><><displayName: Жаконда2>
jakonda@jakondo.ru <givenName: Иван><sn: Иванов><initials: Иванович><displayName: Иванов Иван Иванович>
jakond@jakondo.ru <givenName: Петя><sn: Петечкин><initials: Петин><displayName: Петечкин Петя Петин>
jakonda1@jakondo.ru <><sn: Жаконда1><><displayName: Жаконда1> jakonda2@jakondo.ru <><sn: Жаконда2><><displayName: Жаконда2> jakonda@jakondo.ru <givenName: Иван><sn: Иванов><initials: Иванович><displayName: Иванов Иван Иванович> jakond@jakondo.ru <givenName: Петя><sn: Петечкин><initials: Петин><displayName: Петечкин Петя Петин>
jakonda1@jakondo.ru <><sn: Жаконда1><><displayName: Жаконда1>
jakonda2@jakondo.ru <><sn: Жаконда2><><displayName: Жаконда2>
jakonda@jakondo.ru <givenName: Иван><sn: Иванов><initials: Иванович><displayName: Иванов Иван Иванович>
jakond@jakondo.ru <givenName: Петя><sn: Петечкин><initials: Петин><displayName: Петечкин Петя Петин>

 

JUQwJTkyJUQwJUJFJUQxJTgyJTIwJUQxJTgyJUQwJUIwJUQwJUJBJUQwJUI4JUQwJUJDJTIwJUQxJTgxJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJFJUQwJUIxJUQwJUJFJUQwJUJDJTIwJUQwJUJDJUQxJThCJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI4JUQwJUJCJUQwJUI4JTIwJUQwJUIxJUQwJUI1JUQwJUJBJUQwJUIwJUQwJUJGJTIwJUQwJUIyJUQxJTgxJUQwJUI1JUQwJUJDJTIwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJThFJUQxJTg5JUQwJUI4JUQxJTg1JUQxJTgxJUQxJThGJTIwJUQxJTgzJUQxJTg3JUQwJUI1JUQxJTgyJUQwJUJEJUQxJThCJUQxJTg1JTIwJUQwJUI3JUQwJUIwJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUI1JUQwJUI5JTJDJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQxJThCJUQwJUI1JTIwJUQwJUIyJUQxJTgxJUQwJUI1JUQwJUIzJUQwJUI0JUQwJUIwJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQwJUIyJUQwJUJFJUQxJTgxJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUI4JUQxJTgyJUQxJThDJTJDJTIwJUQxJTg3JUQxJTgyJUQwJUJFJTIwJUQwJUJEJUQwJUI4JUQwJUI2JUQwJUI1JTIwJUQwJUJDJUQxJThCJTIwJUQwJUI4JTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI4JUQwJUJDJUUyJTgwJUE2

 

Восстановление учетных записей из резервной копии

Создаем текстовый файл и делаем его исполняемым:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nano restore_accounts.sh
sudo chmod +x restore_accounts.sh
nano restore_accounts.sh sudo chmod +x restore_accounts.sh
nano restore_accounts.sh
sudo chmod +x restore_accounts.sh

 

В созданный скрипт вписываем следующее (в параметрах настроек скрипта указываем данные свои):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа списка пользователей
Path="/home/jakonda/bkzm"
# Название домена
Domain="jakondo.ru"
echo "#################################################################"
echo "# Восстановление из резервной копии списка пользователей Zimbra #"
echo "#################################################################"
echo ""
# Запрос ввода имени почтового ящика
read -p "Введите за какое число восстановить аккаунты пользователей: " Date
echo "Время начала восстановления аккаунтов - $(date +%T)"
echo ""
# Запоминаем время начала восстановление
Begin_time=$(date +%s)
# Проходимся по каждому аккаунту в списке и восстанавливаем его
cat $Path"/"$Date".accounts.txt"| while read account; do
# Отделяем имя аккаунта почты
AC=$(echo $account | sed -r 's/ <.+//')
# Отделяем Имя
if Result=$(echo $account | grep 'givenName'); then
GN=$(echo $account | sed 's|.*<givenName: ||'|sed -r 's/>.+//')
else
GN=$(echo "")
fi
# Отделяем Фамилия
if Result=$(echo $account | grep 'sn'); then
SN=$(echo $account | sed 's|.*<sn: ||'|sed -r 's/>.+//')
else
SN=$(echo "")
fi
# Отделяем Отчество
if Result=$(echo $account | grep 'initials'); then
IN=$(echo $account | sed 's|.*<initials: ||'|sed -r 's/>.+//')
else
IN=$(echo "")
fi
# Отделяем Отображаемое имя
if Result=$(echo $account | grep 'displayName'); then
DN=$(echo $account | sed 's|.*<displayName: ||'|sed -r 's/>.*//')
else
DN=$(echo)
fi
# Создаем почтовый аккаунт
echo "Восстановление аккаунта $AC..."
Result=$(/opt/zimbra/bin/zmprov ca $AC Aa1234567 displayName "$DN" givenName "$GN" sn "$SN" initials "$IN")
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]"
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]"
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на восстановление аккаунтов : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash ##################### # Настройки скрипта # ##################### # Путь к месту бекапа списка пользователей Path="/home/jakonda/bkzm" # Название домена Domain="jakondo.ru" echo "#################################################################" echo "# Восстановление из резервной копии списка пользователей Zimbra #" echo "#################################################################" echo "" # Запрос ввода имени почтового ящика read -p "Введите за какое число восстановить аккаунты пользователей: " Date echo "Время начала восстановления аккаунтов - $(date +%T)" echo "" # Запоминаем время начала восстановление Begin_time=$(date +%s) # Проходимся по каждому аккаунту в списке и восстанавливаем его cat $Path"/"$Date".accounts.txt"| while read account; do # Отделяем имя аккаунта почты AC=$(echo $account | sed -r 's/ <.+//') # Отделяем Имя if Result=$(echo $account | grep 'givenName'); then GN=$(echo $account | sed 's|.*<givenName: ||'|sed -r 's/>.+//') else GN=$(echo "") fi # Отделяем Фамилия if Result=$(echo $account | grep 'sn'); then SN=$(echo $account | sed 's|.*<sn: ||'|sed -r 's/>.+//') else SN=$(echo "") fi # Отделяем Отчество if Result=$(echo $account | grep 'initials'); then IN=$(echo $account | sed 's|.*<initials: ||'|sed -r 's/>.+//') else IN=$(echo "") fi # Отделяем Отображаемое имя if Result=$(echo $account | grep 'displayName'); then DN=$(echo $account | sed 's|.*<displayName: ||'|sed -r 's/>.*//') else DN=$(echo) fi # Создаем почтовый аккаунт echo "Восстановление аккаунта $AC..." Result=$(/opt/zimbra/bin/zmprov ca $AC Aa1234567 displayName "$DN" givenName "$GN" sn "$SN" initials "$IN") if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo fi done # Вычисление времени работы бекапа почтовых ящиков End_time=$(date +%s) Elapsed_time=$(expr $End_time - $Begin_time) Hours=$(($Elapsed_time / 3600)) Elapsed_time=$(($Elapsed_time - $Hours * 3600)) Minutes=$(($Elapsed_time / 60)) Seconds=$(($Elapsed_time - $Minutes * 60)) echo "Затрачено времени на восстановление аккаунтов : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash

#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа списка пользователей
Path="/home/jakonda/bkzm"
# Название домена
Domain="jakondo.ru"
echo "#################################################################"
echo "# Восстановление из резервной копии списка пользователей Zimbra #"
echo "#################################################################"
echo ""
# Запрос ввода имени почтового ящика
read -p "Введите за какое число восстановить аккаунты пользователей: " Date
echo "Время начала восстановления аккаунтов - $(date +%T)"
echo ""
# Запоминаем время начала восстановление
Begin_time=$(date +%s)
# Проходимся по каждому аккаунту в списке и восстанавливаем его
cat $Path"/"$Date".accounts.txt"| while read account; do
# Отделяем имя аккаунта почты
AC=$(echo $account | sed -r 's/ <.+//')
# Отделяем Имя
if Result=$(echo $account | grep 'givenName'); then
GN=$(echo $account | sed 's|.*<givenName: ||'|sed -r 's/>.+//')
else
GN=$(echo "")
fi
# Отделяем Фамилия
if Result=$(echo $account | grep 'sn'); then
SN=$(echo $account | sed 's|.*<sn: ||'|sed -r 's/>.+//')
else
SN=$(echo "")
fi
# Отделяем Отчество
if Result=$(echo $account | grep 'initials'); then
IN=$(echo $account | sed 's|.*<initials: ||'|sed -r 's/>.+//')
else
IN=$(echo "")
fi
# Отделяем Отображаемое имя
if Result=$(echo $account | grep 'displayName'); then
DN=$(echo $account | sed 's|.*<displayName: ||'|sed -r 's/>.*//')
else
DN=$(echo)
fi
# Создаем почтовый аккаунт
echo "Восстановление аккаунта $AC..."
Result=$(/opt/zimbra/bin/zmprov ca $AC Aa1234567 displayName "$DN" givenName "$GN" sn "$SN" initials "$IN")
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]"
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]"
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на восстановление аккаунтов : $Hours час $Minutes минут $Seconds секунд"

 

В ходе выполнения скрипта, из списка бекапа аккаунтов разбирается каждая строка и при создании аккаунтов восстанавливаются данные такие как ФИО и отображаемое имя, по-умолчанию задается пароль Aa1234567. Пример вывода работы скрипта:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#################################################################
# Восстановление из резервной копии списка пользователей Zimbra #
#################################################################
Введите за какое число восстановить аккаунты пользователей: 28-01-2017
Время начала восстановления аккаунтов - 21:43:19
Восстановление аккаунта jakonda1@jakondo.ru...[OK]
Восстановление аккаунта jakonda2@jakondo.ru...[OK]
Восстановление аккаунта jakonda@jakondo.ru...[OK]
Восстановление аккаунта jakond@jakondo.ru...[OK]
Затрачено времени на восстановление аккаунтов : 0 час 0 минут 56 секунд
################################################################# # Восстановление из резервной копии списка пользователей Zimbra # ################################################################# Введите за какое число восстановить аккаунты пользователей: 28-01-2017 Время начала восстановления аккаунтов - 21:43:19 Восстановление аккаунта jakonda1@jakondo.ru...[OK] Восстановление аккаунта jakonda2@jakondo.ru...[OK] Восстановление аккаунта jakonda@jakondo.ru...[OK] Восстановление аккаунта jakond@jakondo.ru...[OK] Затрачено времени на восстановление аккаунтов : 0 час 0 минут 56 секунд
#################################################################
# Восстановление из резервной копии списка пользователей Zimbra #
#################################################################
Введите за какое число восстановить аккаунты пользователей: 28-01-2017
Время начала восстановления аккаунтов - 21:43:19
Восстановление аккаунта jakonda1@jakondo.ru...[OK]
Восстановление аккаунта jakonda2@jakondo.ru...[OK]
Восстановление аккаунта jakonda@jakondo.ru...[OK]
Восстановление аккаунта jakond@jakondo.ru...[OK]
Затрачено времени на восстановление аккаунтов : 0 час 0 минут 56 секунд

 

Таким способом мы удобно восстанавливаем почтовые аккаунты. Теперь рассмотрим как создавать резервные копии списков пользователей и так же их восстанавливать.

 

Резервное копирование списков рассылки

Создаем текстовый файл и делаем его исполняемым:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nano backup_lists.sh
sudo chmod +x backup_lists.sh
nano backup_lists.sh sudo chmod +x backup_lists.sh
nano backup_lists.sh
sudo chmod +x backup_lists.sh

 

JUQwJTkyJTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUIyJUQwJUJGJUQwJUI4JUQxJTgxJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI1JUQwJUI1JTIwKCVEMCVCMiUyMCVEMCVCRiVEMCVCMCVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCNSVEMSU4MiVEMSU4MCVEMCVCMCVEMSU4NSUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCNSVEMCVCQSUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMSU4QiVEMCVCMiVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MSVEMCVCMiVEMCVCRSVEMCVCOCklM0E=

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
#####################
# Настройка скрипта #
#####################
# Место где хранить бекапы
Path="/home/jakonda/bkzm/lists"
# Название домена
Domain="jakondo.ru"
# Текущая дата
Current_date=$(date +%d-%m-%Y)
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "##########################################"
echo "# Резервное копирование списков рассылки #"
echo "##########################################"
echo ""
echo "Время начала бекапа списков рассылки - $(date +%T)"
# Запоминаем время начала бекапа
Begin_time=$(date +%s)
echo ""
# Создаем катаолг под бекап на текущую дату
mkdir -p $Path/$Current_date/
# Получаем списки рассылок в указанном домене
echo "Получение списка рассылки в домене $Domain..."
/opt/zimbra/bin/zmprov gadl > $Temp
# Получаем адресатов в рассылках
cat $Temp | while read accounts_list; do
echo "Получение адресатов в рассылке $accounts_list..."
/opt/zimbra/bin/zmprov gdl $accounts_list | grep zimbraMailForwardingAddress: | awk {'print $2'} > $Path/$Current_date/$accounts_list
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo
fi
done
echo "Создание бекапа списков рассылки"
# Подчищаем после выполнения скрипта
rm -f $Temp
# Вычисление времени работы бекапа списков рассылки
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash ##################### # Настройка скрипта # ##################### # Место где хранить бекапы Path="/home/jakonda/bkzm/lists" # Название домена Domain="jakondo.ru" # Текущая дата Current_date=$(date +%d-%m-%Y) # Временный файл для работы скрипта Temp=$Path"/temp" echo "##########################################" echo "# Резервное копирование списков рассылки #" echo "##########################################" echo "" echo "Время начала бекапа списков рассылки - $(date +%T)" # Запоминаем время начала бекапа Begin_time=$(date +%s) echo "" # Создаем катаолг под бекап на текущую дату mkdir -p $Path/$Current_date/ # Получаем списки рассылок в указанном домене echo "Получение списка рассылки в домене $Domain..." /opt/zimbra/bin/zmprov gadl > $Temp # Получаем адресатов в рассылках cat $Temp | while read accounts_list; do echo "Получение адресатов в рассылке $accounts_list..." /opt/zimbra/bin/zmprov gdl $accounts_list | grep zimbraMailForwardingAddress: | awk {'print $2'} > $Path/$Current_date/$accounts_list if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]" echo fi done echo "Создание бекапа списков рассылки" # Подчищаем после выполнения скрипта rm -f $Temp # Вычисление времени работы бекапа списков рассылки End_time=$(date +%s) Elapsed_time=$(expr $End_time - $Begin_time) Hours=$(($Elapsed_time / 3600)) Elapsed_time=$(($Elapsed_time - $Hours * 3600)) Minutes=$(($Elapsed_time / 60)) Seconds=$(($Elapsed_time - $Minutes * 60)) echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash

#####################
# Настройка скрипта #
#####################
# Место где хранить бекапы
Path="/home/jakonda/bkzm/lists"
# Название домена
Domain="jakondo.ru"
# Текущая дата
Current_date=$(date +%d-%m-%Y)
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "##########################################"
echo "# Резервное копирование списков рассылки #"
echo "##########################################"
echo ""
echo "Время начала бекапа списков рассылки - $(date +%T)"
# Запоминаем время начала бекапа
Begin_time=$(date +%s)
echo ""
# Создаем катаолг под бекап на текущую дату
mkdir -p $Path/$Current_date/
# Получаем списки рассылок в указанном домене
echo "Получение списка рассылки в домене $Domain..."
/opt/zimbra/bin/zmprov gadl > $Temp
# Получаем адресатов в рассылках
cat $Temp | while read accounts_list; do
echo "Получение адресатов в рассылке $accounts_list..."
/opt/zimbra/bin/zmprov gdl $accounts_list | grep zimbraMailForwardingAddress: | awk {'print $2'} > $Path/$Current_date/$accounts_list
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo
fi
done
echo "Создание бекапа списков рассылки"
# Подчищаем после выполнения скрипта
rm -f $Temp
# Вычисление времени работы бекапа списков рассылки
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд"

 

JUQwJTkyJTIwJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI1JTIwJUQwJUIyJUQxJThCJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJUQwJUIwJTIwJUQwJUJFJUQwJUIxJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUIwJUQxJTgyJUQxJThCJUQwJUIyJUQwJUIwJUQxJThFJUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUIyJUQxJTgxJUQwJUI1JTIwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJThFJUQxJTg5JUQwJUI4JUQwJUI1JUQxJTgxJUQxJThGJTIwJUQxJTgxJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUJBJUQwJUI4JTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQxJThCJUQwJUJCJUQwJUJFJUQwJUJBJTIwJUQwJUI4JTIwJUQwJUJBJUQwJUIwJUQwJUI2JUQwJUI0JUQwJUIwJUQxJThGJTIwJUQwJUI4JUQwJUI3JTIwJUQxJTgxJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUJFJUQwJUJBJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQxJThCJUQwJUJCJUQwJUJFJUQwJUJBJTIwJUQxJTgwJUQwJUI1JUQwJUI3JUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQxJTgxJTIwJUQwJUI4JUQxJTg1JTIwJUQwJUIwJUQwJUI0JUQxJTgwJUQwJUI1JUQxJTgxJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJDJUQwJUI4LiVDMiVBMCVEMCU5RiVEMSU4MCVEMCVCOCVEMCVCQyVEMCVCNSVEMSU4MCUyMCVEMCVCMiVEMSU4QiVEMCVCMiVEMCVCRSVEMCVCNCVEMCVCMCUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMSU4QiUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUzQQ==

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
##########################################
# Резервное копирование списков рассылки #
##########################################
Время начала бекапа списков рассылки - 20:28:08
Получение списка рассылки в домене jakondo.ru...
Получение адресатов в рассылке test1@jakondo.ru... [OK]
Получение адресатов в рассылке test2@jakondo.ru... [OK]
Создание бекапа списков рассылки
Затрачено времени на резервное копирование : 0 час 0 минут 19 секунд
########################################## # Резервное копирование списков рассылки # ########################################## Время начала бекапа списков рассылки - 20:28:08 Получение списка рассылки в домене jakondo.ru... Получение адресатов в рассылке test1@jakondo.ru... [OK] Получение адресатов в рассылке test2@jakondo.ru... [OK] Создание бекапа списков рассылки Затрачено времени на резервное копирование : 0 час 0 минут 19 секунд
##########################################
# Резервное копирование списков рассылки #
##########################################
Время начала бекапа списков рассылки - 20:28:08
Получение списка рассылки в домене jakondo.ru...
Получение адресатов в рассылке test1@jakondo.ru... [OK]
Получение адресатов в рассылке test2@jakondo.ru... [OK]
Создание бекапа списков рассылки
Затрачено времени на резервное копирование : 0 час 0 минут 19 секунд

 

JUQwJTkxJUQxJThCJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJTJDJTIwJUQwJUJCJUQwJUI1JUQwJUIzJUQwJUJBJUQwJUJFJTIwJUQwJUI4JTIwJUQwJUI4JUQwJUJEJUQxJTg0JUQwJUJFJUQxJTgwJUQwJUJDJUQwJUIwJUQxJTgyJUQwJUI4JUQwJUIyJUQwJUJEJUQwJUJFJTIwJUQwJUJDJUQxJThCJTIwJUQwJUI3JUQwJUI0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUJCJUQwJUI4JTIwJUQxJTgwJUQwJUI1JUQwJUI3JUQwJUI1JUQxJTgwJUQwJUIyJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQwJUI4JTIwJUQxJTgxJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQxJThCJUQwJUJCJUQwJUJBJUQwJUI4LiUyMCVEMCVBMiVEMCVCNSVEMCVCRiVEMCVCNSVEMSU4MCVEMSU4QyUyMCVEMSU4MCVEMCVCMCVEMCVCNyVEMCVCMSVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCQyUyMCVEMCVCQSVEMCVCMCVEMCVCQSUyMCVEMCVCMiVEMCVCRSVEMSU4MSVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCRCVEMCVCRSVEMCVCMiVEMCVCOCVEMSU4MiVEMSU4QyUyMCVEMCVCOCVEMCVCNyUyMCVEMSU4MCVEMCVCNSVEMCVCNyVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCRCVEMCVCRSVEMCVCOSUyMCVEMCVCQSVEMCVCRSVEMCVCRiVEMCVCOCVEMCVCOCUyMCVEMSU4MSVEMCVCRiVEMCVCOCVEMSU4MSVEMCVCQSVEMCVCOCUyMCVEMSU4MCVEMCVCMCVEMSU4MSVEMSU4MSVEMSU4QiVEMCVCQiVEMCVCRSVEMCVCQS4=

 

Восстановление списков рассылки из резервной копии

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgyJUQwJUI1JUQwJUJBJUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIyJUQxJThCJUQwJUI5JTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUI4JTIwJUQwJUI0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJUQxJThCJUQwJUJDJTNB

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
nano restore_lists.sh
sudo chmod +x restore_lists.sh
nano restore_lists.sh sudo chmod +x restore_lists.sh
nano restore_lists.sh
sudo chmod +x restore_lists.sh

 

JUQwJTkyJTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUIyJUQwJUJGJUQwJUI4JUQxJTgxJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI1JUQwJUI1JTIwKCVEMCVCMiUyMCVEMCVCRiVEMCVCMCVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCNSVEMSU4MiVEMSU4MCVEMCVCMCVEMSU4NSUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCNSVEMCVCQSUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMSU4QiVEMCVCMiVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MSVEMCVCMiVEMCVCRSVEMCVCOCklM0E=

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа списка пользователей
Path="/home/jakonda/bkzm/lists"
# Название домена
Domain="jakondo.ru"
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "######################################################"
echo "# Восстановление из резервной копии списков рассылки #"
echo "######################################################"
echo ""
# Запрос даты, за какое число нужно восстановить бекап
read -p "Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): " Date
# Проверим наличия бекапов за указанную дату
if ! [ -d $Path/$Date ]; then
echo 'Нет бекапов на указанную дату... Завершаем работу скрипта.'
exit
fi
echo "Время начала восстановление списков рассылки - $(date +%T)"
# Запоминаем время начала восстановления
Begin_time=$(date +%s)
# Восстанавливаем списки рассылок из бекапа
for file in $Path/$Date/*; do
Name=$(ls $file | sed -e 's/^.*\///')
echo "Восстанавливаем список рассылки $Name"
Result=$(/opt/zimbra/bin/zmprov cdl $Name)
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo
echo "Восстановление участников рассылки $Name"
FullName=$(ls $file)
cat $FullName | while read account; do
Result=$(/opt/zimbra/bin/zmprov adlm $Name $account)
done
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на восстановление списка рассылок : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash ##################### # Настройки скрипта # ##################### # Путь к месту бекапа списка пользователей Path="/home/jakonda/bkzm/lists" # Название домена Domain="jakondo.ru" # Временный файл для работы скрипта Temp=$Path"/temp" echo "######################################################" echo "# Восстановление из резервной копии списков рассылки #" echo "######################################################" echo "" # Запрос даты, за какое число нужно восстановить бекап read -p "Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): " Date # Проверим наличия бекапов за указанную дату if ! [ -d $Path/$Date ]; then echo 'Нет бекапов на указанную дату... Завершаем работу скрипта.' exit fi echo "Время начала восстановление списков рассылки - $(date +%T)" # Запоминаем время начала восстановления Begin_time=$(date +%s) # Восстанавливаем списки рассылок из бекапа for file in $Path/$Date/*; do Name=$(ls $file | sed -e 's/^.*\///') echo "Восстанавливаем список рассылки $Name" Result=$(/opt/zimbra/bin/zmprov cdl $Name) if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo "Восстановление участников рассылки $Name" FullName=$(ls $file) cat $FullName | while read account; do Result=$(/opt/zimbra/bin/zmprov adlm $Name $account) done echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]" echo fi done # Вычисление времени работы бекапа почтовых ящиков End_time=$(date +%s) Elapsed_time=$(expr $End_time - $Begin_time) Hours=$(($Elapsed_time / 3600)) Elapsed_time=$(($Elapsed_time - $Hours * 3600)) Minutes=$(($Elapsed_time / 60)) Seconds=$(($Elapsed_time - $Minutes * 60)) echo "Затрачено времени на восстановление списка рассылок : $Hours час $Minutes минут $Seconds секунд"
#!/bin/bash

#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа списка пользователей
Path="/home/jakonda/bkzm/lists"
# Название домена
Domain="jakondo.ru"
# Временный файл для работы скрипта
Temp=$Path"/temp"
echo "######################################################"
echo "# Восстановление из резервной копии списков рассылки #"
echo "######################################################"
echo ""
# Запрос даты, за какое число нужно восстановить бекап
read -p "Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): " Date
# Проверим наличия бекапов за указанную дату
if ! [ -d $Path/$Date ]; then
echo 'Нет бекапов на указанную дату... Завершаем работу скрипта.'
exit
fi
echo "Время начала восстановление списков рассылки - $(date +%T)"
# Запоминаем время начала восстановления
Begin_time=$(date +%s)
# Восстанавливаем списки рассылок из бекапа
for file in $Path/$Date/*; do
Name=$(ls $file | sed -e 's/^.*\///')
echo "Восстанавливаем список рассылки $Name"
Result=$(/opt/zimbra/bin/zmprov cdl $Name)
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo
echo "Восстановление участников рассылки $Name"
FullName=$(ls $file)
cat $FullName | while read account; do
Result=$(/opt/zimbra/bin/zmprov adlm $Name $account)
done
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на восстановление списка рассылок : $Hours час $Minutes минут $Seconds секунд"

 

В ходе выполнения скрипта восстанавливается рассылка из резервной копии и включение в нее участников. Пример вывода работы скрипта:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
######################################################
# Восстановление из резервной копии списков рассылки #
######################################################
Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): 30-01-2017
Время начала восстановление списков рассылки - 22:56:19
Восстанавливаем список рассылки test1@jakondo.ru [OK]
Восстановление участников рассылки test1@jakondo.ru
Восстанавливаем список рассылки test2@jakondo.ru [OK]
Восстановление участников рассылки test2@jakondo.ru
Затрачено времени на восстановление списка рассылок: 0 час 0 минут 58 секунд
###################################################### # Восстановление из резервной копии списков рассылки # ###################################################### Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): 30-01-2017 Время начала восстановление списков рассылки - 22:56:19 Восстанавливаем список рассылки test1@jakondo.ru [OK] Восстановление участников рассылки test1@jakondo.ru Восстанавливаем список рассылки test2@jakondo.ru [OK] Восстановление участников рассылки test2@jakondo.ru Затрачено времени на восстановление списка рассылок: 0 час 0 минут 58 секунд
######################################################
# Восстановление из резервной копии списков рассылки #
######################################################
Введите дату за какое число восстановить из бекапа (прим. 01-01-1985): 30-01-2017
Время начала восстановление списков рассылки - 22:56:19
Восстанавливаем список рассылки test1@jakondo.ru [OK]
Восстановление участников рассылки test1@jakondo.ru
Восстанавливаем список рассылки test2@jakondo.ru [OK]
Восстановление участников рассылки test2@jakondo.ru
Затрачено времени на восстановление списка рассылок: 0 час 0 минут 58 секунд

 

JUQwJTkyJUQwJUJFJUQxJTgyJTIwJUQxJTgyJUQwJUIwJUQwJUJBJUQwJUI4JUQwJUJDJTIwJUQxJTgxJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJFJUQwJUIxJUQwJUJFJUQwJUJDJTIwJUQwJUJDJUQxJThCJTIwJUQxJTgzJUQwJUI0JUQwJUJFJUQwJUIxJUQwJUJEJUQwJUJFJTIwJUQwJUI4JTIwJUQwJUI4JUQwJUJEJUQxJTg0JUQwJUJFJUQxJTgwJUQwJUJDJUQwJUIwJUQxJTgyJUQwJUI4JUQwJUIyJUQwJUJEJUQwJUJFJTIwJUQwJUI0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgwJUQwJUI1JUQwJUI3JUQwJUI1JUQxJTgwJUQwJUIyJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQwJUI4JTIwJUQwJUI4JTIwJUQwJUIyJUQwJUJFJUQxJTgxJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI4JUQwJUI3JTIwJUQwJUJEJUQwJUI4JUQxJTg1Lg==

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

Ответ на комментарий ЖакондаОтмена ответа
7 комментариев
  • Может поправите некорректные символы > и т.п…

  • актуален ли скрипт для 8.7?

    • Это ответ на комментарий Юра

      Не знаю, не пробовал для версии 8.7. В тестовых условиях попробуйте.

  • В скрипте Резервное копирование списка учетных записей
    в /opt/zimbra/bin/zmprov gdl $accounts_list | grep zimbraMailForwardingAddress: | awk {‘print $2’} > $Path/$Current_date/$accounts_l$ ошибка

    • Это ответ на комментарий grinnZ

      Копировал листинг из терминала, немного строка обрезалась, должно быть так /opt/zimbra/bin/zmprov gdl $accounts_list | grep zimbraMailForwardingAddress: | awk {‘print $2’} > $Path/$Current_date/$accounts_list

      Исправил

  • Спасибо! Весьма полезные скрипты!
    Было бы неплохо в скрипт «Резервное копирование списка учетных записей» вставить какой нить «прогресс», а то не совсем понятно, работает скрипт или завис, когда много почтовых ящиков!

    • Это ответ на комментарий hmuriy

      Может быть по возможности свободного времени доработаю его, прикручу индикатор выполнения.