Делаем резервную копию файлов с сервера FTP

Не смотря на почетный возраст протокола FTP, он по прежнему используется для доступа ко многим ресурсам, например к хостингам сайтов. В данной статье пойдет речь о том, как можно создать резервную копию файлов с FTP сервера, сперва скачав их, а затем заархивировав.


Содержимое статьи:

Используемые программные средства

Для этой цели прекрасно подойдут утилиты WinSCP и 7zip. Первая — клиент SFTP/FTP/SCP, который имеет так же замечательную возможность работы только через командную строку, что значительно упрощает автоматизацию задачи создания бэкапа. 7zip же — один из самых известных свободных архиваторов, ни в чём не уступающий своим платным аналогам.

Сразу отмечу, что в статье речь пойдет о портабельных версиях выше упомянутых программ, по этому если вы будете полностью устанавливать их на свой компьютер, обратите внимание на необходимость изменения путей в bat скриптах.

Почему портативная версия?

Меньше зависимостей, возможность легкого переноса скрипта под бэкап, где для его работы в самом худшем случае понадобиться только редактирование путей.

Подключение и архивация

И так, предположим мы имеем доступ по FTP к сайту sysadmin.ru, и хотим создать резервную копию всех файлов веб-сервера. Для того, чтобы сделать это, скачиваем портативную версию WinSCP, кладем её по произвольному пути (пусть это будет »D:\Backup\sysadmin.ru»). Затем скачиваем так же портативную версию 7zip, и кладем её туда же.

Теперь создаем .bat файл следующего содержания

set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%yyyy%.%mm%.%dd%

cd "D:\backup\sysadmin.ru\"
D:
winscp.com /command ^
    "open ftp://ЛОГИН:ПАРОЛЬ@АДРЕС СЕРВЕРА" ^
    "get /www/* D:\Backup\sysadmin.ru\%curdate%" ^
    "exit"
"7z.exe" a -t7z -mx8 -m0=lzma2 -mmt=8 -ssw -scsWIN -sdel "D:\Backup\sysadmin.ru\sysadmin.ru-%curdate%.7z" "D:\Backup\sysadmin.ru\%curdate%\*"
rmdir /s/q "D:\Backup\sysadmin.ru\%curdate%"

Что же происходит в данном bat файле? Разберем его содержимое по пунктам.

set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%yyyy%.%mm%.%dd%

Просто формируем красивую дату в формате ГОД.МЕСЯЦ.ДЕНЬ, для её дальнейшего использования в скрипте.

cd "D:\backup\sysadmin.ru\"
D

Данные команды выполняют переход в категорию из которой мы будем работать с исполняемыми файлами FTP клиента и архиватора, а так же хранить архивы.

winscp.com /command ^
    "open ftp://ЛОГИН:ПАРОЛЬ@АДРЕС СЕРВЕРА" ^
    "get /www/* D:\Backup\sysadmin.ru\%curdate%" ^
    "exit"

Здесь мы запускаем FTP клиент и качаем всю папку www, которая хранится в корне сервера (предполагается, что там расположены нужные нам файлы), лежать скачанные файлы будут по адресу »D:\Backup\sysadmin.ru\текущая-дата».

"7z.exe" a -t7z -mx8 -m0=lzma2 -mmt=8 -ssw -scsWIN -sdel "D:\Backup\sysadmin.ru\sysadmin.ru-%curdate%.7z" "D:\Backup\sysadmin.ru\%curdate%\*"

Архивируем все скачанные файлы в архив с текущей датой.

rmdir /s/q "D:\Backup\sysadmin.ru\%curdate%"

Удаляем ранее скачанные файлы, которые нам больше не нужны.

Теперь достаточно просто запустить данный bat файл, и все действия будут выполнены автоматически — файлы будут скачаны и заархивированы. Все что остается — это поместить данный файл в Планировщик задач.



© ИТ Основа