使用日期和时间作为文件名生成备份文件

时间:2010-12-27 02:58:32

标签: batch-file mysqldump

我该如何正确地做到这一点。我正在尝试将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

请帮助,谢谢。

3 个答案:

答案 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