Ось тут існує відмінний безкоштовний скрипт для резервного копіювання віртуальних машин на VMWare ESXi сервері, причому він працює на free версії ESXi 4 і 5 версій без установки будь-яких додаткових приблуд типу VMA і т.п. Проблема тільки в тому, що інструкція там не зовсім точна, тому я довго возився з цим скриптом, щоб він все-таки заробив саме в автоматичному режимі ...
Детально расспісивать як пріконнектіца до ESXi по SSH я не буду, розпишу лише кроки налаштування, з якими все запрацювало у мене.
Спочатку качаємо скрипт за посиланням вище і заливаємо на сервер, заливати потрібно прямо в архіві! Найпростіше це зробити через vSphere Client. У мене на сервері два диска - на одному працюють машини, а на іншому лежать всякі iso-образи і самі бекапи. Називаються диски відповідно datastore1 і datastore2. Все бекапи, скрипт і конфіги лежать в папці backup. Ще зверніть увагу, що назви файлів і папок чутливі до регістру, тому якщо папка називається backup. а ви пишіть в скрипті Backup. то працювати не буде!
Конфігурація Cron (для автоматичного запуску скрипта)
- Дати дозвіл на запис в файл chmod + w / var / spool / cron / crontabs / root
- Додаємо через vi рядок в / var / spool / cron / crontabs / root
15 0 * / 3 * * /vmfs/volumes/datastore2/backup/StartBackup.sh
Запуск в 00:15 ночі кожні три дні. У мене часовий пояс +4 Москва, тобто насправді скрипт запускається о 4:15 ранку, це буде видно по даті зміни балки через vSphere. Само собою час і періодичність можете вибрати інші. - Тепер потрібно виконати дві команди, щоб перезапустити cron
kill $ (cat /var/run/crond.pid)
crond - Додати за допомогою vi 3 рядки в самий кінець файлу /etc/rc.local
Це потрібно, тому що після перезавантаження сервера вміст файлу з 2го пункту з запуском нашого скрипта буде відновлено до попереднього стану, тому в rc.local вказуємо, що після перезавантаження потрібно виконати наступні команди - зупинка cron, додавання рядка для автоматичного запуску скрипта і запуск cron .
/ Bin / kill $ (cat /var/run/crond.pid)
/ Bin / echo "15 0 * / 3 * * /vmfs/volumes/datastore2/backup/StartBackup.sh» >> / var / spool / cron / crontabs / root
crond - Тепер виконаємо виконати команду /sbin/auto-backup.sh. щоб упевнитися, що всі наші зміни збереглися.
Невелике пояснення - чому потрібно створювати скрипт StartBackup.sh. а не просто взяти і його вміст помістити в / var / spool / cron / crontabs / root. Існує якесь обмеження на розмір цього файлу і частина рядків в ньому просто не буде працювати, хоча можете спробувати зробити і так, спочатку у мене працювало, але потім, мабуть, вийшли якісь патчі і перестало. Більш того, це просто зручніше - якщо буде потрібно змінити розклад резервного копіювання, то ви просто керуєте файл StartBackup.sh і не потрібно танців з бубном навколо cron з його перезапуском і внесенням тих же змін в /etc/rc.local.
PS: Час іде, все змінюється, сам скрипт змінюється, ESXi5 вже вийшов, так що десь, щось може вже і не працювати 🙂
Додаток: Синтаксис cron
Команда cron виглядає ось так:
1 2 3 4 5 /vmfs/volumes/datastore2/backup/StartBackup.sh
- Запуск в 5 хвилин на першу ночі, кожен день
5 0 * * * /vmfs/volumes/datastore2/backup/StartBackup.sh - Запуск о 2:15 кожен перший день місяця
15 14 1 * * /vmfs/volumes/datastore2/backup/StartBackup.sh - Запуск о 22:00 кожного робочого дня
0 22 * * 1-5 /vmfs/volumes/datastore2/backup/StartBackup.sh - Запуск в 23 хвилини після півночі і далі кожні дві години (2:23, 4: 23 ... і т.д.), кожен третій день
23 0-23 / 2 * * * / 3 /vmfs/volumes/datastore2/backup/StartBackup.sh