- Главная... arrow - Статьи... arrow VmWare-Server скрипт бэкапа виртуальных машин

#Записки о Unix/Linux/BSD/Solaris

VmWare-Server скрипт бэкапа виртуальных машин
Автор Охальников Олег   
09:02:2011 г.
Как и было обещано в предыдущей статье "VmWare-Server управление машинами из консоли с помощью vmrun", в данной выкладываю скрипт, выполняющий бэкап виртуальной машины (в данном примере машины - Test). Небольшое отступление, т.к. некоторые длинные строки не помещаются в формате сайта, для них сделаны переносы с помощью символа "==>". При копировании скрипта, символы переноса надо убрать, а команду записать в одну строку. Скрипт хорошо комментирован, поэтому требует минимум пояснений. Основные параметры задаются в самом начале скрипта. Задаем  логин пароль для администратора виртуальных машин, администратора гостевой ОС, в качестве которой выступает ОС W2k3. Сам скрипт размещаем в директории /root/script/vmbackup (необходимые директории нужно создать). У меня скрипт называется vmbackuptest.sh, делаем скрипт исполняемым, права только владельцу root, остальным запрещаем все - это важно, т.е. chmod 700. Скрипт ведет подробный лог своих действий (содержание лога ниже), путь для файлов логов /root/script/vmbackup/log, в директории будут создаваться файлы следующего вида: 2011-02-09.log (в скрипте этого нет, но легко добавить команду, которая хранит нужное количество логов или сжимает старые логи), которые отправляются администратору на e-mail. В данном примере папка для виртуальных машин - стандартная: /var/lib/vmware/Virtual Machines/, а сама машина находится здесь: /var/lib/vmware/Virtual Machines/Test. Под избыточные бэкапы в системе выделен отдельный HDD, директория с бэкапами расположена по этому пути: /mnt/backup/vmbackup (нужно создать).В данной папке автоматом создается папка формата 2011-02-09, в которую копируются виртуальные машины, в данном примере будет создано следующее: /mnt/backup/vmbackup/2011-02-09/Test/. Итак, сам скрипт в первом приближении, будем считать альфа-альфа (хорошо написанный код не гарантирую, но скрипт выполняет нужные действия, любые предложения по улучшению, принимаются):

#!/bin/sh
# -----------------------------------
# Created and Support Ohalnikov Oleg
# Site: http://unixa.ru
# Created: 2011-02-07
# -----------------------------------
# Администратор сервера виртуальных машин:
USER=login
PASS=password
# Пользователь виртуальной машины:
USERVM=login
PASSVM=password
# Имя хоста витртуальной машины:
HOSTVM=Test.host.loc
# Краткое имя:
VM=Test
# E-mail администратора:
MAILADM= Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
# Директория для логов:
DIRLOG=/root/script/vmbackup/log
# Директория с виртуальной машиной:
DIRVM='/var/lib/vmware/Virtual Machines/Test'
# Директория для бэкапов:
DIRVMBAC=/mnt/backup/vmbackup
# Дата - время:
DATE=`date '+%Y-%m-%d'`
TIME=`date '+%H:%M:%S'`

echo "$DATE $TIME Запуск резервного копирования виртуальной машины ==>
$HOSTVM." > $DIRLOG/$DATE.log;
# Убедимся, что виртуальная машина действительно запущена.
if [ `vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
list | grep $VM | wc -l` = "0" ]
   then
      echo $DATE $TIME "Виртуальная машина $HOSTVM не была ==>
      запущена." >> $DIRLOG/$DATE.log;
      echo "$DATE $TIME Список запущенных виртуальных ==>
      машин:" >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
      list >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      echo "$DATE $TIME Начато резервное копирование файлов ==>
      виртуальной машины $HOSTVM." >> $DIRLOG/$DATE.log;
      if [ ! -e "$DIRVMBAC/$DATE" ]; then
      mkdir $DIRVMBAC/$DATE
      fi
      cp -arxp "$DIRVM"/ $DIRVMBAC/$DATE/;
      echo "$DATE $TIME Резервное копирование файлов ==>
      виртуальной машины $HOSTVM - завершено." >> $DIRLOG/$DATE.log;
   else
      echo "$DATE $TIME Список запущенных виртуальных ==>
      машин:" >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
      list >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      echo "$DATE $TIME Послана команда на выключение виртуальной ==>
      машины $HOSTVM." >> $DIRLOG/$DATE.log;
      vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
      -gu $USERVM -gp $PASSVM runProgramInGuest  ==>
      "[standard] $VM/$VM.vmx" "C:\stop\stop.cmd";
      # Cкрипт stop.cmd находится по указанному пути на ОС w2k3 
      # (виртуальная машина) имеет следующее содержание:
      # c:\windows\system32\shutdown /s /t 10 /f /d p:1:1 /c "backup"
      # позволяет корректно выключить w2k3 сервер через 10 секунд, 
      # при этом посылает уведомления на все консоли и делает запись 
      # в системный журнал с пометкой "backup". 

      # Цикл выполняется до тех пор, пока PID виртуальной машины существует.
      while [ `ps waux | grep vmware-vmx | grep $VM | awk '{print }'` = "1" ]
      do
         sleep 60
      done
      # Еще раз убедимся, что виртуальная машина действительно остановлена.
      if [ `ps waux | grep vmware-vmx | grep $VM | awk '{print }'`  = "1" ]
         then
            echo "$DATE $TIME Виртуальная машина $HOSTVM не завершила ==>
            свою работу." >> $DIRLOG/$DATE.log;
            echo "$DATE $TIME Резервное копирование ==>
            прервано." >> $DIRLOG/$DATE.log;
            echo "BackupVM $HOSTVM $DATA Error" | mail -s "BackupVM ==>
            $HOSTVM $DATA Error" $MAILADM < $DIRLOG/$DATE.log;
            exit 0;
        else
            echo "$DATE $TIME Виртуальная машина $HOSTVM ==>
            остановлена." >> $DIRLOG/$DATE.log;
            echo "------" >> $DIRLOG/$DATE.log;
            vmrun -T server -h https://localhost:8333/sdk -u $USER -p ==>
            $PASS list >> $DIRLOG/$DATE.log;
            echo "------" >> $DIRLOG/$DATE.log;
            echo "$DATE $TIME Начато резервное копирование файлов ==>
            виртуальной машины $HOSTVM." >> $DIRLOG/$DATE.log;
            if [ ! -e "$DIRVMBAC/$DATE" ]; then
            mkdir $DIRVMBAC/$DATE
      fi
      cp -arxp "$DIRVM"/ $DIRVMBAC/$DATE/;
      echo "$DATE $TIME Резервное копирование файлов виртуальной ==>
      машины $HOSTVM - завершено." >> $DIRLOG/$DATE.log;
   fi
fi
# Сравниваем MD5 файлов оригиналов и бэкапов
echo "$DATE $TIME Контрольные суммы файлов. Сначала ==>
оригинал, потом копия:" >> $DIRLOG/$DATE.log;
echo "------" >> $DIRLOG/$DATE.log;
find "$DIRVM" -type f -exec md5sum {} \; | sort >> $DIRLOG/$DATE.log;
echo "------" >> $DIRLOG/$DATE.log;
find $DIRVMBAC/$DATE/$VM -type f -exec md5sum {} \; | ==>
sort >> $DIRLOG/$DATE.log;
echo "------" >> $DIRLOG/$DATE.log;

echo "$DATE $TIME Запуск виртуальной машины $HOSTVM" >> $DIRLOG/$DATE.log;
vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
start "[standard] $VM/$VM.vmx";

# Выполняем проверку старта вирт машины.
if [ `ps waux | grep vmware-vmx | grep $VM | awk '{print }' | wc -l` = "0" ]
   then
      echo $DATE $TIME "Error Не удалось запустить виртуальную ==> 
      машину $HOSTVM." >> $DIRLOG/$DATE.log;
      echo $DATE $TIME "Попробуйте выполнить запуск ==>
      самостоятельно." >> $DIRLOG/$DATE.log;
      echo $DATE $TIME "Список запущенных на текущий ==>
      момент виртуальных машин:" >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      vmrun -T server -h https://localhost:8333/sdk -u $USER ==>
      -p $PASS list >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      echo "$DATE $TIME THE END Error START ==>
      $HOSTVM" >> $DIRLOG/$DATE.log;
      echo "BackupVM $HOSTVM $DATA" | mail -s "BackupVM ==>
      $HOSTVM $DATA" $MAILADM < $DIRLOG/$DATE.log
      exit 0;
   else
      echo "------" >> $DIRLOG/$DATE.log;
      vmrun -T server -h https://localhost:8333/sdk -u $USER ==>
      -p $PASS list >> $DIRLOG/$DATE.log;
      echo "------" >> $DIRLOG/$DATE.log;
      echo "$DATE $TIME THE END ." >> $DIRLOG/$DATE.log;
      echo "BackupVM $HOSTVM $DATA" | mail -s "BackupVM ==>
      $HOSTVM $DATA" $MAILADM < $DIRLOG/$DATE.log
fi

exit 0;

В качестве команды на останов виртуальной машины используется:

vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS ==>
-gu $USERVM -gp $PASSVM runProgramInGuest ==>
 "[standard] $VM/$VM.vmx" "C:\stop\stop.cmd";

Есть резонный вопрос, почему бы не воспользоваться suspend:

# vmrun -T server -h https://localhost:8333/sdk -u $USER-p $PASS ==>
suspend "[standard] $VM/$VM.vmx"

Команда много проще, и не требует дополнительного скрипта на гостевой машине. Первое объяснение - дополнительный скрипт ведет записи в журнале гостевой ОС, по которым видно, что это плановый останов. Ну и второе, после suspend, start виртуальной машины не смог выполнится самостоятельно и потребовалось ручное вмешательство, что не приемлемо, все должно происходить автоматом.

Теперь о логе. Формат лога может выглядеть по разному, в зависимости была ли запущена виртуальная машина на момент начала выполнения бэкапа или была остановлена. Возможные ошибки так же фиксируются в логе. Ниже приведу лог, нормального - полного цикла выполнения бэкапа. Т.е. сначала останавливаем виртуальную машину, потом выполняем копирование файлов, потом считаем MD5 суммы оригиналов и копий, запускаем виртуальную машину. Вот что будет в логе и что придет администратору на почту:

