webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...

Как настроить крон для бекапов?

Собственно, подскажите, куда копнуть.
Нужно в определенное время (возможно раз в несколько часов) копировать определенные файлы и папки в папку /mnt/yandexdisk/
Все файлы на точке назначения нужно заменять.
Напрашивается два вопроса:
1. Как сделать копирование через bash скрипт?
2. Как запустить баш по крону?
Или есть другое решение, более изящное или более интересное :)
Буду рад любой помощи.
  • Вопрос задан
  • 4899 просмотров
Решения вопроса 2
DevMan
@DevMan
1. не нужно писать никаких скриптов, команду для копирования можно записать непосредственно в кроне.
2. crontab -e и вставляете время и нечто вроде rsync -avzh /from /to. время можно сгенерировать при помощи crontab.guru
в итоге должно получиться что-то вроде:
0 0 * * * rsync -avzh /from /to - запуск бекапа каждый день в полночь.
Ответ написан
Комментировать
Dep3kuu
@Dep3kuu
Веб-разработка и любая интернет реклама
1. Создаем файл скрипта

cd ~/
touch backup.sh
chmod +x backup.sh

2. Пишем сам скрипт

#!/bin/bash
# rsync - лучше, чем cp по ряду причин, в т.ч. потому что не копирует все файлы перебором, что существенно экономит время/ресурсы. 
# Строка ниже - синхронизация папки /var/www и /mnt/yandexdisk/www, данные синхронятся ИЗ /var/www. 
rsync -az --delete -e /var/www/ /mnt/yandexdisk/www/
rsync -az --delete -e /var/public/ /mnt/yandexdisk/public/
# и т.д. все что нужно копировать. 
# дальше можете выполнять доп.команды типа уведомления на почту, архивации, дампов БД и т.п.

3. Добавляем скрипт в крон (в примере - каждый день в 3 часа ночи)
echo "00 03   * * *   root    ~/backup.sh" >> /etc/crontab
echo " " >> /etc/crontab

Обязательно смотрите, чтобы в корнтабе последняя строка была пустая (хоть один перевод строки после последнего задания в списке).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Ну, у меня давно-давно, года наверное с 2000 работает велосипед. Писался он для FreeBSD, но после небольшой доработки взлетел на линухе. Правда он решает задачку посложнее - копировать весь указанный каталог (или БД, правда понимает только мускл) в точку А, причем в точке А предыдущая информация может как затираться так и не затираться.
Собственно bash по крону запускать бессмысленно - простую команду можно непосредственно записать в кронтаб, сложную - в файл скрипта и имя этого файла - в кронтаб. Где кронтаб? В /etc как правило есть файл crontab, но это "корневой" кронтаб, который я обычно избегаю править. В /etc/cron.d можно создавать файлы типа
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/30 8-17 * * 1-5 root /usr/sbin/my.super.script

Пример немного нетривиальный и означает он, что по рабочим дням (1-5) с 8 до 17 часов раз в полчаса (*/30) будет запускаться my.super.script
Ответ написан
Комментировать
@lubezniy
1. Команда cp - наше фсё.
2. Посмотрите, нет ли у Вас в /etc каталогов cron.* . Если есть, то смотрите /etc/crontab - там поймёте, как идёт запуск по cron. А примеры скриптов, работающих по крону, наверняка найдёте в этих каталогах.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы