Бэкапы с помощью cron и tar
Модератор: Bizdelnick
-
celovec
- Сообщения: 151
Бэкапы с помощью cron и tar
Добрый день, помогите пожалуйста в cron составить команду, которая будет каждые 2 недели в 4 часа ночи, делать tar архивы нескольких папок и сохранять их под именем. bekap_дата.tar (под датой подрузамеваеться день,месяц,год).
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: Бэкапы с помощью cron и tar
Простите, а с чем у Вас проблемы - cron или tar или скрипт?
-
celovec
- Сообщения: 151
Re: Бэкапы с помощью 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
Код: Выделить всё
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
Сделал все как предложил allez, но нужного результата так и не получил. - Выложенный пример не создает архив. Возможно cron при обработке этой строчьке выдает какие-то ошибки, который смогут помочь решению проблемы. Если возможно подскажите где их можно посмотреть?
P.S. Добавляю строчьку так: sudo crontab -u root -e
P.S. Добавляю строчьку так: sudo crontab -u root -e
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Бэкапы с помощью cron и tar
Пустая строка в конце файла есть? Если нет - добавьте, иначе последняя запись отрабатывать не будет. Можно также попробовать указать полные пути к исполняемым файлам.
P. S. Было бы неплохо увидеть здесь, как именно выглядит введенная Вами строка. Сообщения о запуске заданий cron можно поискать в /var/log/messages, /var/log/syslog и т. д. в зависимости от дистрибутива. Чтобы узнать, какие файлы просматривать, можно выполнить следующую команду: sudo grep -rl "cron" /var/log/.
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
Пустая строка в конце файла есть? Если нет - добавьте, иначе последняя запись отрабатывать не будет.
Если не ошибаюсь, этот баг исправили примерно пару тысяч лет назад.
-
celovec
- Сообщения: 151
Re: Бэкапы с помощью cron и tar
Пустые строчьки есть
Сейчас случайно заметил, у меня строчька выглядет немного подругому, а именно так:
Тоесть "-zcf" добавлена "-", может из за нее и проблемы?
Сейчас случайно заметил, у меня строчька выглядет немного подругому, а именно так:
Код: Выделить всё
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
Попробуйте сначала эту команду выполнить вне крона и посмотрите на ошибки если они есть, ну и выложите их сюда. '-' там должен быть, это значит опции начинаются, но я обычно пишу не zcf, а cjf так получается tar.bz2, он как правило места занимает меньше.
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Бэкапы с помощью cron и tar
Имя пользователя забыли. У Вас cron пытается от имени пользователя "tar" выполнить команду "-zcf блаблабла".
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Бэкапы с помощью cron и tar
Оно в данном случае не нужно. Автор правит не общесистемный, а пользовательский кронтаб (и совершенно правильно делает):
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Бэкапы с помощью cron и tar
Однако пользовательский crontab я правил так если память не изменяет:
Код: Выделить всё
crontab -e-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Бэкапы с помощью cron и tar
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
Не везде. В Debian, Ubuntu и их производных этого бага нет, во FreeBSD 7.1 - тоже. А вот в OpenSUSE 11.0, например, он присутствует. И поскольку celovec не указал дистрибутив, которым пользуется, то я почел за благо перестраховаться. :)
-
celovec
- Сообщения: 151
Re: Бэкапы с помощью cron и tar
Ребята так что мне делать? Попробовать после tar указать через какого пользователя запускать эту строчьку?
Да, извените забыл, у меня Ubuntu-Server 7.10.
P.S. В sudo crontab -u root -e у меня помимо этой есть еще 1 строчька(команда) которая нормально работает.
Пробовал так же писать предложенную строчьку allez в sudo crontab -u пользователь -e всеравно не работает.
Да, извените забыл, у меня Ubuntu-Server 7.10.
P.S. В sudo crontab -u root -e у меня помимо этой есть еще 1 строчька(команда) которая нормально работает.
Пробовал так же писать предложенную строчьку allez в sudo crontab -u пользователь -e всеравно не работает.
-
graaf
- Сообщения: 41
- ОС: Debian, Ubuntu
Re: Бэкапы с помощью cron и tar
Код: Выделить всё
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)
"You are ugly and stupid" (Linus Torvalds)
"Stay hungry, stay foolish" (Steve Jobs)
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: Бэкапы с помощью cron и tar
Не помешает на время отладки включить логирование cron-а.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Бэкапы с помощью cron и tar
в конце команды напишите:
1>>/home/user/backup.log 2>>/home/user/backup.log
потом читайте файл /home/user/backup.log
конечно в место user надо поставить то имя пользователя, под которым вы работаете.
1>>/home/user/backup.log 2>>/home/user/backup.log
потом читайте файл /home/user/backup.log
конечно в место user надо поставить то имя пользователя, под которым вы работаете.
-
Serg555
- Сообщения: 128
- ОС: Ub 9.04, OSolaris 5.11, WS
Re: Бэкапы с помощью cron и tar
Я очень заинтересовался продолжением этой темы, поэтому не стал выносить свой вопрос отдельно.
Для моего случая.
Долго мучался с этим. В итоге что есть:
1. tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos
эта команда прекрасна выполняется и архив создается backup_2009-04-29.tgz
2. Исользуя crontab
создается каждую минуту архив с именем backup_.tgz.
3. Установил Shedule Tasks.
Запускаю после выполнения пункта 2
Кликаю изменить текущую конфигурацию, ничего не меняю, далее кликую применить, в итоге получаю сообщение об ошибке в команде tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos:
* * * * * 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
Для моего случая.
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:~$2. Исользуя crontab
Код: Выделить всё
sudo crontab -u sr -e
* * * * * tar -zcf /home/sr/backup_$(date +&F).tgz /home/sr/Photos3. Установил 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
создайте скрипт, в котором будет
Код: Выделить всё
#!/bin/sh
tar -zcf /home/sr/backup_$(date +%F).tgz /home/sr/Photosа уже в этот скрипт вызывайте cron'ом.
ЗЫЖ каждую минуту наверное не получится... впрочем это уже не по теме.
Спасибо сказали:
-
Serg555
- Сообщения: 128
- ОС: Ub 9.04, OSolaris 5.11, WS
Re: Бэкапы с помощью cron и tar
ЗЫЖ каждую минуту наверное не получится... впрочем это уже не по теме.
Да каждую минуту не надо конечно, это я так для примера написал.
-
Serg555
- Сообщения: 128
- ОС: Ub 9.04, OSolaris 5.11, WS
Re: Бэкапы с помощью cron и tar
/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
у меня не 1 и даже не 200 фоток. потому если их запаковывать в тар каждую минуту ничего хорошего не получится. но повторюсь - это уже не по теме
а по теме, то лучше в crontab писать не просто tar, а полный путь к нему... для некоторых команд не срабатывает.
т.е. у меня это /bin/tar
ЗЫ луше не все фотки паковать, а только новые, тогда можно каждую минуту. вроде сам тар так умеет.