You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian中为SQL备份文件添加时间戳失败问题排查

问题原因与修复方案

核心问题

你使用的date +%F.%s中,%F是GNU date的扩展格式(等价于%Y-%m-%d),但Debian默认的系统shell是dash(POSIX兼容shell),在POSIX模式下不支持%F这个非标准格式,导致date命令执行失败,生成了无效的文件名,最终备份脚本无法正常生成文件。

修复方案

方案1:使用POSIX兼容的日期格式

把%F替换为%Y-%m-%d,确保所有shell都能识别:

cat /root/dblist.txt | while read i; do /usr/sbin/plesk db dump "$i" > /root/mysql_dumps_all/"$i".$(date +%Y-%m-%d.%s).sql; done

方案2:指定用Bash运行脚本

显式使用Bash执行脚本(Bash支持GNU date的扩展格式),同时推荐用$(command)代替反引号(可读性更强,不易出现嵌套解析问题):

#!/bin/bash
cat /root/dblist.txt | while read i; do /usr/sbin/plesk db dump "$i" > /root/mysql_dumps_all/"$i".$(date +%F.%s).sql; done

优化版脚本(更健壮)

避免cat管道的冗余,直接用while循环读取文件,同时添加-r参数防止反斜杠被转义,并用双引号包裹完整文件名(适配含特殊字符的数据库名):

#!/bin/bash
while read -r db_name; do
    /usr/sbin/plesk db dump "$db_name" > "/root/mysql_dumps_all/${db_name}.$(date +%F.%s).sql"
done < /root/dblist.txt

内容的提问来源于stack exchange,提问作者scratch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:24:13