рдпреВрдирд┐рдХреНрд╕ / рд▓рд┐рдирдХреНрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕реНрдпреВрдбреЛрдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред рдЬрд┐рддрдирд╛ рдЖрдк рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ред

рдирдорд╕реНрддреЗ! рдХрднреА-рдХрднреА, рдореИрдВ "рдЙрдмрд╛рдК" рдХрдВрд╕реЛрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХрддрд╛ рдХреЗ рдПрдХ рд╕реНрдкрд░реНрд╢ рдХреЗ рд╕рд╛рде рднреА рдкрддрд▓рд╛ рдХрд░реЗрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рднрд╛рдЧреНрдп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рддреЛ, рдЫрджреНрдо рд╡рд┐рдЬреНрдЮрд╛рдиред рдкрд╛рдардХ рдореЗрд░рд╛ рдкреАрдЫрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрдВрд╕реЛрд▓ рджрд┐рдЦрд╛рдКрдВрдЧрд╛!



рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, FreeBSD рдпрд╛ apt-get install рдореЗрдВ рд░рдирд┐рдВрдЧ рдореЗрдХ && рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдмрд┐рдпрди рдореЗрдВ, рдРрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рдпрд▓реЙрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡реЗ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рднреВрд▓ рдЧрдП рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рдЧрднрдЧ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмрд╣реБрдд, рдмрд╣реБрдд рд╡реНрдпрд░реНрдеред



рдЕрджреНрднреБрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕рдВрд╡рд╛рдж рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ FreeBSD рдореЗрдВ рд╕рд╛рддрд╡реАрдВ рдФрд░ рдЖрдард╡реАрдВ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдбреЗрдмрд┐рдпрди рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк apt-get install рдбрд╛рдпрд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВред

FreeBSD рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

$ dialog



dialog version 0.3, by Savio Lam (lam836@cs.cuhk.hk).

patched to version 0.4 by Stuart Herbert (S.Herbert@shef.ac.uk)

Changes Copyright (C) 1995 by Andrey A. Chernov, Moscow, Russia

patched by Anatoly A. Orehovsky (tolik@mpeks.tomsk.su)



* Display dialog boxes from shell scripts *



Usage: dialog --clear

dialog --create-rc <file>

dialog [--title <title>] [--clear] [--hline <line>] [--hfile <file>]\

<Box options>



Box options:



--yesno <text> <height> <width> [yes|no]

--msgbox <text> <height> <width>

--prgbox "<command line>" <height> <width>

--infobox <text> <height> <width>

--inputbox <text> <height> <width> [<init string>]

--textbox <file> <height> <width>

--menu <text> <height> <width> <menu height> <tag1> <item1>...

--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...

--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...

--ftree <file> <FS> <text> <height> <width> <menu height>

--tree <FS> <text> <height> <width> <menu height> <item1>...







рд▓рд┐рдирдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

$ dialog

cdialog (ComeOn Dialog!) version 1.1-20080316

Copyright 2000-2006,2007 Thomas E. Dickey

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



* Display dialog boxes from shell scripts *



Usage: dialog <options> { --and-widget <options> }

where options are "common" options, followed by "box" options



Special options:

[--create-rc "file"]

Common options:

[--ascii-lines] [--aspect <ratio>] [--backtitle <backtitle>]

[--begin <y> <x>] [--cancel-label <str>] [--clear] [--colors]

[--cr-wrap] [--default-item <str>] [--defaultno] [--exit-label <str>]

[--extra-button] [--extra-label <str>] [--help-button]

[--help-label <str>] [--help-status] [--ignore] [--input-fd <fd>]

[--insecure] [--item-help] [--keep-tite] [--keep-window]

[--max-input <n>] [--no-cancel] [--no-collapse] [--no-kill]

[--no-label <str>] [--no-lines] [--no-ok] [--no-shadow] [--nook]

[--ok-label <str>] [--output-fd <fd>] [--print-maxsize] [--print-size]

[--print-version] [--separate-output] [--separate-widget <str>]

[--shadow] [--single-quoted] [--size-err] [--sleep <secs>] [--stderr]

[--stdout] [--tab-correct] [--tab-len <n>] [--timeout <secs>]

[--title <title>] [--trace <file>] [--trim] [--version] [--visit-items]

[--yes-label <str>]

Box options:

--calendar <text> <height> <width> <day> <month> <year>

--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...

--dselect <directory> <height> <width>

--editbox <file> <height> <width>

--form <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...

--fselect <filepath> <height> <width>

--gauge <text> <height> <width> [<percent>]

--infobox <text> <height> <width>

--inputbox <text> <height> <width> [<init>]

--inputmenu <text> <height> <width> <menu height> <tag1> <item1>...

--menu <text> <height> <width> <menu height> <tag1> <item1>...

--mixedform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1> <itype>...

--mixedgauge <text> <height> <width> <percent> <tag1> <item1>...

--msgbox <text> <height> <width>

--passwordbox <text> <height> <width> [<init>]

--passwordform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...

--pause <text> <height> <width> <seconds>

--progressbox <height> <width>

--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...

--tailbox <file> <height> <width>

--tailboxbg <file> <height> <width>

--textbox <file> <height> <width>

--timebox <text> <height> <width> <hour> <minute> <second>

--yesno <text> <height> <width>









