Bash 脚本在 WebDAV 中创建目录时失败

Bash script fails on creating directory in WebDAV

为了我的 VPS,我创建了一个 bash 脚本,它将 运行 每三个小时通过一个 cronjob 来备份我的 VPS。所有数据库(在本例中)都将被转储并移动到通过 WebDAV 连接的存储服务上的新文件夹。

它 运行 直到昨天才完美。脚本给我错误:

mkdir: cannot create directory ‘/stack/VPS-Backups/Srv1/Database/07-10-2016_12:00’: No such file or directory

脚本(哪里出错):

#!/bin/bash

DB_BACKUP="/stack/VPS-Backups/Srv1/Database/`date +%d-%m-%Y`_`date +%H:%M`"

# Create the backup directory
mkdir $DB_BACKUP

我已经 checked/procees 以下内容:

我能做什么?感谢您的帮助! :-)

#!/bin/bash
dirname=$(date '+%Y%m%dT%H%M') # subset of an ISO 8601 date (only missing %S)
cd /stack/VPS-Backups/Srv1/Database || exit
mkdir -- "$dirname"

此处封装的显着变化:

  • mkdir 中分离出 cd,以阐明哪些操作失败了。
  • 删除 POSIX 不保证在文件名中有效的字符(portable filename character set)。实际上,这意味着冒号需要去掉。

此外,这遵循 ISO 8601 日期格式准则。这意味着其他软件将能够将您的目录名称解析为开箱即用的日期。使用 YYYYMMDD 还可以防止 MMDDYYYY 和 DDMMYYYY 之间的混淆,并使您的名称的 ASCII 排序顺序与其逻辑排序顺序相匹配,因此您可以使用标准 UNIX 工具进行范围选择。