2010-12-27 8 views
12

Jak zrobić to poprawnie. Próbuję nazwa pliku sql, który jest produkowany przez mysqldump do bieżącej daty i czasu. Mam już trochę badań na tej stronie i znalazłem tutaj kod: How to get current datetime on Windows command line, in a suitable format for using in a filename?wygeneruj plik kopii zapasowej używając daty i czasu jako nazwy pliku

Próbowałem go pomieszać z moim aktualnym kodem i wymyśliłem ten. Plik jest nazwany w bieżącej dacie i czasie, ale jest to plik tylko 1kb i nie tworzy pliku .sql. Ma to być plik sql 7 kb.

@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 

UPDATE Nie sądzę, istnieje problem z polecenia mysqldump ponieważ działa dobrze, gdy robię to w ten sposób. Poniższy kod po prostu używa daty jako nazwy pliku.

@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 

Proszę o pomoc, dziękuję.

Odpowiedz

30

W systemie Linux, wystarczy umieścić $(date +%Y-%m-%d-%H.%M.%S) aby wyświetlić datę i godzinę w nazwie pliku, więc wygląda na to:

mysqldump -u <user> -p <database> | bzip2 -c > <backup>$(date +%Y-%m-%d-%H.%M.%S).sql.bz2 

(Komenda kompresuje również plik za pomocą bzip2)

+1

Czy to działa w 'cron'? – fishcracker

+0

Pytanie dotyczy systemu Windows. – MxyL

+0

Dla Linux-a: '$ (data +% Y-% m-% d-% H.% M.% S)' right ALE co dla WINDOWS? –

4

Myślę, że składnia polecenia mysqldump jest błędna;

mysqldump -u root -p --add-drop-table --create-options --password= onstor 

użyć zarówno -p i --pasword=, należy użyć tylko jednej opcji. A przed hasłem jest spacja.

Po prostu spróbuj uruchomić polecenie mysqldump w linii poleceń, aby wyświetlić komunikaty o błędach. Alternatywnie dodaj 2>&1 na końcu polecenia w pliku wsadowym. Wtedy zobaczysz również komunikaty o błędach w pliku wyjściowym.

mysqldump -u root --add-drop-table --create-options --password=onstor >c:\%mydate%_%mytime%.sql 2>&1 
+0

I don "Myślę, że jest problem z poleceniem mysqldump, zobacz moją edycję – user225269

+0

@ user225269: polecenie mysqldump jest inne w twoim drugim przykładzie. Ale czy możesz pokazać nam, co zawiera plik 1kb? – wimh

Powiązane problemy