我写bash 脚本在系统启动时从远程文件夹备份一些文件。
因此在系统启动时它会在单元文件中挂载远程共享:
[Unit]
Description=CIFS Share from spr1-backup01
After=network-online.target
[Mount]
What=//192.168.18.12/oracle_backup
Where=/mnt/smb
Type=cifs
Options=ro,vers=2.1,credentials=/root/creds/.cred_oralocalsys
[Install]
WantedBy=multi-user.target
然后备份单元启动(/root/nas/sender.sh 是我的备份脚本)
[Unit]
Description=Backup oracle database
After=mnt-smb.mount
[Service]
Type=simple
ExecStart=/root/nas/sender.sh
StandardOutput=journal
[Install]
WantedBy=multi-user.target
问题是,如果在启动时自动启动,它会跳过实际的备份过程(我指的是之前提到的 bash 脚本中的 rsync 部分)。如果我手动运行此脚本,一切都会正常并按预期运行。
知道为什么会发生这种情况吗?
答案1
systemd 是适合这项工作的工具吗?cron 允许您指定在启动时应运行一次的任务。
@reboot /path/to/job
这样,备份就可以与其他操作同时运行。如果备份需要几个小时才能完成,那么每次重启时都运行备份可能会成为一场操作噩梦。