我该如何正确地做到这一点。我正在尝试将mysqldump生成的sql文件命名为当前日期和时间。我已在本网站进行了一些研究,并在此处找到了一个代码:How to get current datetime on Windows command line, in a suitable format for using in a filename?
试图将其与我当前的代码混在一起,我想出了这个。该文件被命名为当前日期和时间,但它只有一个1kb文件,并且不会生成.sql文件。 它应该是一个7 kb的sql文件。
@For /f "tokens=2-4 delims=/ " %%a in ('date /t') do @(set mydate=%%c-%%a-%%b)
@For /f "tokens=1-2 delims=/:" %%a in ('time /t') do @(set mytime=%%a%%b)
@echo mydate= %mydate%
@echo mytime= %mytime%
mysqldump -u root -p --add-drop-table --create-options --password= onstor >c:\%mydate%_%mytime%.sql
更新 我不认为mysqldump命令有问题,因为当我这样做时它运行良好。下面的代码只使用日期作为其文件名。
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @(
Set Month=%%A
Set Day=%%B
Set Year=%%C
)
@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year%
mysqldump -u root --add-drop-table --create-options --password= onstor >c:\%Day%-%Month%-%Year%.sql
请帮助,谢谢。
答案 0 :(得分:34)
在Linux上,只需将$(date +%Y-%m-%d-%H.%M.%S)
放在文件名中显示日期和时间,如下所示:
mysqldump -u <user> -p <database> | bzip2 -c > <backup>$(date +%Y-%m-%d-%H.%M.%S).sql.bz2
(此命令也使用bzip2压缩文件)
答案 1 :(得分:4)
我认为你的mysqldump命令的语法是错误的;
mysqldump -u root -p --add-drop-table --create-options --password= onstor
您同时使用-p
和--pasword=
,您应该只使用一个选项。密码前面有一个空格。
尝试在命令行上运行mysqldump命令以查看错误消息。或者,在批处理文件中的命令末尾添加2>&1
。然后,您还会在输出文件中看到错误消息。
mysqldump -u root --add-drop-table --create-options --password=onstor >c:\%mydate%_%mytime%.sql 2>&1
答案 2 :(得分:0)
对于那些想要在crontab中使用它的人来说,情况有些不同:
30 01 * * * /opt/bitnami/mysql/bin/mysqldump -u root --password=MySecretPass database_name | gzip > /path/backup/`date "+\%d-\%m-\%y_\%H:\%M"`.gz