Бэкапы с помощью cron и tar

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

celovec
Сообщения: 151

Бэкапы с помощью cron и tar

Сообщение celovec »

Добрый день, помогите пожалуйста в cron составить команду, которая будет каждые 2 недели в 4 часа ночи, делать tar архивы нескольких папок и сохранять их под именем. bekap_дата.tar (под датой подрузамеваеться день,месяц,год).
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Бэкапы с помощью cron и tar

Сообщение IMB »

Простите, а с чем у Вас проблемы - cron или tar или скрипт?
Спасибо сказали:
celovec
Сообщения: 151

Re: Бэкапы с помощью cron и tar

Сообщение celovec »

IMB писал(а):
10.03.2009 10:13
Простите, а с чем у Вас проблемы - cron или tar или скрипт?


1) Как заставить cron запускать каждые 2 недели в 4 часа ночи,
команду: tar -zcf /home/andrej/bekap_дата.tar /var/wоw/ /var/onclv/ /var/solv/ /var/fobase/
2) Не могу с этим разобраться bekap_дата.tar (под датой подрузамеваеться день,месяц,год).
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Бэкапы с помощью cron и tar

Сообщение allez »

Код: Выделить всё

00 04 */14 * * tar zcf /home/andrej/backup_$(date +%F).tgz /var/wоw/ /var/onclv/ /var/solv/ /var/fobase/

Несколько замечаний:
1. Таки "backup". ;)
2. Если tar использует gzip-сжатие (опция z), то в имени файла принято использовать суффикс "tgz", а не "tar".
3. Приведенный мной пример не будет выдерживать точные двухнедельные интервалы, а будет запускаться каждого 14 и 28 числа.
4. Не ленитесь получать знания, особенно если таковые вам нужны. Почитайте как минимум man cron, man sh и man date.
Спасибо сказали:
celovec
Сообщения: 151

Re: Бэкапы с помощью cron и tar

Сообщение celovec »

Спасибо.
Спасибо сказали:
celovec
Сообщения: 151

Re: Бэкапы с помощью cron и tar

Сообщение celovec »

Сделал все как предложил allez, но нужного результата так и не получил. - Выложенный пример не создает архив. Возможно cron при обработке этой строчьке выдает какие-то ошибки, который смогут помочь решению проблемы. Если возможно подскажите где их можно посмотреть?

P.S. Добавляю строчьку так: sudo crontab -u root -e
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Бэкапы с помощью cron и tar

Сообщение allez »

Пустая строка в конце файла есть? Если нет - добавьте, иначе последняя запись отрабатывать не будет. Можно также попробовать указать полные пути к исполняемым файлам.

P. S. Было бы неплохо увидеть здесь, как именно выглядит введенная Вами строка. Сообщения о запуске заданий cron можно поискать в /var/log/messages, /var/log/syslog и т. д. в зависимости от дистрибутива. Чтобы узнать, какие файлы просматривать, можно выполнить следующую команду: sudo grep -rl "cron" /var/log/.
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Бэкапы с помощью cron и tar

Сообщение rm_ »

Пустая строка в конце файла есть? Если нет - добавьте, иначе последняя запись отрабатывать не будет.

Если не ошибаюсь, этот баг исправили примерно пару тысяч лет назад.
Спасибо сказали:
celovec
Сообщения: 151

Re: Бэкапы с помощью cron и tar

Сообщение celovec »

Пустые строчьки есть

Сейчас случайно заметил, у меня строчька выглядет немного подругому, а именно так:

Код: Выделить всё

00 04 */14 * * tar -zcf /home/andrej/backup_$(date +%F).tgz /var/wоw/ /var/onclv/ /var/solv/ /var/fobase/


Тоесть "-zcf" добавлена "-", может из за нее и проблемы?
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Бэкапы с помощью cron и tar

Сообщение Warlornhor »

Попробуйте сначала эту команду выполнить вне крона и посмотрите на ошибки если они есть, ну и выложите их сюда. '-' там должен быть, это значит опции начинаются, но я обычно пишу не zcf, а cjf так получается tar.bz2, он как правило места занимает меньше.
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Бэкапы с помощью cron и tar

Сообщение rm_ »

Имя пользователя забыли. У Вас cron пытается от имени пользователя "tar" выполнить команду "-zcf блаблабла".
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Бэкапы с помощью cron и tar

Сообщение allez »

rm_ писал(а):
27.04.2009 13:38
Имя пользователя забыли. У Вас cron пытается от имени пользователя "tar" выполнить команду "-zcf блаблабла".

Оно в данном случае не нужно. Автор правит не общесистемный, а пользовательский кронтаб (и совершенно правильно делает):
celovec писал(а):
27.04.2009 11:48
P.S. Добавляю строчьку так: sudo crontab -u root -e
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Бэкапы с помощью cron и tar

Сообщение Warlornhor »

Однако пользовательский crontab я правил так если память не изменяет:

Код: Выделить всё

crontab -e
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Бэкапы с помощью cron и tar

Сообщение allez »

man crontab

NAME crontab - maintain crontab files for individual users (ISC Cron V4.1) SYNOPSIS crontab [-u user] file crontab [-u user] [-l | -r | -e]

Но надо отметить, что у автора темы опция -u является избыточной. Она нужна, чтобы от имени root править кронтаб другого пользователя.

P. S. Символ "-" в коротких опциях tar обязательным не является, как, например, и в ps.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Бэкапы с помощью cron и tar

Сообщение allez »

rm_ писал(а):
27.04.2009 12:29
Если не ошибаюсь, этот баг исправили примерно пару тысяч лет назад.
Не везде. В Debian, Ubuntu и их производных этого бага нет, во FreeBSD 7.1 - тоже. А вот в OpenSUSE 11.0, например, он присутствует. И поскольку celovec не указал дистрибутив, которым пользуется, то я почел за благо перестраховаться. :)
Спасибо сказали:
celovec
Сообщения: 151

Re: Бэкапы с помощью cron и tar

Сообщение celovec »

Ребята так что мне делать? Попробовать после tar указать через какого пользователя запускать эту строчьку?

Да, извените забыл, у меня Ubuntu-Server 7.10.

P.S. В sudo crontab -u root -e у меня помимо этой есть еще 1 строчька(команда) которая нормально работает.
Пробовал так же писать предложенную строчьку allez в sudo crontab -u пользователь -e всеравно не работает.
Спасибо сказали:
Аватара пользователя
graaf
Сообщения: 41
ОС: Debian, Ubuntu

Re: Бэкапы с помощью cron и tar

Сообщение graaf »

Код: Выделить всё

tar -czf /home/andrej/backup_$(date +%F).tar.gz /var/wоw/ /var/onclv/ /var/solv/ /var/fobase/


дайте эту команду в терминале и посмотрите, работает или нет.

еще покажите листинг /var/log/messages :)
"If you want to accomplish something in the world, idealism is not enough--you need to choose a method that works to achieve the goal. In other words, you need to be "pragmatic." (Richard M. Stallman)

"You are ugly and stupid" (Linus Torvalds)

"Stay hungry, stay foolish" (Steve Jobs)
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Бэкапы с помощью cron и tar

Сообщение IMB »

Не помешает на время отладки включить логирование cron-а.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Бэкапы с помощью cron и tar

Сообщение drBatty »

в конце команды напишите:
1>>/home/user/backup.log 2>>/home/user/backup.log
потом читайте файл /home/user/backup.log
конечно в место user надо поставить то имя пользователя, под которым вы работаете.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Serg555
Сообщения: 128
ОС: Ub 9.04, OSolaris 5.11, WS

Re: Бэкапы с помощью cron и tar

Сообщение Serg555 »

Я очень заинтересовался продолжением этой темы, поэтому не стал выносить свой вопрос отдельно.

Для моего случая.

1) Как заставить cron запускать каждую минуту,
команду: tar -zcf /home/sr/bekap_дата.tar /home/sr/Photos


Код: Выделить всё

sudo crontab -u sr -e
* * * * * tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos


Долго мучался с этим. В итоге что есть:

1. tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos

Код: Выделить всё

sr@srub:~$ tar -zcf /home/sr/backup_$(date +%F).tgz /home/sr/Photos
tar: Удаляется начальный `/' из имен объектов
sr@srub:~$
эта команда прекрасна выполняется и архив создается backup_2009-04-29.tgz
2. Исользуя crontab

Код: Выделить всё

sudo crontab -u sr -e
* * * * * tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos
создается каждую минуту архив с именем backup_.tgz.
3. Установил Shedule Tasks.
Запускаю после выполнения пункта 2
Кликаю изменить текущую конфигурацию, ничего не меняю, далее кликую применить, в итоге получаю сообщение об ошибке в команде tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos:
Your command contains one or more of the character %, this is special for cron and cannot be used with Gnome-schedule because of the format it uses to store extra information on the crontab line. Please use the | redirector character to acheieve the same functionality. Refer to the crontab manual for more information about the % character. If you don not want to use it for redirection it must be properly escaped with the \ letter.


* * * * * tar -zcf /home/sr/backup_$(date +|&F).tgz /home/sr/Photos так вообще ничего не создается.
* * * * * tar -zcf /home/sr/backup_$(date +\&F).tgz /home/sr/Photos так создается архив backup_&F.tgz
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Бэкапы с помощью cron и tar

Сообщение drBatty »

Serg555 писал(а):
29.04.2009 00:50
создается каждую минуту архив с именем backup_.tgz.

создайте скрипт, в котором будет

Код: Выделить всё

#!/bin/sh
tar -zcf /home/sr/backup_$(date +%F).tgz /home/sr/Photos

а уже в этот скрипт вызывайте cron'ом.

ЗЫЖ каждую минуту наверное не получится... впрочем это уже не по теме.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Serg555
Сообщения: 128
ОС: Ub 9.04, OSolaris 5.11, WS

Re: Бэкапы с помощью cron и tar

Сообщение Serg555 »

ЗЫЖ каждую минуту наверное не получится... впрочем это уже не по теме.

Да каждую минуту не надо конечно, это я так для примера написал.
Спасибо сказали:
Serg555
Сообщения: 128
ОС: Ub 9.04, OSolaris 5.11, WS

Re: Бэкапы с помощью cron и tar

Сообщение Serg555 »

/var/spool/cron/crontabs/sr

Код: Выделить всё

* * * * * sh '/home/sr/for_cron' # JOB_ID_7

Код: Выделить всё

#!/bin/sh
/bin/tar -zcf /home/sr/backup_$(date +%F).tgz /home/sr/Photos

ЗЫЖ каждую минуту наверное не получится... впрочем это уже не по теме.

вроде работает каждую минуту...
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Бэкапы с помощью cron и tar

Сообщение drBatty »

Serg555 писал(а):
29.04.2009 17:02
вроде работает каждую минуту...
у меня не 1 и даже не 200 фоток. потому если их запаковывать в тар каждую минуту ничего хорошего не получится. но повторюсь - это уже не по теме ;)
а по теме, то лучше в crontab писать не просто tar, а полный путь к нему... для некоторых команд не срабатывает.
т.е. у меня это /bin/tar

ЗЫ луше не все фотки паковать, а только новые, тогда можно каждую минуту. вроде сам тар так умеет.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: