Skip to content

Instantly share code, notes, and snippets.

@sukhikh18
Last active January 29, 2023 09:12
Show Gist options
  • Save sukhikh18/d0420085ccb5d835595ed400b4bc9b38 to your computer and use it in GitHub Desktop.
Save sukhikh18/d0420085ccb5d835595ed400b4bc9b38 to your computer and use it in GitHub Desktop.
Как сделать резервную копию (backup) сайта через консоль #Bitrix

Бэкап базы данных

mysqldump -h$host -u$username --password="$password" --no-tablespaces $database > ./database-`date '+%Y%m%d'`.sql

Запись в базу данных из файла

cat ./database-[tab] | mysql -h$host -u$username --passwprd="$password" $database

* Переменные (слова начинающиеся с $) заменить на свои данные.

Архивация файлов

tar -czhvf ./files-`date '+%Y%m%d'`.tar.gz \
  --exclude '*bitrix/tmp/*' \
  --exclude '*bitrix/updates/*' \
  --exclude '*bitrix/backup/*' \
  --exclude '*bitrix/*cache/*' \
  .

Распаковка файлов

tar -zxv files-[tab]

или cat files* | tar -zxv - для многофайловых

Где флаги означают:

c = Создать файл
x = Распаковать архив

z = Gzip
h = Архивировать файлы вместо символичных ссылок
v = Выводить информацию на экран
f = Имя файла
--exclude = исключить файлы

* Вместо [tab] используйте клавишу tab для автозаполнения

Дополнительная информация

Использование tar в Linux и FreeBSD для работы с архивами
Резервное копирование по расписанию

#!/bin/sh
# How to use with cron:
# 0 1 * * * /home/developer/bin/bitrix-backup.sh /var/www/developer-site backup
#
date=`date '+%Y%m%d%H%I%S'`
# Корневая папка сайта
doc_root=$1
# Название архива сайта
name=$2_$date
# Путь до файла конфигурации
dbconn=$doc_root/bitrix/php_interface/dbconn.php
# Папка где хранятся архивы сайта
backup_dir=$doc_root/bitrix/backup
if [ -z $doc_root ]; then
echo Usage: $0 /path/to/document/root [backup_name]
exit
fi
if [ ! -e $backup_dir ]; then
mkdir $backup_dir
fi
# Получить значение опции из конфига
readcfg() {
grep $1 $dbconn | sed 's/.*"\(.*\)".*/\1/'
}
host=`readcfg DBHost`
username=`readcfg DBLogin`
password=`readcfg DBPassword`
database=`readcfg DBName`
if [ ! -e $backup_dir ]; then
mkdir $backup_dir
fi
cd $doc_root &&
echo 'Dump database' &&
mysqldump -h$host -u$username -p$password --no-tablespaces $database > $backup_dir/$database-$date.sql &&
tar -cf $backup_dir/$name $backup_dir/$database-$date.sql &&
echo 'Dump files' &&
tar -rhf $backup_dir/$name \
--exclude '*bitrix/tmp/*' \
--exclude '*bitrix/updates/*' \
--exclude '*bitrix/backup/*' \
--exclude '*bitrix/*cache/*' \
* &&
gzip -f -9 $backup_dir/$name &&
split -b 1024M $backup_dir/$name $name.gz.part &&
echo 'Clear' &&
rm $backup_dir/$database-$date.sql &&
rm $backup_dir/$name &&
find $backup_dir -mtime +3 -exec rm {} \; && echo 'OK' && exit
echo 'Error'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment