рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк * NIX рд╕рд░реНрд╡рд░ред TimeMachine рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдмреИрдХрдЕрдк рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рджрд░реНрдЬрдиреЛрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ, рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрдХрд░рд╛рд╡ рдкрд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди * рдПрдирдЖрдИрдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреА рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдмреИрдХрдЕрдк рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рдереЗ?
1) рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рджреИрдирд┐рдХ рдкреВрд░реНрдг bakapред рдХреЛрдИ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реБрдкрдпреЗ рдирд╣реАрдВред
2) рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдмрд╕реЗ рддреЗрдЬ рд░рд┐рдХрд╡рд░реАред рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ (рдЯрд╛рд░ / рдЧрдЬрд╝рд┐рдк / рдмрдЬрд╝рд┐рдк 2 / рдЖрд░рдПрдЖрд░) рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
3) рддреНрд╡рд░рд┐рдд рдирд┐рдЧрд░рд╛рдиреА "рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд▓ 156GB рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ?"
4) рдЬрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдбрд┐рд╕реНрдХ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЦрд╛рд▓реА рдЬрдЧрд╣ рд╣реИ, рдореИрдВ рдмреИрдХрдЕрдк рдкреНрд░рддрд┐рдпрд╛рдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
5) рдЕрдЧрд░ рдореИрдВ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдЕрднреА рднреА рдмрд╛рд╣рд░ рдЪрд▓рд╛рддрд╛ рд╣реИ рддреЛ рдкреБрд░рд╛рдиреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдореИрдВ рдПрдХ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ MAC OS TimeMachine рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдФрд░ рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ TimeMachine рдХрд╛ рдЖрдзрд╛рд░ cp -al + rsync рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ
рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
cp -al _backup _backup
рдЖрдЬ рд╣рд╛рд░реНрдбрд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд▓ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреА рдирдХрд▓ рдХрд░реЗрдЧрд╛ред рдРрд╕реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдирд╣реАрдВ рд▓реЗрддреА рд╣реИред рдлрд┐рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
rsync -a --del _backup
рдпрд╣ рдХрд▓ рдХреЗ рдмреИрдХрдЕрдк рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдпрд╣ рдЕрдВрддрд░ рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рд╛рд░реНрдбрд▓рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд┐рдЦ рджреЗрдЧрд╛; рдирдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ / рдХреЙрдкреА рдХрд░реЗрдВ; рдЧреИрд░-рдореМрдЬреВрдж рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд▓ рдХреЗ рдмреИрдХрдЕрдк рдХреА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рд╣реЗрдВрдЧреАред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдХрд┐рдВрдЧ рдмреИрдХрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рджреЛрдиреЛрдВ рдХрдорд╛рдВрдб рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред рдореИрдВрдиреЗ 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рджреВрд╕рд░рд╛ - рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛, рд╡реНрдпрдХреНрддрд┐рдЧрдд, рдЬреЛ рдХреНрд░реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдЪрд▓рддрд╛ рд╣реИред

