Автоматическая синхронизация директорий / папок в Windows

    Две недели назад умер хард. Возникла потребность наладить резервное копирование 1С:УНФ, причём — автоматизированно. Для этого в Windows есть замечательная штука — OneDrive, и всё бы хорошо, но…. Если базу разместить непосредственно внутри директории OneDrive возникают множественные ошибки синхронизации, вызванные одновременным доступом к файлам. Для ручной синхронизации я всегда использовал такую утилиту как FreeFileSync, однако разбираться с автоматизацией там времени не было, нашлось решение лучше.

Robocopy — совершенно потрясающая и примитивная консольная утилитка для Windows. По-умолчанию встроена в систему. Прочитать про неё можно тут  и тут.
Синтаксис — элементарный.
Создаём .bat’ник, со строкой вида:

robocopy C:\SOURCE_DIR C:\TARGET_DIR /MT /E /MIR /Z

Где:
«C:\SOURCE_DIR» — имя и путь папки источника
«C:\TARGET_DIR» — имя и путь папки назначения
/MT — включить многопоточность, /E — рекурсивно, /MIR — зеркало папки источника, /Z — в случае сбоя перезапускать задачу.

Сохраняем .bat’ник и добавляем его в планировщик задач с расписанием по вкусу. Готово!

Ручное резервное копирование / backup / перенос сайта.

Все последующие действия применимы не только для резервного копирования в ручном режиме (автоматизации процесса коснемся позже), но и для переноса сайта с одного хостинга/сервера на другой.

Итак. Сервер у нас есть и работает. Сайты на нём работают, люди туда заходят, коменты пишут. Пора позаботится о важной процедуре — резервном копировании / backup’e.
Лучше всего конечно, что бы нам наш бэкап так и не пригодился 🙂
Вводные данные — web-сервер на FreeBSD, Apache, весь софт настроен и готов к бою.
Первый шаг — создание архива содержащего непосредственно сам сайт — файлы движка, .php и .html страницы. Архива рабочей директории апача — Document Root.
Для того, что бы понять, где она у нас, искомая директория прибегнем к конфигу Апача.
Для начала найдём его:

#find / -name httpd.conf
#ee /usr/local/etc/apache24/httpd.conf

В открывшемся файле ищем строку:

#DocumentRoot "/usr/local/www/apache24/data"

Но помним, что директория может быть любая — я, например часто меняю на более удобную для себя. Если же мы используем Virtual Hosts (несколько доменов/сайтов на одном сервере), то не лишним будет заглянуть и сюда:

#ee /usr/local/etc/apache24/extra/httpd-vhosts.conf

Убедившись, что ничего не забыли, начинаем создавать архив:

#tar -cvf /usr/home/username/BACKUP.tar /usr/local/www/apache24/data

Теперь дело за малым: соединившись с нашим сервером по FTP скачиваем с него наш архив. О том, как настроить простейший FTP я писал здесь: http://sbin.su/?p=20

Осталась последняя задача — выгрузка баз данных. Это делается через веб-интерфейс PHPMyAdmin.
Снова заглядываем в конфиг Apache и ищем там алиас PHPMyAdmin:

#ee /usr/local/etc/apache24/httpd.conf

Выглядит как правило так:

# Alias /phpmyadmin "/usr/local/www/phpMyAdmin/"

Так что, ищем что-то похожее. Соответственно phpmyadmin доступен по адресу: www.vash-sayt.ru/phpmyadmin , где вместо vash-sayt.ru вам нужно вставить ваш домен.

Заходим, выбираем нужную нам базу и нажимаем «экспорт«.
Все. Начнётся скачивание файла с расширением .sql — базой данный вашего сайта.
That’s all, folks!