我已经在 ubuntu 12.04 上成功使用了以下脚本。现在我全新安装了 Linux mint 17.1,但 tar 备份脚本无法再工作。它给出了一个错误:
这是脚本,尝试在脚本外部运行并且 tar 有效:
#!/bin/bash
TODAY=$(date +%F)
HOST=$(hostname)
echo "------------- backing up $HOST ------------------"
sudo su - user -c "tar cvpzf /FILES/Media/Programs/Mint/Backup/$HOST$TODAY.tgz --exclude=/proc --exclude=/lost+found --exclude=/FILES/Media/Programs/Mint/Backup/$HOST$TODAY.tgz --exclude=/mnt --exclude=/FILES --exclude=/sys --exclude=/BACKUP --exclude=/MEDIA /"
echo "------------- Finished ------------------"
出现此错误:
: not found/backup.sh: 2: /etc/init.d/backup.sh:
: not found/backup.sh: 5: /etc/init.d/backup.sh:
------------------ng up mint-server
: not found/backup.sh: 7: /etc/init.d/backup.sh:
tar: Removing leading `/' from member names
tar: /\r: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
: not found/backup.sh: 9: /etc/init.d/backup.sh:
------------- Finished ------------------
为什么该脚本在 Mint 17.1 中不起作用?
答案1
早上好!
我不确定为什么您的脚本在 Mint 17.1 上失败,但在 Ubuntu 12.04 上却可以运行 - 但我相信 Ubuntu 12.04upstart
和 Mint 17.1 都使用systemd
这个脚本,所以它会基于此。从错误来看,脚本似乎是由 /bin/sh 运行的,但我认为这与 /bin/dash 相关联,它应该能够解析您的脚本...
你的脚本是 吗/etc/init.d/backup.sh
?你的脚本实际上不是一个符合 LSB 的正确初始化脚本;初始化脚本必须使用标头块声明其依赖项,并响应开始,停止,重新加载等命令 - Debian Wiki 中有很好的描述LSBInitScripts。如果您有/etc/rc.local
脚本,请从那里运行您的脚本。这是放置用户脚本的正确位置,这些脚本应在 init 完成运行级别工作后运行。
我相信 Mint 17 默认使用 systemd,因此如果您没有,rc.local
则需要创建它并通过创建/etc/systemd/system/rc-local.service
包含以下内容的 systemd 服务:
[Unit]
Description=/etc/rc.local Compatibility
[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
StandardInput=tty
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
然后运行
systemctl enable rc-local.service
您使用的任何其他自定义启动脚本都应从此处运行。当然,您可以使用上述内容作为框架,创建单独的 systemd 服务来运行备份,并进行相应修改。
呼呼!