2011-02-09 12:19:09 Запуск резервного копирования виртуальной ==>
машины Test.host.loc.
2011-02-09 12:19:09 Список запущенных виртуальных машин:
------
Total running VMs: 3
[standard] 1/1.vmx
[standard] 2/2.vmx
[standard] Test/Test.vmx
------
2011-02-09 12:19:09 Послана команда на выключение виртуальной машины ==>
Test.host.loc.
2011-02-09 12:19:09 Виртуальная машина Test.host.loc остановлена.
------
Total running VMs: 2
[standard] 1/1.vmx
[standard] 2/2.vmx
------
2011-02-09 12:19:09 Начато резервное копирование файлов виртуальной ==>
машины Test.host.loc.
2011-02-09 12:19:09 Резервное копирование файлов виртуальной машины ==>
Test.host.loc - завершено.
2011-02-09 12:19:09 Контрольные суммы файлов. Сначала оригинал, потом копия:
------
04435b09d0fe119ed0ebfdea562ed52b ==>
/var/lib/vmware/Virtual Machines/Test/Test-s002.vmdk
051298eab4f73dc731302247b29ad653 ==>
/var/lib/vmware/Virtual Machines/Test/Test-s004.vmdk
051298eab4f73dc731302247b29ad653 ==>
/var/lib/vmware/Virtual Machines/Test/Test-s005.vmdk
0ea782d0ff54ef3af023f891d66d9f90 ==>
/var/lib/vmware/Virtual Machines/Test/Test-s001.vmdk
1a5edc35e457ad87850f53c7aabc1803 ==>
/var/lib/vmware/Virtual Machines/Test/vmware.log
20d99f0d6f4c892fbe785adb840e9fa4 ==>
/var/lib/vmware/Virtual Machines/Test/Test.vmxf
2be4f310322c6e85ccc1dee2112cfe36 ==>
/var/lib/vmware/Virtual Machines/Test/Test.vmx
3797261664db7f7dfde7f9fe0351e8f4 ==>
/var/lib/vmware/Virtual Machines/Test/vmware-1.log
40b75369f9e60caf8e462a9adf2cbbc9 ==>
/var/lib/vmware/Virtual Machines/Test/Test-s007.vmdk
87901e3cfc19121a3d37430de1bb601b ==>
/var/lib/vmware/Virtual Machines/Test/Test.nvram
9942f9d7f6659209c71ad981a7259812 ==>
/var/lib/vmware/Virtual Machines/Test/Test.vmdk
9a9c84b504bdc087e24818c13e00564c ==>
/var/lib/vmware/Virtual Machines/Test/vmware-2.log
a06d79b1a6ec5bd762197633988ab4e2 ==>
/var/lib/vmware/Virtual Machines/Test/vmware-0.log
d41d8cd98f00b204e9800998ecf8427e ==>
/var/lib/vmware/Virtual Machines/Test/Test.vmsd
df6f2da53ea84856e5a5511dabe79bc9 ==>
/var/lib/vmware/Virtual Machines/Test/Test-s003.vmdk
eba99f23b4e2823fb9c4b270153883cf ==>
/var/lib/vmware/Virtual Machines/Test/Test-s006.vmdk
------
04435b09d0fe119ed0ebfdea562ed52b ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s002.vmdk
051298eab4f73dc731302247b29ad653 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s004.vmdk
051298eab4f73dc731302247b29ad653 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s005.vmdk
0ea782d0ff54ef3af023f891d66d9f90 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s001.vmdk
1a5edc35e457ad87850f53c7aabc1803 ==>
/mnt/backup/vmbackup/2011-02-09/Test/vmware.log
20d99f0d6f4c892fbe785adb840e9fa4 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test.vmxf
2be4f310322c6e85ccc1dee2112cfe36 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test.vmx
3797261664db7f7dfde7f9fe0351e8f4 ==>
/mnt/backup/vmbackup/2011-02-09/Test/vmware-1.log
40b75369f9e60caf8e462a9adf2cbbc9 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s007.vmdk
87901e3cfc19121a3d37430de1bb601b ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test.nvram
9942f9d7f6659209c71ad981a7259812 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test.vmdk
9a9c84b504bdc087e24818c13e00564c ==>
/mnt/backup/vmbackup/2011-02-09/Test/vmware-2.log
a06d79b1a6ec5bd762197633988ab4e2 ==>
/mnt/backup/vmbackup/2011-02-09/Test/vmware-0.log
d41d8cd98f00b204e9800998ecf8427e ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test.vmsd
df6f2da53ea84856e5a5511dabe79bc9 ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s003.vmdk
eba99f23b4e2823fb9c4b270153883cf ==>
/mnt/backup/vmbackup/2011-02-09/Test/Test-s006.vmdk
------
2011-02-09 12:19:09 Запуск виртуальной машины Test.host.loc
------
Total running VMs: 3
[standard] 1/1.vmx
[standard] 2/2.vmx
[standard] Test/Test.vmx
------
2011-02-09 12:19:09 THE END.

Для автоматического выполнения копирования виртуальной машины, скрипт помещаем в crontab, например выполнять каждый день в 22:00:

0 22 * * * /root/script/vmbackup/vmbackuptest.sh

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

На этом все.

Материал подготовил:
Охальников Олег aka H@wk!

 

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code


Просмотров: 39972

  Коментарии (25)
RSS комментарии
 1 Написал(а) alex, в 14:20 25.04.2011
Спасибо. Бекапы следует выполнять на другие машины в сети, иначе теряется смысл выполнения бекапа.
 2 Написал(а) H@wk!, в 15:51 21.04.2011
SCP безопасный, по скорости передачи, зависит от сети. 
Есть большой смысл в копировании VM по сетке? Можно использовать схему 2 HDD RAID + 1 HDD backup, т.е. данные всегда останутся. Если отказывает железо и при условии, что серверная под боком, всегда можно перенести актуальную копию VM на другой сервер в достаточно короткие сроки.
 3 Написал(а) alex, в 15:36 21.04.2011
Спасибо! :)  
Что касается скорости передачи данных: объем файлов большой, порядка 50gb. Какой из способов наиболее подходящий по критериям: скорость!!!, отказоустойчивость, безопасность.
 4 Написал(а) H@wk!, в 16:20 20.04.2011
