以下内容应使用日期作为tar文件,并在创建.tar.gz文件后,检查是否存在30天以上的文件,如果是,则将其删除。
这是我在systemd中执行它时得到的。直接输入到命令行时,它可以正常工作:

执行:journalctl -u backup.service

Jun 12 14:42:39 Debian-84-jessie-64-LAMP systemd[1]: Starting Backing up folders (/var/www/)...
Jun 12 14:42:39 Debian-84-jessie-64-LAMP systemd[1]: Started Backing up folders (/var/www/).
Jun 12 14:42:39 Debian-84-jessie-64-LAMP tar[27620]: /bin/tar: Von den Optionen „-Acdtrux“, „--delete“ oder „--test-label“ ist j
Jun 12 14:42:39 Debian-84-jessie-64-LAMP tar[27620]: „/bin/tar --help“ oder „/bin/tar --usage“ gibt weitere Informationen.
Jun 12 14:42:39 Debian-84-jessie-64-LAMP systemd[1]: backup.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 12 14:42:39 Debian-84-jessie-64-LAMP systemd[1]: Unit backup.service entered failed state.


备份服务

[Unit]
Description=Backing up folders (/var/www/)

[Service]
WorkingDirectory=/backup/www/
ExecStart=/bin/tar -czpf "backup_$(date '+%y-%m-%d').tar.gz" /var/www/ && find /backup/www/ -maxdepth 0 -name "backup_*.*" -mtime +30


备份计时器

[Unit]
Description=Make Backup of /var/www/

[Timer]
OnCalendar=weekly
Persistent=true

[Install]
WantedBy=timers.target

最佳答案

您已问到常见问题解答Why do things behave differently under systemd?的变体。

在该FAQ的答案中,您会注意到系统具有更加严格的命令行语法,如man systemd.service中的COMMAND LINES中所述。

请记住,您可以有多条ExecStart=行,因此您无需使用&&语法,只需添加一条额外的ExecStart=行。

您的文字说您的命令将删除30天以上的文件,但它不会尝试这样做。在您发布的内容中,将运行find命令,但没有remove命令。

关于linux - systemd:tar(备份)问题backup.service,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50818591/

10-16 08:31