LINUX.ORG.RU
решено ФорумAdmin

Удаление файлов после выполнения бэкапа

 


0

1

Добрый день, пытаюсь настроить бэкапы mysql с помощью bacula. Написал такой джоб

Job {
  Name = "spass.mysql"
  Type = Backup
  Level = Full
  Client = spass-fd
  RunScript {
    RunsWhen = Before
    FailJobOnError = No
    RunsOnClient = Yes
    Command = "/usr/bin/mysqldump -EB syspass --result-file /tmp/syspass-%i.sql"
  }
  Client Run After Job = "/usr/bin/rm -f /tmp/*.sql"
  Schedule = "WorkTimeEveryHour"
  Storage = File-spass
  Pool = spass
  FileSet="spass.mysql"
  Messages = Standard
  Priority = 10
  Write Bootstrap = "/var/spool/bacula/%c_%n_%e.bsr"
}

Всё работает кроме Client Run After Job. У файлов права 655 и владелец root и видимо поэтому он их не может удалить. Подскажите, как удалять файлы после выполнения бэкапа?

Варианты

Вариант 1: создавать файлы которые не-root потом сможет удалить.

Вариант 2: прописать /usr/bin/rm с ограниченным набором параметров в sudoers для пользователя который это должен выполнять.

Camel ★★★★★ ()
Ответ на: Варианты от Camel

Вариант 3: запускать bacula-fd от root.
Вариант 4: запускать dump баз тоже из bacula-fd.

zgen ★★★★★ ()
Последнее исправление: zgen (всего исправлений: 3)
Ответ на: Варианты от Camel

Я посмотрел, клиент запущен от root:

ps aux | grep [b]acula
root       960  0.0  0.2 409140  5200 ?        Ssl  Jun07   0:52 /usr/sbin/bacula-fd -f -c /etc/bacula/bacula-fd.conf -u root -g root

Но файлы всё равно не удаляются, и при этом ошибок никаких нет

nspickiy ()
Ответ на: комментарий от nspickiy
14-Jun 17:30 bnode10-dir JobId 368: Using Device "FileStorage-spass" to write.
14-Jun 17:30 spass-fd JobId 368: shell command: run ClientBeforeJob "/usr/bin/mysqldump -EB syspass --result-file /tmp/syspass-368.sql"
14-Jun 17:30 bacula-sd JobId 368: Volume "spass0006" previously written, moving to end of data.
14-Jun 17:30 bacula-sd JobId 368: Ready to append to end of Volume "spass0006" size=996959515
14-Jun 17:30 spass-fd JobId 368: shell command: run ClientAfterJob "/usr/bin/rm -f /tmp/*.sql"
14-Jun 17:30 bacula-sd JobId 368: Elapsed time=00:00:01, Transfer rate=1.003 M Bytes/second
nspickiy ()
Ответ на: комментарий от nspickiy

А так?

Command = "sh -c 'rm -f /tmp/*.sql'"

Вернее попробуй еще добавить конструкцию:

RunScript {
    FailJobOnError = Yes
    RunsOnClient = Yes
    RunsWhen = After
    Command = "sh -c 'rm -f /tmp/*.sql'"
  }
dober ()
Последнее исправление: dober (всего исправлений: 1)
Ответ на: комментарий от nspickiy

/usr/bin/rm

А это точно так? ЕМНИП обычно rm лежит в /bin, а не в /usr/bin

Поэтому запуск через шелл с относительным путем помог - шелл сам нашел его где нужно

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Дополню

rm -f /tmp/*.sql

не самая лучшая конструкция, мало ли кто еще туда для работы *.sql положит. Лучше в отдельный каталог ну или как минимум rm -f /tmp/syspass-*.sql

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