Задать вопрос
@tgarl

Почему не видит папку или файл?

есть файл
#!/bin/bash
tar --exclude='./bitrix'  --exclude='./upload' -vhczf /root/backup/`basename $PWD`-`date '+%Y%m%d'`.tar.gz .


перехожу в папку которую хочу архивировать
cd /../../../...

вызываю sourse полный_путь_к_файлу

в ответ
tar: .\r: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
  • Вопрос задан
  • 1253 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@tgarl Автор вопроса
В моем случае решением является комментарий Lynn «Кофеман»
Пересохраните файл с UNIX-овыми окончаниями строк

Пересохранил и все заработало.

Виктор Таран , спасибо за скрипт
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега Linux
создание бэкапа
60be967c5f0f0182040362.png
Структура бэкапов ( тут примонтирован FTP сервер через cifs)
60be97a6eedb8875107169.png
работает так если запускаешь скрипт то бэкапит все сайты со всеми базами исключает все что нужно. ( каждый сайт отдельно бэкапит свою базу) ну и отдельно каждый сайт.
если через пробел указываеш сайт то scrypt.sh vasya.ru бэкапится только он, так же сразу заливается на фти с ограничением
скорости и прогресс баром.
и подчисткой локальных бэкапов
Так же после бэкапа тебе выкидвыается прямая ссылочка на фтп архив.
доп софт wput и pv его нужно доставить !

#!/bin/sh
# Пример пути до сайта /var/www/site.ru/web/
SITEDIR="/home/bitrix/ext_www"                      # Папка до названия доменаов
DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
FTPUSER="backup_ftp"                                # Логин FTP сервера
FTPPASS="adfadsfasdfa safdw"                        # Пароль FTP
FTPHOST="111.1.11.11    "                           # сервер 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 -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

        rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.

        echo "Сохраняем $ELEMENT на FTP"
        wput  --basename=$TMPWPUTBASE --limit-rate=6000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"

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

rm -r $TMPDIR

В скрипте не задействовано ядро битрикс ВМ дабы можно было его адаптировать на любые другие сервера. Для определения базы данных выполняется dbconn и его переменные используются для бэкапа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект