Титла: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: dlozev в May 26, 2015, 12:11
Здравейте, трябва ми скрипт, който да архивира няколко зададени директории, както и всички MySQL БД. След което архивите да ги качва на отдалечен FTP сървър. Благодаря ви предварително!
Титла: Re: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: k0tka в May 26, 2015, 13:23
Отдалечено ли ще го изпълняваш или директно от сървъра на който работи MySQL-а и се намират директориите които искаш да архивираш? Ако bash ще ти свърши работа, трябва да имам някъде нещо работещо, което прави същото без FTP-то но ще го добавим лесно... Мисля че довечера ще имам време да го изнамеря...
Титла: Re: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: Naka в May 26, 2015, 13:32
независимо как ще ги архивираш трябва да изпълниш предварително FLUSH TABLES WITH READ LOCK; за да не се променят mysql таблиците през време на архивирането а след това UNLOCK TABLES;
Титла: Re: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: dlozev в May 26, 2015, 18:00
Здравейте, базите данни са на същия сървър.
Титла: Re: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: nslave в May 28, 2015, 00:00
Здравей, това са едни скриптове, които преди доста време бях намерил някъде, но за съжаление не се сещам източника. Мисля, че нещо бях правил по тях.. но вече не си спомням. За моите нужди вършеха работа, но ще трябва да си организираш качването на ftp (което не препоръчвам). Все пак си тествай дали всичко работи както трябва, тъй като не мога да дам гаранция, че е перфектно :) Можеш да си настроиш за колко дни назад да ти пази архивите, но при всички положения препоръчвам да разгледаш опцията да си свършиш работата с rsnapshot :) За архивиране на директорииGeSHi (Bash): #!/bin/bash # Target directory which we will backup TARGET="/var/www" # How long will backup files will be kept KEEPBKP=5 TAR="$(which tar)" CHOWN="$(which chown)" CHMOD="$(which chmod)" # Gets time NOW="$(date +"%Y%m%d")" # Destination folder DEST="/backup/www" # Main directory for backup MBD="$DEST/$NOW" [ ! -d $MBD ] && mkdir -p $MBD || : # Only root can access it! $CHOWN 1000.1000 -R $DEST $CHMOD 0600 $DEST # Gets a list of all subdirectories of DESTINATION dir DIR="$(ls $DEST)" for subdir in $DIR do SUBDIRDATE="$(date --date=$subdir +"%Y%m%d")" let "DATEDIFF=$NOW-$SUBDIRDATE" if [ $DATEDIFF -gt $KEEPBKP ] then echo $subdir " is going to be deleted!" rm -rf $DEST/$subdir fi done # Gets a list of all subdirectories of TARGET dir DIR="$(ls $TARGET)" for subdir in $DIR do tar -zcvf $MBD/$subdir.$NOW.tar.gz $TARGET/$subdir done
За архивиране на MySQL бази данниGeSHi (Bash): #!/bin/bash MyUSER="root" # MySQL admin MyPASS="PASSWORD" # MySQL admin pass MyHOST="localhost" # MySQL hostname # Linux bin paths, change this if it can not be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" # How long a backup file will be kept KEEPBKP=5 # Get date NOW="$(date +"%Y%m%d")" # Backup Destination directory, change this to suit your preferred location DEST="/backup/mysql" # Main directory where backup will be stored MBD="$DEST/$NOW" # Get hostname HOST="$(hostname)" # File to store current backup file FILE="" # Store list of databases DBS="" # DO NOT BACKUP these databases IGGY="information_schema" [ ! -d $MBD ] && mkdir -p $MBD || : # Only root can access it! $CHOWN 1000.1000 -R $DEST $CHMOD 0600 $DEST # Gets a list of all subdirectories of DESTINATION dir DIR="$(ls $DEST)" for subdir in $DIR do SUBDIRDATE="$(date --date=$subdir +"%Y%m%d")" let "DATEDIFF=$NOW-$SUBDIRDATE" if [ $DATEDIFF -gt $KEEPBKP ] then echo $subdir " is going to be deleted!" rm -rf $DEST/$subdir fi done # Get all databases list first DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" for db in $DBS do skipdb=-1 if [ "$IGGY" != "" ]; then for i in $IGGY do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ]; then FILE="$MBD/$db.$HOST.$NOW.sql.gz" # do all in one job in pipe, # connect to mysql using mysqldump for select mysql database # and pipe it out to gz file in backup dir :) $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE fi done
Титла: Re: Бекъп на директории и MySQL БД и FTP Upload
Публикувано от: dlozev в Jun 04, 2015, 14:05
Благодаря, ще го тествам малко по-късно.
|