рддреЛ, рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ: ( рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ )
backup_functions.sh
 #!/bin/sh export LC_ALL=en_US.utf8 DIR_PATTERN='20..-..-..' CURR_DATE=`date +%F` #CURR_DATE=`date +%F_%R` RESERVE_G=5 BACKUP_MAIN_DIR='/backup' BACKUP_TMP_DIR='/tmp' BACKUP_DELTA=$BACKUP_TMP_DIR/backup.delta BACKUP_ERRORS=$BACKUP_TMP_DIR/backup.err BACKUP_REPORT=$BACKUP_TMP_DIR/backup.report BACKUP_LOG_FACILITY='user.notice' BACKUP_EXPIRES_DAYS=0 VERIFY_BACKUP_MOUNTED='no' PID_FILE='/var/run/backup.pid' BACKUP_MYSQL_DIR=$BACKUP_TMP_DIR/mysql_dump MYSQL_DATA_DIR='/var/lib/mysql' [ -z "`which rsync`" ] && { echo "RSYNC is not installed! backup will not work!"; exit; } [ -n "`which ionice`" ] && IONICE_CMD='ionice -c2 -n6' touch /etc/default/backup_exclude rm $BACKUP_DELTA $BACKUP_ERRORS $BACKUP_REPORT 1>/dev/null 2>/dev/null verify_backup_mounted() { mount -a [ -d "$BACKUP_MAIN_DIR" ] || { echo "BACKUP main directory does not exist!"; exit; } str=`df "$BACKUP_MAIN_DIR" | tail -1 | grep ' /$'` [ "$str" ] && { echo 'BACKUP partition is not mounted!!!!!!!!'; exit; } return 0 } prepare_for_backup() { if [ -s "$PID_FILE" ] && [ `cat "$PID_FILE"` -ne $PPID ] then if [ "`ps ax | awk '{print $1;}' | grep -f \"$PID_FILE\"`" ] then echo -n "Previous BACKUP script is still running. PID = "; cat "$PID_FILE"; exit else logger -t BACKUP -p $BACKUP_LOG_FACILITY "Previous BACKUP ended unexpectly" fi fi rm "$PID_FILE" 1>/dev/null 2>/dev/null echo $PPID > "$PID_FILE" old_dir=`pwd` cd "$BACKUP_MAIN_DIR" || { echo "BACKUP main directory does not exist!"; exit; } VERIFY_BACKUP_MOUNTED=`echo "$VERIFY_BACKUP_MOUNTED" | tr 'AZ' 'a-z'` [ "$VERIFY_BACKUP_MOUNTED" = "yes" ] && verify_backup_mounted reserve_k=$(($RESERVE_G * 1048576)) mkdir -p $BACKUP_TMP_DIR 1>/dev/null 2>/dev/null dirs_list=`ls | grep $DIR_PATTERN | sort` if [ -n "$dirs_list" ] then while { free_k=`df -k .|grep -v Filesystem| sed -e "s/.\+ \([0-9]\+\) .\+/\1/"` dirs_list=`ls | grep $DIR_PATTERN | sort` free_pre=$free_k [ $free_pre -lt $reserve_k ] ; } do dir_oldest=`echo $dirs_list | tr " " "\n" | head -1` [ -d $dir_oldest ] && { logger -t BACKUP -p $BACKUP_LOG_FACILITY "Deleting old backup in $BACKUP_MAIN_DIR/$dir_oldest" ; rm -rf $dir_oldest; } done fi [ "$VERIFY_BACKUP_MOUNTED" = "yes" ] && verify_backup_mounted last_date=`ls | grep $DIR_PATTERN | sort | tail -1` if [ -n "$last_date" -a \( "$CURR_DATE" != "$last_date" \) ] then logger -t BACKUP -p $BACKUP_LOG_FACILITY "Preparing. Copying $BACKUP_MAIN_DIR/$last_date -> $BACKUP_MAIN_DIR/$CURR_DATE" mkdir $CURR_DATE 1>/dev/null 2>/dev/null $IONICE_CMD cp -al "$last_date"/* $CURR_DATE 1>/dev/null 2>/dev/null rm -rf $CURR_DATE/_delta 1>/dev/null 2>/dev/null fi mkdir $CURR_DATE/_delta 1>/dev/null 2>/dev/null if [ $BACKUP_EXPIRES_DAYS -gt 0 ] then for expired_dir in `find "$BACKUP_MAIN_DIR" -maxdepth 1 -mtime +$BACKUP_EXPIRES_DAYS -type d | grep "$DIR_PATTERN"` do logger -t BACKUP -p $BACKUP_LOG_FACILITY "Deleting expired backup $expired_dir" ; rm -rf $expired_dir; done fi cd $old_dir return 0 } make_backup() { while [ -n "$1" ] do [ "$VERIFY_BACKUP_MOUNTED" = "yes" ] && verify_backup_mounted src=$1 full_src=`echo $PWD/$1 | sed -e 's://:/:g'` dst=`echo $BACKUP_MAIN_DIR/$CURR_DATE/$src | sed -e "s/\/\w\+$//"` mkdir -p $dst 1>/dev/null 2>/dev/null logger -t BACKUP -p $BACKUP_LOG_FACILITY "$full_src started" $IONICE_CMD rsync -axW8 --del --exclude-from=/etc/default/backup_exclude $src $dst 2>>$BACKUP_ERRORS sync shift done return 0 } make_backup_with_delta() { while [ -n "$1" ] do [ "$VERIFY_BACKUP_MOUNTED" = "yes" ] && verify_backup_mounted src=$1 full_src=`echo $PWD/$1 | sed -e 's://:/:g'` dst=`echo $BACKUP_MAIN_DIR/$CURR_DATE/$src | sed -e "s/\/\w\+$//"` mkdir -p $dst 1>/dev/null 2>/dev/null rm $BACKUP_DELTA 1>/dev/null 2>/dev/null logger -t BACKUP -p $BACKUP_LOG_FACILITY "$full_src (with delta) started" $IONICE_CMD rsync -axW8i --del $src $dst --exclude-from=/etc/default/backup_exclude 2>>$BACKUP_ERRORS | grep "^>f" | cut -d ' ' -f 2- 1>$BACKUP_DELTA old_dir=`pwd` cd $BACKUP_MAIN_DIR/$CURR_DATE dst=`echo $src | sed -e "s/\w\+$//"` xargs -a $BACKUP_DELTA -r -n5 -d '\n' -I '{}' echo $dst{} | xargs -r -n10 -d '\n' cp -ul --parents -t _delta rm $BACKUP_DELTA 1>/dev/null 2>/dev/null cd $old_dir sync shift done return 0 } send_email_report() { if [ -s $BACKUP_ERRORS ] then logger -t BACKUP -p $BACKUP_LOG_FACILITY "Sending email report" echo 'Content-type: text/plain; charset=utf-8' >> $BACKUP_REPORT echo 'Content-Transfer-Encoding: 8bit' >> $BACKUP_REPORT echo 'From: root@'`hostname --fqdn` >> $BACKUP_REPORT echo 'To: root' >> $BACKUP_REPORT echo 'Date:' `date` >> $BACKUP_REPORT echo -e 'Subject: Cron <root@'`hostname --fqdn`'> BACKUP\n\n' >> $BACKUP_REPORT cat $BACKUP_ERRORS >> $BACKUP_REPORT cat $BACKUP_REPORT | sendmail root fi rm $BACKUP_DELTA $BACKUP_ERRORS $BACKUP_REPORT $PID_FILE 1>/dev/null 2>/dev/null logger -t BACKUP -p $BACKUP_LOG_FACILITY "Finished" return 0 } make_mysql_backup() { MYSQL_DATA_DIR='/var/lib/mysql' mkdir $BACKUP_MAIN_DIR/$CURR_DATE/MySQL 1>/dev/null 2>/dev/null rm -rf $BACKUP_MAIN_DIR/$CURR_DATE/MySQL/* 1>/dev/null 2>/dev/null rm -rf $BACKUP_MYSQL_DIR 1>/dev/null 2>/dev/null mkdir -p $BACKUP_MYSQL_DIR 1>/dev/null 2>/dev/null cd $MYSQL_DATA_DIR logger -t BACKUP -p $BACKUP_LOG_FACILITY "MySQL started" for db_dir in `ls -p | grep '/' | tr -d '/'` do cd $MYSQL_DATA_DIR/$db_dir db_name=`echo $db_dir | sed -e 's/@003d/=/g' -e 's/@002d/-/g'` logger -t BACKUP -p $BACKUP_LOG_FACILITY "MySQL database '$db_name' started" for table in `ls | grep '.frm' | sed -e 's/\.frm//' -e 's/ /:::/g'` do table=`echo $table | sed -e 's/:::/ /g' -e 's/@003d/=/g' -e 's/@002d/-/g'` mysqldump $db_name "$table" --skip-lock-tables -Q -u $mysql_user -p$mysql_pass > "$BACKUP_MYSQL_DIR/$table.sql" done cd $BACKUP_MYSQL_DIR tar czf $BACKUP_MAIN_DIR/$CURR_DATE/MySQL/$db_name.tar.gz * 1>/dev/null 2>/dev/null rm $BACKUP_MYSQL_DIR/* 1>/dev/null 2>/dev/null done return 0 } 