рджрд░рдЕрд╕рд▓, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдлрд╝рд╛рдЗрд▓ рдмреИрдХрдЕрдк рдФрд░ рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ (рдпрд╛ рд╕рднреА) MySQL рдХреЗ рдбрдВрдк рдбрдВрдк рдордЬрдмреВрд░:

$ cat ./xbackup.sh

#!/bin/sh



SRC = "/usr/home/dev/"

SITE = "${SRC}_Web/"

PROJECT = "${SRC}_Project/"



#

DST = "/usr/home/share/BACKUP/"



# Mysql

SQLLOGIN = "root"

SQLPASS = "TopSecretPassword"

SQLHOST = "localhost"



/* --------------------------------------------------------------------------------------------------------- */

#

DATE = ` date "+%Y.%m.%d_%H-%M-%S"`

DSRC = ""

# ( )

backupType = 0



#

DIALOG = dialog

#

tempfile = ` mktemp /tmp/bkp.XXXXXX `

trap "rm -f $tempfile" 0 1 2 5 15



#

InfoDialog () {

${ DIALOG } --msgbox "$1" 5 70

}



#

BackupFiles () {

if [ ! -d ${ 2 } ] ; then

mkdir -p ${ 2 }

fi

tar -c --gzip -f "${2}${DATE}.tar.gz" "${1}"

InfoDialog "OK -> ${2}${DATE}.tar.gz"

}



#

BackupMySQL () {

case ${ 1 } in

"All_Database" )

mysqldump -R -E --triggers -u "${SQLLOGIN}" -p "${SQLPASS}" --all-databases > "${tempfile}"

;;

"" )

InfoDialog "Backup has been canceled"

exit

;;

* )

mysqldump -R -E --triggers -u "${SQLLOGIN}" -p "${SQLPASS}" ${ DBase } > "${tempfile}"

;;

esac

cp "${tempfile}" "${DST}${1}-${DATE}.sql"

# gzip, тАФ

echo tar -c --gzip -f "${2}${DATE}.dump" "${tempfile}"

InfoDialog "OK -> ${2}${DATE}.dump"

}



#

ChooseDatabase () {

#

DBases = ` echo "SHOW DATABASES" | mysql -u "${SQLLOGIN}" -p "${SQLPASS}" `

# All_Database

List = "All_${DBases}"

#

$DIALOG --title "Please choose a Database " --tree "FS" "List of existing databases" 14 78 7 ${ List } 2> ${ tempfile }



case $? in

0 )

#

DBase = ` cat ${ tempfile } `

BackupMySQL ${ DBase }

;;

1|255 )

# ( )

InfoDialog "Backup has been canceled"

exit

;;

esac

}



# ( )

ChooseDomain () {

Paths = ` ls ${ 1 } `

List = ""

isEmpty = true

for dName in ${ Paths }

do

# www ( )

if [ -d "${1}${dName}/www" ] || [ -d "${1}${dName}/htdocs" ] ; then

List = "${List} ${dName}"

isEmpty = false

fi

done




# ,

if ${ isEmpty } ; then

Count = ` echo ${ SRC } | wc -c | tr -d ' '`

DSRC = ` echo ${ 1 } | awk "{ print substr($ 1, ${Count}) }"`

return 0;

fi



#

$DIALOG --title "Please choose a path " --tree "FS" "List of existing domains" 14 78 7 ${ List } 2> ${ tempfile }



case $? in

0 )

DName = ` cat ${ tempfile } `

ChooseDomain "${1}${DName}/"

;;

1|255 )

InfoDialog "Backup has been canceled"

exit

;;

esac



}



ProcessBackup () {

case $1 in

Site )

ChooseDomain ${ SITE }

BackupFiles "${SRC}${DSRC}" "${DST}${DSRC}"

;;

MySQL )

ChooseDatabase

;;

* )

;;

esac

}



TypeDialog () {

${ DIALOG } --title "Choose backup type:" --menu "This is backup types" 12 50 4 \

"Site" "backup web-site" \

"MySQL" "Mysql database" 2> ${ tempfile }



case $? in

0 )

ProcessBackup ` cat ${ tempfile } `

TypeDialog

;;

1|255 )

InfoDialog "Backup has been canceled"

exit

;;

esac



}



TypeDialog









рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдореБрдЦреНрдп рдореЗрдиреВ

Backpap рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЗрдЯ рдЪреБрдирдирд╛

рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдЪрдпрди

рдЖрдзрд╛рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрдВрдк рд╣реЛ рдЧрдпрд╛ рд╣реИ





рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ "рд╡рд┐рдВрдбреЛрдЬрд╝" рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рддрд░рд╣, рдХрд┐рд╕реА рднреА рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдХреБрдВрдЬреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкреЛрдЯреАрди рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░рдХреЗ, рдЖрдк рдПрдХ рд╕реБрдВрджрд░ рдХрдВрд╕реЛрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд╛рдЪреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ (рдмреЗрд╢рдХ, рдЧрдВрднреАрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде sudo рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдПред рдПрдХ рдЯреАрдо рдореЗрдВ, * рдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рднреА рдЕрдкрд░рд┐рдЪрд┐рддред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдХреЛ "рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рднреА рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдЬреНрдЮрд╛рди рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред



PS рд▓реЗрдЦрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ http://www.oszone.net/2833/ , рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╡рд╣рд╛рдБ рд╕реЗ рдХреБрдЫ рдкреЗрд╢ рдХрд┐рдпрд╛ред



All Articles