【问题标题】:Tar backup errortar备份错误
【发布时间】:2015-06-15 20:04:35
【问题描述】:

我关注了这个问题: How to backup filesystem with tar using a bash script?

但是当我运行脚本时,它会出现以下错误:

: not found/backup.sh: 2: /etc/init.d/backup.sh: 
: not found/backup.sh: 5: /etc/init.d/backup.sh: 
: not found/backup.sh: 7: /etc/init.d/backup.sh: 
: not found/backup.sh: 10: /etc/init.d/backup.sh: 
: not found/backup.sh: 12: /etc/init.d/backup.sh: 
/etc/init.d/backup.sh: 13: /etc/init.d/backup.sh: Syntax error: "(" unexpected

这是我的脚本:

#!/bin/bash

#TODAY=$(date +%F)
#HOST=$(hostname)

mybackupname="backup-fullsys-$(date +%Y-%m-%d).tar.gz"

# Record start time by epoch second
start=$(date '+%s')

# List of excludes in a bash array, for easier reading.

excludes=(--exclude=/FILES/Media/Programs/Mint/Backup/$mybackupname)
excludes+=(--exclude=/proc)
excludes+=(--exclude=/lost+found)
excludes+=(--exclude=/sys)
excludes+=(--exclude=/mnt)
excludes+=(--exclude=/MEDIA)
excludes+=(--exclude=/BACKUP)
excludes+=(--exclude=/FILES)

if ! tar -czf "$mybackupname" "${excludes[@]}" /; then
  status="tar failed"
elif ! mv "$mybackupname" FILES/Media/Programs/Mint/Backup/ ; then
  status="mv failed"
else
  status="success: size=$(stat -c%s backups/filesystem/$mybackupname) duration=$((`date '+%s'` - $start))"


# Log to system log; handle this using syslog(8).
logger -t backup "$status"

有人知道我在哪里出错了吗?

【问题讨论】:

  • 听起来您的文件有回车,并且您正在使用sh file 运行它。请参阅bash tag wiki 上的步骤 1 和 2。此外,+1 包括完整的脚本和完整的错误消息。
  • 您好,感谢您的评论,如果我使用 bash 运行,错误消息会更改为:/etc/init.d/backup.sh: line 2: $'\r': command not found / etc/init.d/backup.sh:第 5 行:$'\r':找不到命令 /etc/init.d/backup.sh:第 7 行:$'\r':找不到命令 /etc/init. d/backup.sh:第 10 行:$'\r':找不到命令 /etc/init.d/backup.sh:第 12 行:$'\r':找不到命令 /etc/init.d/backup。 sh:第 21 行:$'\r':找不到命令 /etc/init.d/backup.sh:第 24 行:意外标记附近的语法错误elif' /etc/init.d/backup.sh: line 24: elif! mv "$mybackupname" 文件/媒体/程序/'int/Backup/;那么
  • 听起来您的文件仍然有回车符。请参阅bash tag wiki 中的第 1 步。
  • 谢谢,是的!

标签: linux backup tar linux-mint


【解决方案1】:

正如“其他人”所说,这里的解决方案是在 bash 文件上运行 dos2unix convert 命令:

sudo dos2unix /etc/init.d/backup.sh

并使用 bash 命令而不是 sh 命令运行它:

sudo bash /etc/init.d/backup.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2016-10-22
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多