Вариантов много, можете попробовать копировать с помощью SCP например: http://unixa.ru/lan-net/kak-skopirovat-faylyi-s-udalennogo-pk-esli-est-tolko-ssh.html 
-- 
в качестве примера для копирования dir: 
$ scp -r /etc/dir user@host:/etc 
Скопирует локальную директорию /etc/dir на удалённый хост в директорию /etc 
-- 
Если по ssh не стандартный порт, надо это указывать через ключ. Чтобы пропустить ввод пароля, надо настроить авторизацию ssh по ключам (на сайте посмотрите это есть). 
Так же можете посмотреть в сторону Rsync.
 5 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 15:13 20.04.2011
Доброго времени суток! 
Уважаемый Олег, пишу Вам по поводу Вашей статьи: 
http://unixa.ru/shell/vmware-server-skript-bekapa-virtualnyih-mashin.html 
 
Я уже обращался вчера по поводу ошибки цикла while. Проблему решил, спасибо за быструю помощь! 
 
Возник ещё вопрос: возможно ли реализовать копирование файлов виртуальных машин по ftp на другую тачку в локальной сети. если да, подскажите пример кода. Смысл в том, что в случае аппаратной ошибки сервака (железка полетела) можно было опперативно запустить виртуальные машины на другой тачке в сетке, на время ремонта! 
 
еще раз простите, быть может ерунду спросил, но я только учусь))) 
заранее спасибо 
 
alex
 6 Написал(а) H@wk!, в 17:08 19.04.2011
По поводу отправки на e-mail в комментариях где-то было, нужно ставить то, что будет отправлять через mail сервер. Mail сервер, тоже надо иметь свой, т.к. отправлять через чужой в 99% нельзя, из-за запрета релея. 
 
Что касается while, вроде не было чтобы не останавливало, хотя всякое может быть. Посоветую сделать отладочную копию скрипта бэкапа и в нем оставить только строки до конца цикла while. Запускаем, открываем вторую консоль, где формируется лог, смотрим его интерактивно tail -f и в третьей консоли проверяем PID процесса, командой из цикла:  
ps waux | grep vmware-vmx | grep $VM | awk '{print }' 
только замените переменную $VM - на реальное значение. Возможно вы в начале скрипта VM не верно указали (скорее всего).
 7 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 16:38 19.04.2011
привет, хороший скрипт!!! 
Работает с ошибками, конкретно цикл while (проверка PID виртуальной машины). Проверку не проходит, начинает копировать до того как виртуалка корректно выключится! 
 
кусок лога: 
 
2011-04-19 16:10:31 Запуск резервного копирования виртуальной машины WinXP. 
2011-04-19 16:10:31 Список запущенных виртуальных машин: 
------ 
Total running VMs: 1 
[VMs] WinXP/WinXP.vmx 
------ 
2011-04-19 16:10:32 Послана команда на выключение виртуальной машины WinXP. 
2011-04-19 16:10:44 Виртуальная машина WinXP остановлена. 
------ 
Total running VMs: 1 
[VMs] WinXP/WinXP.vmx 
------ 
2011-04-19 16:10:44 Начато резервное копирование файлов виртуальной машины WinXP. 
2011-04-19 16:16:17 Резервное копирование файлов виртуальной машины WinXP - завершено. 
 