рдФрд░ backup.sh :
 #!/bin/sh . /usr/local/sbin/backup_functions.sh BACKUP_EXPIRES_DAYS=365 #  30 RESERVE_G=30 BACKUP_MAIN_DIR='/backup' VERIFY_BACKUP_MOUNTED='yes' prepare_for_backup cd / make_backup etc boot home root opt srv usr/local make_backup_with_delta var/spool var/lib var/www BACKUP_MAIN_DIR='/backup' mysql_user='root' mysql_pass='jndey7hdFdfii7HN6ygdrarUh' make_mysql_backup send_email_report 

Backup_functions.sh рдХреЛ / usr / рд╕реНрдерд╛рдиреАрдп / sbin рдореЗрдВ рд╕реНрдерд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ - backup.sh рдореЗрдВ рдЗрд╕реА рд▓рд╛рдЗрди рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрддрд╛рдпрдд рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
RESERVE_G - рд░рд┐рдЬрд░реНрд╡ (рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ) рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЬ рдХрд╛ рдмреИрдХрдЕрдк рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛
BACKUP_EXPIRES_DAYS - рдкреБрд░рд╛рдиреЗ рдмреИрдХрдЕрдк рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рднреА рднрд▓реЗ рд╣реА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╣реЛред рдпрджрд┐ BACKUP_EXPIRES_DAYS == 0 рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
BACKUP_MAIN_DIR - рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдмреИрдХрдЕрдк рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрджрд░, "2011-11-15" рдЬреИрд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдмреИрдХрдЕрдк рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
VERIFY_BACKUP_MOEDED - рдЪреЗрдХ рдХрд░реЗрдВ рдпрд╛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдмреИрдХрдЕрдк рдХреЗ рддрд╣рдд рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдорд╛рдЙрдВрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рдЪрдпрдирд┐рдд рд╡рд┐рднрд╛рдЬрди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪреЗрдХ рдХреЗ рдмрд┐рдирд╛ рдмреИрдХрдЕрдк рд░реВрдЯрдлреБрдЯ рдпрд╛ рдбрд┐рд╕реНрдХ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рднрд╛рдЬрди рдкрд░ рднрд╛рд░реА рдкрдбрд╝реЗрдЧрд╛ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрдм рдмреИрдХрдЕрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реВрдЯрдлрд╝реНрд╕ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧреИрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
VERIFY_BACKUP_MOUNTED = "рдирд╣реАрдВ"
рд▓рдШреБ рдмреИрдХрдЕрдкред рдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд░реЛрди рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдИ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
ready_for_backup - рдлрд╝рдВрдХреНрд╢рди рд╕реАрдзреЗ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╡рд╣ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореБрдлреНрдд рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред
make_backup (рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде) - рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ
make_backup_with_delta (рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде) - рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрд▓рд┐рдВрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ 2011-11-15 / _delta рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджреЗрддрд╛ рд╣реИ ред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд▓ рд╕рд░реНрд╡рд░ рдкрд░ 156GB рдХрд┐рд╕рдиреЗ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИред
send_email_report - рдлрд╝рдВрдХреНрд╢рди рдмреИрдХрдЕрдк рдХреЗ рджреМрд░рд╛рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЗ рд╕рд╛рде рдПрдХ рдИ-рдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЕрдкреЗрдВрдбреЗрдЬ рдореЗрдВ MySQL рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрдХрдЕрдк рдлрд╝рдВрдХреНрд╢рди рднреА рд▓рд┐рдЦрд╛ред
make_mysql_backup - рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛ рдХреЛ mysqldump (рдпрд╛рдиреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ - рдПрдХ .sql рдлрд╝рд╛рдЗрд▓) рдмрдирд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА .sql рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ db.name.tar.gz рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реИред

рдЪрд╛рджрд░ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред

рдЕрджреНрдпрддрди: рдпрджрд┐ рдЖрдк рджрд┐рди рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ backup_functions.sh рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
CURR_DATE = `рддрд┐рдерд┐ +% F`
рдкрд░
CURR_DATE = `рддрд┐рдерд┐ +% F_% R`

рдпрджрд┐ rsync рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдмрд╛рдзрд┐рдд рд╣реИред
рдпрджрд┐ рдЖрдпрдирд┐рд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ rsync рдХреЛ рдХрдо io рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓рд╛рдЗрди рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
[-n "` рдЬреЛ рдЖрдпрдирд┐рд╕ '"&& IONICE_CMD =' рдЖрдпрдирд┐рд╕ -c2 -n6 '

Source: https://habr.com/ru/post/In133330/


All Articles