Титла: Cron script for backup Публикувано от: ivo_18 в Mar 12, 2012, 19:14 Здравейте,
Понеже изобщо не съм на ясно с писането на скриптове, искам да попитам как мога да създам и как ще изглежда скрипт в който да има въведена команда за копиране на една директория която се намира на един сървър, като копирането да се извърши върху една локална машина, която да ползвам за бекъп. Питането ми е продиктувано от тази тема --> http://www.linux-bg.org/forum/index.php?topic=42767.new#new Положението е следното. Да речем че сървъра на който ми се намира фолдъра който искам да копирам всеки ден в 01:00 ч. сутринта, е с IP: 192.168.0.150. Но на този сървър е инсталиран EXSi 5.0 който явно няма cron demon и crontab на него, поне ако по подразбирането трябва crontab-a да бъде в /etc, то на ESXi 5.0 го няма. За това, съм решил да използвам друга машина на която има линукс - openSUSE, където crontab присъства в /еtc Ta в машината с openSUSE (192.168.0.160) където може да се изпълнявам cron и да се редактира crontab-a, ми се иска да мога да копирам директория от сървър ЕSXi (192.168.0.150) на локална windows-ка машина с IP: 192.168.0.170 До колкото разбрах, командата която трябва да се изпълнява е scp -r, но останалата работа с настройките, не ми стана ясна. Пътя до фолдъра който искам да копирам и който се намира на ESXi (192.168.0.150) e: /vmfs/volumes/IvoWork/Test_Machine И това искам да се копира всяка вечер в 01:00 ч. на локалната windows-ка машина (192.168.0.170), като мястото където ми се иска да бъде копирана директорията е: D:\Backup_Test_Machine Нямам идея как може да се изпълни това чрез скрипт, който да седи на машината на която има openSUSE (192.168.0.160) Някой може ли да помогне, че съм го закъсал доста. Предварително благодаря. Титла: Re: Cron script for backup Публикувано от: dejuren в Mar 13, 2012, 03:43 Значи като начало погледни /var/spool/cron/crontabs/root, което би трябвало да се намира крон за ESXi 5.0 (ESXi е просто преработен РедХат). Ако да елиминираме посредника и може да работим само с виндовс и ESXi. Следваща стъпка е какъв сървър работи на твоя виндовс? Споменаваш scp, което предполага ssh сървър, което пък аз мисля че едва ли си инсталирал. Затова ще те препратя към нещо, което със сигурност работи - виндовс споделяне (CIFS/Samba). Как да монтираш директорията от виндовс във твоя сървър е описано тук: http://www.linuxquestions.org/questions/linux-newbie-8/bash-script-to-copy-files-to-samba-share-653093/ . След което копираш /vmfs/volumes/IvoWork/Test_Machine в точката на монтиране, и размонтираш. В най-общи линии това ще изглежда така:
Код: #!/bin/bash Титла: Re: Cron script for backup Публикувано от: b2l в Mar 13, 2012, 09:18 rsync-remotehost-backups.sh:
Код cron (за backup всеки ден в 5 сутринта): Код или (за backup всеки петък в 5 сутринта): Код
Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 13, 2012, 13:40 Много благодаря за навигирането във ESXi
Намерих root файла, който изглежда така: /var/spool/cron/crontabs # vi root #min hour day mon dow command 1 1 * * * /sbin/tmpwatch.py 1 * * * * /sbin/auto-backup.sh 0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py На локалната машина на която искам да правя бекъп-а, е инсталиран Windows XP. На нея имам и инсталиран SSH Secure Shell Client. Сега, някои неща не са ми ясно, като например: Какво представлява това: /mnt/remote_smb_share -o Това кой път е? Какво представлява това: sleep 10 Какво се изпълнява с него? По отношение на sh файла: rsync-remotehost-backups.sh: Къде, в коя директория да го запазя? А относно кода, какво представлява: thishost-rsync-key Това паролата на сървъра от който ще копирам директорията ли трябва да бъде? $RSYNC -az -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH - Какво се изпълнява с това? Съжалявам, че питам такива неща, но съм много бос по тях. Титла: Re: Cron script for backup Публикувано от: dejuren в Mar 14, 2012, 00:17 За сведение
Здрасти, Така, значи вече имаш всички парчета, остава да ги сглобиш в едно. Вземам за отправна точка машината с openSUSE. На нея монтираш директорията от виндовс от моя пост, след което правиш rsync от поста на b2l. От това което прочетох не си я "закъсал доста", а просто си доста начинаещ :) В този случай има два начина - някой да направи всичко точка по точка, или да ти се помогне с необходимата информация, за да се справиш сам. Аз лично предпочитам втория метод. И така: http://wiki.ubuntuusers-bg.org/doku.php?id=firststeps -> "Ubuntu - пълен новобранец (За тези които нищо не разбират)" и "Работа с терминала". Това за отскок. Сега малко ще поотговарям на въпроси: Цитат /mnt/remote_smb_shareПътят в който монтираш споделената директория на виндовс Цитат sleep 1010 сек пауза между две команди. Помага за сигурно завършване на предишната команда (mount) Цитат rsync-remotehost-backups.sh:Желателно в /usr/local/sbin Цитат thishost-rsync-keyНе е парола, това е ключ. Може да си го представиш и като парола с дължина няколкостотин символа. Обменя се автоматично в началото на ssh връзка, след което ако този начин не е успешен потребителят се пита и за парола. Затова и свързването с ключ е по-сигурно (брут-форс на 10-20-30 символа парола не е същото като брут-форс на 500-600-700 символа ключ) Цитат $RSYNC -az -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH - Какво се изпълнява с това?Синхронизация на отдалечената с локалната директория. Само файловете с изменения биват прехвърлени. Последно скриптът в общи линии ще изглежда така: Код: #!/bin/sh Празните места от рода на mypasswd_here /remote/dir thishost-rsync-key и други ще трябва да попълниш сам (като във формуляр ;)) Съвсем скоро имаше въпрос за ssh-key във форума, който също ще ти помогне. И последно - всички команди (чети - двете команди) трябва първо да изпълниш успешно ръчно в терминала на openSUSE, след което да нагодиш скрипта с техните параметри. И в крайна сметка по този начин ssh сървърът на виндовс не ти е необходим. Ако все пак решиш твърдо да го използваш ще трябва двустъпково копиране между компютрите със временна директория върху openSUSE с достатъчно свободно място. ПП модераторът да премести поста в секция начинаещи. Въпросът не е точно за програмиране, смятам че в секцията начинаещи проблемът ще получи повече внимание. Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 14, 2012, 10:26 Много благодаря за отговора, захващам се за работа. [_]3
Eто този линк --> http://webcache.googleusercontent.com/search?q=cache:V9KRA_m-dwIJ:www.jdmz.net/ssh/+&cd=1&hl=bg&ct=clnk&gl=bg&client=opera Също е полезен, на някой с моите проблеми може да му свърши работа. Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 14, 2012, 19:38 Здрвейте,
Появи се една грешка, която не знам от какво е причинена. Ето .sh файла който създадох: Код: GNU nano 1.3.12 File: rsync-192.168.0.150-backups.sh Направих crontab файл в който въведох следното: Код: 40 18 * * * /usr/local/sbin/rsync-192.168.0.150-backups.sh Но след като мина 18:40 нямаше никаква активност. Очевидно crontab-а не ми се изпълнява, Опитах се да пусна ръчно процеса и ето какво ми излиза в терминала: Цитат [root@server150 sbin]# ./rsync-192.168.0.150-backups.sh Нямам представа къде греша. Сега, може би греша ето тук: Код: mount -t cifs //192.168.0.170/Backup_Machine /mnt/Test_backup -o user=root,password=********************** все пак user-a на уиндоуската ми машина не е root a e admin, но нямам представа.дали в това е грешката. Някой да има идея къде ми е грешката? Титла: Re: Cron script for backup Публикувано от: b2l в Mar 14, 2012, 19:44 Имаш ли инсталиран ssh изобщо?
Титла: Re: Cron script for backup Публикувано от: kissow в Mar 14, 2012, 20:19 Здрвейте, като гледам грешката ти е в това че си махнал знакът $ и очакваш да ти се изпълни променлива пример: $rsync $ssh и т.н в случая когато подаваш команден ред "RSYNC -az -e "SSH -i KEY" root@192.168.0.150:/vmfs/volumes/IvoWork/Test_Machine[/code]" ти не викаш променлива $SSH а някаква несъществуваща команда с големи букви SSH :) за да работи командният ред трябва да си дефинираш променливите с знак $ отпред иначе очаквай да се изпълни на куково лято :) а като гледам дори трябва да ти се крашва на RSYNC защото пак няма $ пред $рсинк :) Титла: Re: Cron script for backup Публикувано от: laskov в Mar 14, 2012, 20:51 А относно crond, не е достатъчно само да редактираш файла със задачите.
Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 15, 2012, 10:57 @b2l
Да, имам инсталиран ssh, тествах го и работи. @kissow О.к. ще поправя реда и ще видя какво ще се получи. А относно crond, не е достатъчно само да редактираш файла със задачите. Какво още е нужно? Благодаря за насоките. :) Титла: Re: Cron script for backup Публикувано от: kissow в Mar 15, 2012, 14:46 Относно кронтаба н е се редактира файла който е в /var/, а се прави през "crontab -e" :) и му добавяш ред с времето кога да се изпълни скрипта.
Титла: Re: Cron script for backup Публикувано от: dejuren в Mar 15, 2012, 15:45 Относно кронтаба н е се редактира файла който е в /var/, а се прави през "crontab -e" :) и му добавяш ред с времето кога да се изпълни скрипта.Втори вариант - ако редактираш директно файла рестартираш cron демона: /etc/init.d/cron restart Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 15, 2012, 19:39 Имам голям проблем, а той е, че виртуалния диск на машината която искам да копирам е 210 ГБ а нямам толкова място на локалната машина която искам да използвам за бекъпа.
Има ли вариант само данните от виртуалния диск да се бекъпват, как и по какъв начин? към момента turnkeyredmine.vmdk е: Size: 4 533 248,00 KB Provisioned Size: 209 715 200,00 КВ Как мога да процедирам в случай. Нямам възможност да прехвърля цялата директория на виртуалната машина, и следва, как мога да ги екстрактна тези 4 533 248,00 KB които има до момента? Като за начало, ще ползвам тези команди, съответно за базата от данни и за приакачените файлове: Database /usr/bin/mysqldump -u <username> -p <password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz Attachments rsync -a /path/to/redmine/files /path/to/backup/files Но как ще излгежда командата ако трябва да прехвърля базата от данни и прикачените файлове на уиндоуска машина? Може би така: #Database /usr/bin/mysqldump -u root -p123456 <redmine_database> | gzip > admin@192.168.0.170:/Redmine_Backup_`date+%y_%m_%d`.gz Ето това "<redmine_database>" не ми стана ясно кое и къде се намира. Може би Redmine има директория в която седят Msql файловете, но аз не я намерих. А това "`date+%y_%m_%d`" остава ли така както си е, ако да речем искам да правя копирането всяки ден от годината или трябва да е заместено по някакъв начин, да речем нещо такова "`date+%2012_%3_%18 - като това да оказва, че трябва копирането да бъде извършено на 18.03.2012 г.? По отношение на това --> "Attachments rsync -a /path/to/redmine/files /path/to/backup/files" нямам представа в коя директория седят файловете които се прикрепят. Някой има ли идея? Титла: Re: Cron script for backup Публикувано от: kissow в Mar 16, 2012, 10:49 хах и тва е решение но не виждам никъв смисъл да пише човек много :)Относно кронтаба н е се редактира файла който е в /var/, а се прави през "crontab -e" :) и му добавяш ред с времето кога да се изпълни скрипта.Втори вариант - ако редактираш директно файла рестартираш cron демона: /etc/init.d/cron restart Титла: Re: Cron script for backup Публикувано от: ivo_18 в Mar 16, 2012, 14:49 Aз така и не мога да се навигирам къде седят mysql базата данни в редмайн. ???
Титла: Re: Cron script for backup Публикувано от: dejuren в Mar 16, 2012, 23:07 <redmine_database> е просто името на базата данни която ще архивираш. Тази част "| gzip > admin@192.168.0.170:/Redmine_Backup_`date+%y_%m_%d`.gz" няма много смисъл, нали идеята беше, че твоята бекъп директория монтираме като локална, т.е. остава "gzip > /mnt/backup_mount_directory/Redmine_Backup_`date+%y_%m_%d`.gz".
И виж, ако ти нямаш представа къде стоят файловете, които искаш да архивираш как може ние да помогнем? Моят съвет - вземи лист хартия и начертай схема кое, къде с каква големина, през каква междинна точка искаш да архивираш. Кое къде се монтира, как, откъде и в коя крайна точка данните се копират без монтиране (подсказка: $RSYNC -az -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH). После седни и прочети всичко в темата отначало със схемата в ръка. И последно: Код: man mount |