Батенька сразу несколько замечаний.
1. Базу дампим желательно через эвал, поскольку пароль может содержать как " так и ' так и { короче нужно извращаться
eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql && echo "Дамп БД $DBNAME будет сохранен в корне сайта" || echo "Ошибка дампа базы данных " $DBNAME")"
2.
А зачем собственно вы храните это все на сервере, не проще сразу заливать в потоке на нужное место.
Из плюсов все плюсы заливки 1 файла поскольку он в канале архивный.
и плюсы все пофайловового копирования поскольку там уже лежит или распакованый если нужн или запакованый сайт.
сейчас поищу где-то уменя были старые файлики похожие.
SITEDIR="/home/bitrix/ext_www" # Папка до названия доменаов
DBCONN="bitrix/php_interface/dbconn.php" # Откуда читать настройки mysql
FTPUSER="backup_ftp" # Логин FTP сервера
FTPPASS="1111111" # Пароль FTP
FTPHOST="11.154.209.177" # сервер FTP
FTPDIR="" # папка на FTP
TMPDIR="/mnt/backup/site" # тут временный файл лежит до отправки
TMPWPUTBASE="/mnt/backup" # wput подставит эту папку как базовую
DATE=`date +"%Y-%m-%d"` # Формат даты в имени файла
DATEYM=`date +%Y`/`date +%m` # Второй форматы даты
LIST=${1:-`ls $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка можно убрать только -L ;)
mkdir -p $TMPDIR/$DATEYM # создаем структ уру каталогов если их нет
for ELEMENT in $LIST
do
if [ ! -f /$SITEDIR/$ELEMENT/$DBCONN ];
then
echo " Файл $SITEDIR/$ELEMENT/$DBCONN не найден, сайт будет без БД!"
else
DBLOGIN=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBLogin}\");")
DBNAME=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBName}\");")
DBPASS=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBPassword}\");")
DBHOST=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBHost}\");")
echo "Найдена BD $ELEMENT"
echo ""
echo "Login: $DBLOGIN"
echo "DB : $DBNAME"
echo "Pass : $DBPASS"
echo "Host : $DBHOST"
echo ""
echo "Дамп БД $DBNAME"
# только через эвал и эхо смогли экранировать все пароли
eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql && echo "Дамп БД $DBNAME будет сохранен в корне сайта" || echo "Ошибка дампа базы данных " $DBNAME")"
chown bitrix:bitrix $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql
fi
echo "Считаем количество Файлов на сайте"
#SIZE=" $(find $SITEDIR/$ELEMENT/$WEB | wc -l)" && echo " В архиве будет $SIZE файлов"
SIZE="$(find $SITEDIR/$ELEMENT/$WEB -not -path "$SITEDIR/$ELEMENT/bitrix/tmp/*" -not -path "$SITEDIR/$ELEMENT/bitrix/updates/*" -not -path "$SITEDIR/$ELEMENT/dev_logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/total_errors/*" -not -path "$SITEDIR/$ELEMENT/.git/*" -not -path "$SITEDIR/$ELEMENT/bitrix/catalog_export/logs/*" -not -path "$SITEDIR/$ELEMENT/bitrix/backup/*" -not -path "$SITEDIR/$ELEMENT/bitrix/cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/managed_cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/stack_cache/*" -not -path "$SITEDIR/$ELEMENT/upload/resize_cache/*" -not -path "$SITEDIR/$ELEMENT/stats/*" | wc -l)" && echo " В архиве будет $SIZE файлов"
echo "Архивируем сайт $ELEMENT прогресс не в килобайтах а в количестве файлов"
tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./dev_logs' --exclude='./upload/1c_import_light/logs' --exclude='./upload/1c_import_light/total_errors' --exclude='./.git' --exclude='./bitrix/catalog_export/logs' --exclude='./bitrix/backup' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . | pv -s $SIZE -l > /dev/null
echo $ELEMENT
# >> /dev/nool 2> /var/log/backup_error.log
rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
echo "Сохраняем $ELEMENT на FTP"
wput --basename=$TMPWPUTBASE -p --no-directories $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"
>> /dev/nool 2> /var/log/backup_error.log
# rm -f $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz
echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://$FTPUSER:$FTPPASS@$FTPHOST/site/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
done
if [ -n "$(cat /etc/nginx/bx/site_enabled/bx_ext_ssl_bike-centre.ru.conf | grep ^ssl_certificate )" ] ; then
echo " Найдены активные сертификаты SSL"
cat /etc/nginx/bx/site_enabled/bx_ext_ssl_bike-centre.ru.conf | grep --perl-regexp "^ssl_certificate\s+.*\.pem" | grep --perl-regexp -o /.+[^\;]
cat /etc/nginx/bx/site_enabled/bx_ext_ssl_bike-centre.ru.conf | grep --perl-regexp "^ssl_certificate_key.*\.pem" | grep --perl-regexp -o /.+[^\;]
wput -u --basename=/etc/ /etc/letsencrypt/live/bike-centre.ru/ ftp://backup_ftp:QWaszx123@178.154.209.177/etc_backup/
# тут в телегу
curl --socks5-basic \-X POST https://api.telegram.org/bot5320773503:************/sendMessage -d chat_id=-676521809 -d \text="Backup site bike-centre.ru OK "
Может что-то из этого покажется полезным
скрипт запускается так
scrypt.sh site.ru
если просто то все сайты бэкапятся, соответственно кажыдй со своей базой со своим названием.
Но тут не в потоке. о этом тут писал.
https://klondike-studio.ru/blog/bystro-skopirovat-...
Так же БД можно заливать сразу на удаленый сервер, притом уже архивную.
Ну и как исключить я вам тут показал.