#bash #systemd #zfs
Вопрос:
У меня есть скрипт bash, который делает снимок ZFS и по трубопроводу загружает его в корзину s3. В этом вся суть:
torun="zfs send -c ztank/data@$BACKUP_NAME | openssl enc -aes-256-cbc -iter 1000 -salt -pass pass:$BACKUP_PASS | lz4c | $s3_command s3 cp --expected-size 188743680 - s3://instamongo.backup/$BACKUP_NAME.lz"
при запуске вручную (с помощью root) он делает именно то, что ожидается.
при запуске через таймер systemd ошибок не возникает, загружается небольшой файл, но при распаковке и расшифровке содержимое остается пустым.
когда я снова запускаю сервисный модуль через systemctl, скрипт работает нормально.
проблема, по-видимому, заключается в том, что только при срабатывании таймера ZFS отправляет пустое содержимое? НО проблема в том, что метки времени в файле журнала показывают, что для завершения загрузки потребовалось обычное время (более 3 часов для исходных данных 900G), поэтому это не имеет смысла.
вот блоки systemd:
[Unit]
Description=backup mongo
ConditionVirtualization=!container
[Service]
User=root
Type=oneshot
WorkingDirectory=/root
ExecStart=/root/s3backup.sh
и
[Unit]
Description=backup mongo once per week
ConditionVirtualization=!container
[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target