LINUX.ORG.RU

Помогите решить задачу резервного копирования определенных файлов каждые 6 часов

 , , ,


0

1

Имеется машина с Zentyal 3 на базе Ubuntu. На данной машине настроены самба шары. Есть некоторые файлы, которым необходимо каждые 6 часов, делать резервные копии.

Думается следующее: 1.0 Задача крон с циклом в 6 часов. 1.1 Поиск всех файлов, с разрешением .doc, .docx, .xls, .xlsx, .txt и добавление их в архив, с именем времени создания(backup_2013_01_04_1507.***). Подскажи те пожалуйста подробно, как это реализовать, что бы работало автоматически, включая автозапуск.

Если возможно лучше или иначе, то предложите пожалуйста.


Ответ на: комментарий от darkenshvein

поиском занимается утилита find архивированием - одноимённые утилиты обычно. Их объединяют через пайп | подставляя маску файла и узнавая время, так же через date|egrep

darkenshvein ★★★★★ ()
Ответ на: комментарий от i_gnatenko_brain

в cron: (crontab -e)

0 */6 * * * find /path/to/original/files -name '*.doc*' -or -name '*.xls*' -or -name '*.txt' -print0 | xargs -r0 tar zcf /path/to/backups/backup-`date +%F-%H`.tgz

Как-то так. ТС, с тебя пирожок.

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

ну и вторая сточка, стирающая старые бэкапы (в данном примере более 3-х дней):

0 23 * * * find /path/to/backups/ -name 'backup*tgz' -mtime 3 -delete
beastie ★★★★★ ()
Ответ на: комментарий от darkenshvein

знал бы в чем затруднение, не спрашивал. а вообще решил спросить, искать было лень. буду читать тогда по утилитам, и учить их на деле.

Приходит сисадмин на том свете к Богу и жалуется: «За что меня в ад отроутили?». Бог протягивает ему Библию и говорит: «RTFM!».

blqs ()
Ответ на: комментарий от i_gnatenko_brain

буду учить, и разбираться. до этого даже не представлял что все намного проще чем оказалось.

blqs ()
Ответ на: комментарий от beastie

убили.
буду сидеть и понимать, каждый параметр.
а пирожок с чем.
ещё раз убили. Даже не мечтал.
Вся логика сводится к тому, что команда финд ищет нужное по критериям, и передает найденное дальше. [[Благодарен]]

blqs ()
Ответ на: комментарий от blqs

а вообще решил спросить, искать было лень

Бывает) у меня самого тоже

darkenshvein ★★★★★ ()
Ответ на: комментарий от blqs

ничё она не передаёт. Я бы так деньги с бони качал тада. Передают пайпы. С ними тоже внимательнее.

darkenshvein ★★★★★ ()
Ответ на: комментарий от beastie

до манов дело не дошло.
но поэкспериментировал.
А может есть какой скриптец, с кнопками, добавляющий теги лоркода? Ато жутко муторно менять раскладки.

find /home/samba/shares/public_all/ -name '*.xls*' -print0 | xargs -r0 tar zcvf /home/samba/shares/public_all/backup-`date +%F-%H-%M`.tgz

используя это, архив создается. но содержимое архива получается следующего вида «/home/*/*/*/*.*», какой параметр поможет добавлять типа ".*.*"? Т.е. пакуя в архив, делать из относительного пути, абсолютный?

blqs ()
Ответ на: комментарий от blqs

самый простой вариант, дабы избавиться от полных путей:

(cd /home/samba/shares/public_all/ && find . -name '*.xls*' -print0 | xargs -r0 tar zcf backup-`date +%F-%H-%M`.tgz)

beastie ★★★★★ ()
Ответ на: комментарий от beastie

вопрос решен. решил также. добавил в крон с ZIPом.
Спасибо за помощь.

blqs ()
Ответ на: комментарий от beastie

Итак. Создал файл «bckp» и поместил его в «/etc/cron.d» с содержимым:

*/1 * * * * cd /home/samba/shares/public_all/ && find . -name '*.xls*' -print0 | xargs -r0 zip -9 /home/samba/shares/public_all/backups/backup-`date +%F-%H-%M`.zip

И скрипт не выполняется.
Подскажите что делаю не так?

blqs ()
Ответ на: комментарий от beastie

опять таки без изменений.
Как проверить, подхватывает ли крон файл?

blqs ()

01. ложу в файл «/etc/cron.d/backup-share-public_all» следующее содержимое.

«*/1 * * * * cd /home/samba/shares/public_all/ && find . -name '*.xls*' -print0 | xargs -r0 zip -9 .home/samba/shares/public_all/backups/backup-`date +%F-%H-%M`.zip» или «*/1 * * * * root cd /home/samba/shares/public_all/ && find . -name '*.xls*' -print0 | xargs -r0 zip -9 .home/samba/shares/public_all/backups/backup-`date +%F-%H-%M`.zip»

02. На всякий случай выполняю: /etc/ini.d/cron restart.

03. Скрипт не выполняется.

04. Выполняю: grep cron /var/log/syslog «Jan 14 12:05:01

zentyal3 cron[15251]: (*system*backup-share-public_all) INSECURE MODE (group/other writable) (/etc/cron.d/backup-share-public_all) Jan 14 12:06:01 zentyal3 cron[15251]: (*system*backup-share-public_all) INSECURE MODE (group/other writable) (/etc/cron.d/backup-share-public_all) Jan 14 12:07:01 zentyal3 cron[15251]: (*system*backup-share-public_all) INSECURE MODE (group/other writable) (/etc/cron.d/backup-share-public_all)»

04. Также пробовал через: crontab -e. В логах появляется только запись об открытии и закрытии документа рутом.

Подскажите какие ещё нужно выполнить команды/привести логи (желательно команду целиком). Или направьте меня на мои ошибки

blqs ()
Ответ на: комментарий от Vit

До этого тоже пробовал им.
Но через гуй неудобно. и также не работал.

blqs ()

Исправил ошибки с правами, синтаксисом.
Файл принимается кроном.
Но нету последствий его выполнения. В логах пусто!

blqs ()
Ответ на: комментарий от blqs

После рестарта крона, ничего не происходит. Права 0600. Логи также не пишуться.

Jan 14 15:33:01 zentyal3 kernel: [358157.661553] init: cron main process (30380) killed by TERM signal
Jan 14 15:33:01 zentyal3 cron[30468]: (CRON) INFO (pidfile fd = 3)
Jan 14 15:33:01 zentyal3 cron[30469]: (CRON) STARTUP (fork ok)
Jan 14 15:33:01 zentyal3 cron[30469]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Как определить что случилось? Скрипт вне крона работает отлично.

blqs ()
Ответ на: комментарий от maloi

Почему только ткс, для эксперимента я использую:

*/1 * * * * root cd /home/samba/shares/public_all/ && find . -name '*.xls*' -print0 | xargs -r0 zip -9 .home/samba/shares/public_all/backups/backup-`date +%F-%H-%M`.zip

 т.е ".xls"
blqs ()
Ответ на: комментарий от zolden

Вы правы. Никакой. Но и не повлияет это ни на что я думаю.
Также добавил в файл:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Изменил */1 * * * * на * * * * *.

blqs ()
Ответ на: комментарий от maloi

Если честно. Ничего не пойму, что Вы пытаетесь до меня довести.
Возможно что:

 -name '*.doc*' -or -name '*.xls*' -or

одно и тоже что:
\(  -name '*.txt' -and -print0 \)

??? Извините. Ничего не понимаю. Может расскажете подробнее, что пытаетесь донести?

blqs ()
Ответ на: комментарий от blqs

я говорю, что команда

find /path/to/original/files -name '*.doc*' -or -name '*.xls*' -or -name '*.txt' -print0 
выведет только имена txt файлов, и не выведет имена doc и xls, потому что она эквивалентна команде
find /path/to/original/files -name '*.doc*' -or -name '*.xls*' -or  \(  -name '*.txt' -and -print0 \)
Для того чтобы она выводила в том числе файлы doc и xls необходимо модифицировать её таким образом
find /path/to/original/files \( -name '*.doc*' -or -name '*.xls*' -or -name '*.txt' \) -print0

что из вышенаписанного непонятно?

maloi ★★★★★ ()
Ответ на: комментарий от maloi

аа. понятно. Спасибо. Я ещё только играюсь. Поэтому и узнаю постоянно новою. И пока что визуально не все схватываю.

blqs ()

По совету людей, модифицировал, для вывода результата в файл.

В логах пусто.

Сейчас задание крон выглядит вот так.

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * root (cd /home/samba/shares/public_glcert_all/ && find . -name '*.xls*' -print0 | xargs -r0 zip -9 /home/samba/shares/public_glcert_all/backups/backup-`date +%F-%H-%M`.zip) 2>~/cron-stderr.txt >~/cron-stdout.txt




blqs ()
Ответ на: комментарий от maloi

точно, в root лежат.

stderr пустой, stdout содержит инфо типа название файла (deflated 25%)

Думал «/» это всегда корень. Спасибо за направление.

Странно, почему нигде архива то нету.

find / -name 'b*zip' -print от корневой директории.

не нашла ничего кроме существующих.

blqs ()
Ответ на: комментарий от blqs

Думал «/» это всегда корень. Спасибо за направление.

/ - всегда корень, а у тебя написано «~/» - а это «Tilde Expansion», который заменяется на домашнюю папку текущего пользователя.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

После отправки поста рассмотрел внимательнее и увидел. действительно много интересного. К сожалению не могу править посты, поэтому и не отредактировал.

blqs ()

И так. Заданчие работает. Но только если, из команды убрать:

«date +%F-%H-%M»

Как добавление к имени файла.

Подскажите чем можно заменить данную команду, что бы она воспринималась и обрабатывалась в cron?

blqs ()
Ответ на: комментарий от maloi

Согласно Вашему совету изменил параметры команды find. Увы, если добавить

\( -name '*.doc*' -or -name '*.xls*' -or -name '*.txt' \)

То крон выполняет его ежеминутно в любом случае независимо от указанных временных параметров.. Если убрать знак терминации, или как правильно называется!? (\), то скрипт и правда пакует лишь ткст. Скрипт работает только если в имени создаваемого файла указать:

backup-`date +\%F-\%H-\%M`.zip.

Как указать несколько типов файлов что бы они обрабатывались кроном?

blqs ()
Ответ на: комментарий от blqs
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


* */6 * * * root cd /home/samba/shares/public_all/ && find . -regex '.*\(xls\|doc\|txt\).*' -print0 | xargs -r0 zip -9 /home/samba/shares/public_all/backups/backup-`date +\%F-\%H-\%M`.zip



SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


* 6 * * * root cd /home/samba/shares/public_all/backups/ && find . -name 'backup*zip' -mtime +7 -delete



Вот полностью рабочий, и соответствующий требованиям скрипт. Всем спасибо за участие, критику, помощь, комментарии.

blqs ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.