Делаем резервную копию файлов с сервера 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 файл, и все действия будут выполнены автоматически — файлы будут скачаны и заархивированы. Все что остается — это поместить данный файл в Планировщик задач.