Войти

Показать полную графическую версию : Автоматически забирать бэкап с хостинга


SenatoR_Dmr
23-09-2016, 14:01
Доброго времени суток.
На хостинге настроено ежедневное бэкапирование базы данных и самого сайта в отдельную папку на хостинге (backups).
Создан FTP-пользователь с паролем для прямого подключения к папке backups

Нужно настроить еженедельное (по субботам, например) копирование архива сайта и архива с базой данных (2 файла) с хостинга на внутренний сервер. Глубина вложения по схеме:
Должен быть каталог webArchive, внутри еще каталог site, внутри подпапки:
- В папке Year Хранить копию архива каждого 3 января года (т.е. папки ГГГГ_01_03, в которой два архива - база и сайт)
- В папке Month Хранить копию архива 1 числа каждого месяца последние 12 месяцев (т.е. папки с архивами от ГГГГ_01_01 до ГГГГ_12_01)
- В папке Last8Weeks Хранить копию архива последних 8-ми субботних архивов (папки ГГГГ_ММ_ДД с архивами)
При создании каждого из архивов должен приходить отчет на почту об успешном или не успешном копировании файла на сервер

Архивы в папке хостинга лежат в формате:
db_ГГГГ-ММ-ДД.gz
site_ГГГГ-ММ-ДД.tar.gz

Помогите, пожалуйста, как правильно это реализовать, и вообще, возможно ли?

SenatoR_Dmr
24-09-2016, 13:02
Пока сделал такой код в обычном BAT-нике, чтобы он сливал эти два файла в нужную папку с FTP:
@echo off
::Задаем параметры подключения
set host=ftp.name.nichost.ru
set user=name
set password=pass
set Mainfolder=
set SubFolder=/%date:~6%-%date:~3,2%-%date:~0,2%
set fileMask=*
set LocalFolder=c:\webArchive\site\%date:~6%-%date:~3,2%-%date:~0,2%

::Временный файл команд для утилиты FTP.exe
set BackupFTP="%temp%\FTP_Backup.txt"

::Генерируем файл FTP команд
> %BackupFTP% (
echo open %host% %port%
echo %user%
echo.%password%
echo binary
echo prompt
echo hash
md %LocalFolder%
echo lcd "%LocalFolder%"
if "%Mainfolder%" neq "" echo cd "%Mainfolder%"
if "%SubFolder%" neq "" echo cd "%SubFolder%"
echo mget %fileMask%
echo disconnect
echo quit
)

::Добавляем утилиту FTP в исключения брандмауера Windows
netsh firewall add allowedprogram "%windir%\system32\ftp.exe" ENABLE

::Запускаем на выполнение пакетник команд FTP
ftp.exe -s:%BackupFTP%

::Удаляем пакетник
del /f /q %BackupFTP%
pause

Вопрос: как сделать, чтобы он чекал папки и оставлял последние 8 папок с архивами?

А остальные удалял.

SenatoR_Dmr
25-09-2016, 20:26
Так, это тоже сделал, добавив:
forfiles /p "C:\webArchive\site" /d -56 /c "cmd /c if /i @isdir equ true rd /q /s @path"
Остались следующие вопросы:
1. Как сделать, чтобы БАТ-ник запускался в "тихом" режиме, не выводя консольное окно?
2. Как реализовать корректную запись лога выполнения БАТ-ника в txt-файл, например:
ВРЕМЯ ГГГГ_ММ_ДД Файл1 успешно/не успешно загружен в ПАПКА Файл2 успешно/не успешно загружен в ПАПКА.
Если не успешно - пишет причину (сбой соединения, невозможность подключения...)
3. Как настроить автоматическую отправку письма на e-mail об успешности/не успешности выполнения БАТ-ника (если какой-то из файлов загружен с ошибкой или не удалось подключиться к FTP - считать выполнение не успешным).




© OSzone.net 2001-2012