Проблема с tar при использовании таймера Systemd

У меня есть сервер Ubuntu 16,04 машин сервера с установленным MSSQLServer.
Я пытаюсь создать запланированное резервное копирование для баз данных на еженедельной основе на 16:00:00 в четверг.

Сценарий для создания резервного копирования:

#!/bin/bash
echo "Creating backup directory"
fn="backup-"$(date +"%d-%m-%Y")
dir="/data/mssql/$fn"
echo $dir
mkdir $dir
echo "Creating backups"
sqlcmd -H localhost -U SA -P Password -Q "Backup database [DB1] to disk='$dir/DB1.bak'"
sqlcmd -H localhost -U SA -P Password -Q "Backup database [DB2] to disk='$dir/DB2.bak'"

echo "Backups created, creating MD5 checksums"

md5sum $dir/* > $dir/checksum

echo "Checksums created, preparing for upload by compressing folder"

tar -zcvf $fn.tar.gz $dir

Я использую Таймеры Systemd для планирования процесса резервного копирования:
sqlback.timer:

[Unit]
Description= Schedule a weekly backup of MS-SQL Server database

[Timer]
OnCalendar=thu 16:00
Persistent=true
Unit=sqlback.service

[Install]
WantedBy=timers.target

и сервисный файл:

[Unit]
Description= Create weekly backup of MS-SQL Server databases for the DB1 and DB2

[Service]
User=mssql
Group=mssql
Type=simple
ExecStart=/bin/bash /usr/bin/sql_backup.sh

[Install]
WantedBy=multi-user.target

Когда сервис запускается в его расписании, резервное копирование создается успешно, затем должен сжаться, tar сбои и дают следующее сообщение:

آب 15 12:53:22 main bash[9576]: tar: backup-15-08-2018.tar.gz: Cannot write: Broken pipe
آب 15 12:53:22 main bash[9576]: tar: Error is not recoverable: exiting now

Однако, если я запускаю скрипт вручную с помощью sudo и su, все работает правильно.

1
задан 15 August 2018 в 13:23

1 ответ

Дайте полный путь в fn переменная. Или добавьте

 cd $dir

Также проверьте если mssql у пользователя есть полномочия записать в резервном каталоге.

1
ответ дан 7 December 2019 в 15:15

Другие вопросы по тегам:

Похожие вопросы: