Загружаем бекапы на Yandex.Disk через WebDav
Написал небольшой скрипт на PowerShell для загрузки последнего бекапа на Yandex.Disk, используя WebDav. Исходник на github.com.
Написал небольшой скрипт на PowerShell для загрузки последнего бекапа на Yandex.Disk, используя WebDav. Исходник на github.com.
Хочу поделится с вами небольшим скриптом для создания резервных копий всех баз данных MySql.
#!/bin/bash MyUSER="dbuser" MyPASS="dbpass" MyHOST="localhost" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" #MYSQL="/usr/local/bin/mysql" #MYSQLDUMP="/usr/local/bin/mysqldump" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" DEST="./db_backup" MBD="$DEST" HOST="$(hostname)" NOW="$(date +"%Y%m%d")" FILE="" DBS="" # DO NOT BACKUP these databases, delemiter SPACE IGN="information_schema" # Get all database list first DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" for db in $DBS do skipdb=-1 if [ "$IGN" != "" ]; then for i in $IGN do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then MBD="$DEST/$db" [ ! -d $MBD ] && mkdir -p $MBD || : FILE="$MBD/$NOW.sql.gz" $MYSQLDUMP --opt -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE FNUM="$(find $MBD/* | wc -l)" if [ $FNUM -ge 0 ] ; then find $MBD/* -type f -mtime 20 -exec rm -rf {} \; fi fi done
В этой заметке я покажу пример самого простого бэкап-скрипта на bash Linux.
#!/bin/bash # This is my backup file - created by # here I am setting a time stamp variable which I like to use for logging TIMESTAMP=`date +%Y%m%d.%H%M` # here I am setting up the backup directory as a variable DEST_DIR="/backup/my-backup" # here I am setting up the directory in which I want to backup, again another variable SRC_DIR="/home//Documents" # let's create a variable for the backup file name file FNAME="MyBackup" # let's create a variable for the log file, let's also name the log file with the filename and timestamp it LOG="/home//log/$FNAME-$TIMESTAMP.log" # start the backup, create a log file which will record any messages run by this script echo -e "Starting backup of $SRC_DIR directory" >> ${LOG} # compress the directory and files, direct the tar.gz file to your destination directory tar -vczf ${DEST_DIR}/${FNAME}-${TIMESTAMP}.tar.gz ${SRC_DIR} >> ${LOG} # end the backup, append to log file created by this script echo -e "Ending backup of $SRC_DIR" >> ${LOG}
Сохраняем его в удобном для вас каталоге и задаем выполнение по расписанию. Для этого открываем файл /etc/crontab и в конец добавляем строку:
00 00 * * * root sh /home/backup/backup1c.sh
Собственно сам скрипт ниже. Для его работы должны быть установлены архиватор 7-zip и утилита forfiles. Скрипт представляет из себя bat(cmd) файл, который архивирует указанный каталог, и скидывает его в сетевое хранилище. Время хранения копии в данном примере 10 дней.
net use Y: /delete /y net use Y: \\192.168.0.250\backups\1c backup1c /USER:backup1c IF EXIST Y:\backup (GOTO CREATE_BACKUP) ELSE (GOTO ERROR) :CREATE_BACKUP set Backup=Y: Y: %Backup% for /d %%z in (*) do f:\forfiles.exe /p %%z /d -10 /m *.7z /c "cmd /c del /f /a @file" "f:\Program Files\7-Zip\7z.exe" a -t7z Y:\backup\8\%DATE%.7z E:\Buhgalteria\1C\1c8 F: NET USE Y: /delete /y :ERROR exit
Собственно сам скрипт ниже. Для его работы должны быть установлены архиватор 7-zip и утилита forfiles. Скрипт представляет из себя bat(cmd) файл, который архивирует указанный каталог, и скидывает его в сетевое хранилище. Время хранения копии в данном примере 10 дней.
net use Y: /delete /y net use Y: \\192.168.0.250\backups\1c backup1c /USER:backup1c IF EXIST Y:\backup (GOTO CREATE_BACKUP) ELSE (GOTO ERROR) :CREATE_BACKUP set Backup=Y: Y: %Backup% for /d %%z in (*) do f:\forfiles.exe /p %%z /d -10 /m *.7z /c "cmd /c del /f /a @file" "f:\Program Files\7-Zip\7z.exe" a -t7z Y:\backup\8\%DATE%.7z E:\Buhgalteria\1C\1c8 F: NET USE Y: /delete /y :ERROR exit