Может я что-то не так сдела...((((( 
Помогите новичку...в юниксах 2 недели((((( темный лес! 
С отправкой на электронку тоже проблемы!
 8 Написал(а) H@wk!, в 12:33 08.03.2011
В скрипт внес правки, плюс убрал строки с удалением старых файлов логов и папок бэкапов. Эти строки вынес в отдельный скрипт, т.к. при бэкапе нескольких виртуальных машин, в каждом дублировать эти строки нет смысла. Что не исправлено, это переменная $TIME, ее надо указывать по тексту в явном виде, иначе в переменную записывается время один раз, файл лога будет фиксировать одно и тоже время.  
В ближайшее время выложу архив со скриптами.
 9 Написал(а) H@wk!, в 10:41 05.03.2011
>> можно ли как то дополнить скрипт для возможности бэкапа линуксовых машин? 
--- 
Самый простой, но не безопасный скажем так способ был описан тут (речь, о локальной сети, поэтому вполне применим, сервер не имеет доступа и интернет): 
http://unixa.ru/linux/sshpass-non-interactive-ssh-password-authentication.html 
 
Чтобы выключить удаленный линукс сервер: 
# sshpass -p пароль ssh Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script -p порт "shutdown -P now" 
-p порт - если стандартный, то указывать не надо. 
На удаленном сервере  
1 - должен быть рут 
2 - рутом можно заходить по ssh 
3 - перед тем как выполнить команду подключитесь первый раз ssh Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script -p порт (нужно чтобы принять сертификат). 
-p порт - если стандартный, то указывать не надо. 
 
Этот способ можно проделать от простого пользователя, но ему надо в sudo прописать разрешение на выполнение команды shutdown -P now, почитайте, про sudo я тоже писал. 
 
Безопасный метод, это настроить безпарольный вход по ssh на основе сертификатов.
 10 Написал(а) H@wk!, в 11:28 02.03.2011
Вы можете использовать любую конструкцию, в том числе написать свои проверки. Повторяющиеся куски кода лучше вынести в функции и т.д.  
Данный скрипт предоставляется AS_IS, по мере возникновения свободного времени будут вноситься правки.
 11 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 11:04 02.03.2011
зачем использовать конструкцию (которая не работает) 
if [ `ps waux | grep vmware | grep $VM | awk '{print}' ] 
 
если можно проверенным способом обратившись к vm-серверу 
if [ `vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS list | grep $VM | wc -l` = "0" ] 
 
чем первая конструкция лучше?
 12 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 09:29 02.03.2011
if [ `vmrun -T server -h https://localhost:8333/sdk -u $USER -p $PASS list | grep $VM | wc -l` == "0" ] 
 
не работает, необходим один знак =
 13 Написал(а) H@wk!, в 18:00 01.03.2011
-type d только каталоги должен затрагивать, пример приводил по смене прав только на каталоги: 
find /dir -type d -exec chmod 755 {} \; 
а так на файлы будет: 
find /dir -type f -exec chmod 644 {} \; 
Должно бы срабатывать, проверю чуть позже. Спасибо.
 14 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 17:23 01.03.2011
опрератор -maxdepth должен помоч
 15 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 17:17 01.03.2011
все равно не получется, удаляются каталоги в папке с виртуальной машиной, необходимо чтобы find искал каталог только в корне DIRVMBAC и глубже не лез, в данный момент он ищет начиная с каталога DIRVMBAC и дальше ищет внутри.
 16 Написал(а) H@wk!, в 16:24 01.03.2011
Вот так сначало попробуйте: 
find дира_с_бекапами -type d -mtime +5 -print 
-type d - это только каталоги. 
если будет правильно выводить, измените в скрипте на  
find $DIRVMBAC/* -type d -mtime +5 -exec rm {} \;
 17 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 15:56 01.03.2011
в скрипте не правельно работает вот эта часть: 
# Храним 5 бэкапов: 
find $DIRVMBAC/* -mtime +5 -exec rm {} \; 
 
получается если в папке с ВМ есть каталоги или файлы датой с разницей более 5 дней скрипт их убивает в бэкапе, а он вообще не должен смотреть в папку с ВМ он должен на каталог выше смотреть.
 18 Написал(а) H@wk!, в 09:43 28.02.2011
Самый простой способ, это заставить скрипт немного подождать после выключения вирт машины. Для этого после команды выключения добавьте sleep 10 - ждет 10 сек или больше ставьте.
 19 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 14:43 25.02.2011
все получилось спасибо за подсказку! 
поставил mailutils 
поставил nullmailer, настроил его для почтового сервера, на самом сервере настроил релей. 
лог выполнения скрипта пришел ))) 
замечательный скрипт! 
 
как по поводу убрать копирования в бэкап файлов с расширением vmem? по логике сначало ВМ должна выключится потом файл vmem исчезает из каталога, и только потом запускется копирование. при чем у меня файл vmem проподает не сразу после выключения ВМ, а где то через секунды 2-5 взависимости от тормазов на самой хост машине.
 20 Написал(а) H@wk!, в 13:14 25.02.2011
У меня за отправку отвечает nullmailer ( http://unixa.ru/lan-net/nullmailer-peresyilaem-pochtu.html). Он отправляет почту через почтовый сервер находящийся также в локальной сети (прописан в nullmailer) проблем нет т.к. все в локалке и на почтовом сервере прописаны доверия, т.е. релей в локальной сети разрешен. Если пытаетесь отправлять через внешний почтовый сервер то, как правило, релей всегда запрещен! и выполнить пересылку почты через этот сервер не получиться. Надо делать разрешения на удаленном почтовом сервере, через который пытаетесь слать почту. Тема очень обширная, тут надо знать, как у вас все реализовано. Если с уведомлениями не выходит - не делайте их, есть лог, можно его контролировать. 
-- 
Насчет проверки отправки, можно сделать так: 
Разбить скрипт на части, так и делается при возникновении, каких либо проблем, т.е. не отправляется почта, берем команду: 
echo "BackupVM $HOSTVM $DATA" | mail -s "BackupVM ==> 
$HOSTVM $DATA" $MAILADM < $DIRLOG/$DATE.log, немного переделываем ее, с указанием вместо переменных реальных значений, например так: 
echo "111111" | mail -s "111111" Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script  
пробуем выполнить ее в консоли, и контролируем лог mail: 
# tail -f /var/log/mail.log 
Если отправляете через свой же почтовый сервер, то на нем также контролируйте лог, на получение письма.
 21 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 12:26 25.02.2011
на почту письма всё равно не идут, из-за того что интернет находится за прокси сервером. как то можно это решить? как и где прописать использование прокси сервера для команды отправки почты? 
 
cp: cannot stat `/home/user/VM/WinXP-TEST/564d2943-2d96-fbdb-01d9-d0bbb7209e0f.vmem': No such file or directory 
- это файл ОЗУ виртуальной машины. Ошибка возникает на момент сравнения контрольных сумм из-за того что виртуальная машина выключена и файл ОЗУ просто отсутствует, а в резервной копии он есть!  
следовательно необходимо дабавить в скрипт исключения на копирование файла типа vmem.
 22 Написал(а) H@wk!, в 16:44 24.02.2011
в 18 строке там может пробельчик закрался, должно быть без пробелов: 
MAILADM= Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script  
Потом, про директории, я писал, где что ищет этот скрипт, по каким путям. Если пути другие, а они другие "cp: cannot stat `/home/user/VM/WinXP-TEST/564d2943-2d96-fbdb-01d9-d0bbb7209e0f.vmem': No such file or directory" понятно команда копирования ни чего не видит. 
 
По второму вопросу, Linux виртуальные машины? Можно их стопить думаю так же, как и для вин машин, т.е. юзер пасс гостевой машины, заходим на нее и выполняем sh скрипт на останов. Только если вирт машина не в локалке, то это не секурно.
 23 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 16:30 24.02.2011
можно ли как то дополнить скрипт для возможности бэкапа линуксовых машин? я в скриптах не силён, но думаю задача вполне решаемая, типа зайти по ssh выполнить команду sudo shutdown и т.д....
 24 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 16:23 24.02.2011
скрипт отрабатывает, но даёт некоторые ошибку и не посылает письмо на почту. 
вот то что пишет на консоль во время выполнения скрипта: 
root@VMWare:/home/user/qqq# sh vmbackuptest.sh 
vmbackuptest.sh: 18: Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script : not found 
[: 82: 1: unexpected operator 
[: 82: root: unexpected operator 
[: 82: root: unexpected operator 
cp: cannot stat `/home/user/VM/WinXP-TEST/564d2943-2d96-fbdb-01d9-d0bbb7209e0f.vmem': No such file or directory 
[: 112: 1: unexpected operator 
vmbackuptest.sh: 112: mail: not found 
root@VMWare:/home/user/qqq#
 25 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 17:23 21.02.2011
Привет, отличный скрипт, я обязательно попробую его в ближайшее время
 
Скрипт простого мониторинга с отправкой результатов на почту (на примере gmirror). »

#COMMENT

Блокируем Ylmf-pc на Exim, Bru...
Благодарю за кучу уцелевших нервов:) постоянно приходилось б...
30/05/17 00:02 More...
By Mus

Установка даты и времени в кон...
Спасибо
12/05/17 17:49 More...
By dushka

Раскладка в rdesktop
Огромное спасибо!
28/04/17 14:01 More...
By Виктор

Аутентификация средствами Apac...
подскажите как писать пороль цифры ?пж! :sigh
28/03/17 13:06 More...
By Лиза

Logwatch - мониторинг журналов...
Отлично, очень не хватало. Автору большое спасибо, пиши еще.
25/01/17 02:44 More...
By Gregg

Сейчас на сайте находятся:
3 гостей