以下内容应使用日期作为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/