2009-08-25 47 views
2

我想通過cron維護多個日期備份,但我似乎無法弄清楚如何連接cron中的文件名。使用日期追加文件名到由cron創建的數據庫備份

目前我只使用以下命令:

/bin/mv /var/www/vhosts/mysite.org/dbBackups/today.sql /var/www/vhosts/mysite.org/dbBackups/yesterday.sql 

/usr/bin/mysqldump --add-drop-table -u dbname -pmypass dbname > /var/www/vhosts/mysite.org/dbBackups/today.sql 

我試過是沒有好:

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > '/var/www/vhosts/mysite.org/dbBackups/' . date +%Y%m%d . dbname.sql 

那麼,如何concantenate在cron該字符串?

回答

13
/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > "/var/www/vhosts/mysite.org/dbBackups/"`date +%Y%m%d`dbname.sql 
+0

嗯,看起來很奇怪。你可以在代碼塊中格式化這個嗎? – 2009-08-25 16:44:05

+1

對不起,先來這裏貼一下,就修好了。 – 2009-08-25 16:45:07

+0

謝謝!奇蹟般有效! – jerrygarciuh 2009-08-25 16:57:25

1

放入反引號的日期命令,並刪除空格:

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > /var/www/vhosts/mysite.org/dbBackups/`date +%Y%m%d`dbname.sql 

在(至少)來砸你也可以使用$(some command)語法,而不是反引號。不知道它是否適用於cron,但如果你喜歡這種風格,你可能會嘗試(這種風格的一個好處是,他們可以嵌套沒有問題)。

3

您可以使用$(...)語法。

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > 
/var/www/vhosts/mysite.org/dbBackups/$(date +%Y%m%d)dbname.sql 
2

您可能需要像這樣定義一個變量:

export MYDATE="$(date '+%Y-%m-%d')" 

,並用它連接起來是這樣的:

...> /var/www/vhosts/mysite.org/dbBackups/"$MYDATE"dbname.sql 
+0

這對於處理多個文件尤其有用。例如,我經常爲多個數據庫進行備份。 – 2009-08-25 20:11:20