@@ -11,18 +11,28 @@ class BackupDatabase extends Command
1111{
1212 /**
1313 * The name and signature of the console command.
14- *
1514 * @var string
1615 */
1716 protected $ signature = 'db:backup ' ;
1817
1918 /**
2019 * The console command description.
21- *
2220 * @var string
2321 */
2422 protected $ description = 'Backup the database ' ;
2523
24+ /**
25+ * 备份目录
26+ * @var string
27+ */
28+ protected $ backDir ;
29+
30+ /**
31+ * 备份留存时间(天)
32+ * @var integer
33+ */
34+ protected $ days ;
35+
2636 /**
2737 * Create a new command instance.
2838 *
@@ -32,13 +42,12 @@ public function __construct()
3242 {
3343 parent ::__construct ();
3444
35- $ this ->process = new Process (sprintf (
36- 'mysqldump -u%s -p%s %s > %s ' ,
37- config ('database.connections.mysql.username ' ),
38- config ('database.connections.mysql.password ' ),
39- config ('database.connections.mysql.database ' ),
40- storage_path ('backups/backup_ ' . date ('Y-m-d ' ) . '.sql ' )
41- ));
45+ $ this ->backDir = storage_path ('backups/ ' );
46+ $ this ->days = 7 ;
47+
48+ if (!is_dir ($ this ->backDir )) {
49+ mkdir ($ this ->backDir , 0755 , true );
50+ }
4251 }
4352
4453 /**
@@ -48,14 +57,22 @@ public function __construct()
4857 */
4958 public function handle ()
5059 {
60+ $ this ->process = new Process (sprintf (
61+ 'mysqldump -u%s -p%s %s > %s ' ,
62+ config ('database.connections.mysql.username ' ),
63+ config ('database.connections.mysql.password ' ),
64+ config ('database.connections.mysql.database ' ),
65+ $ this ->backDir . 'backup_ ' . date ('Y-m-d_H:i:s ' ) . '.sql '
66+ ));
67+
5168 try {
5269 // 删除N天之前的备份
53- $ directory = storage_path ( ' backups/ ' ) ;
54- $ files = scandir ($ directory );
70+ $ backDir = $ this -> backDir ;
71+ $ files = scandir ($ backDir );
5572
5673 foreach ($ files as $ file ) {
57- if (!in_array ($ file , ['. ' , '.. ' ]) && Carbon::now ()->diffIndays (substr ($ file , 7 , 10 )) >= env ( ' DB_BACKUP_DAYS ' , 5 ) ) {
58- unlink ($ directory . $ file );
74+ if (!in_array ($ file , ['. ' , '.. ' ]) && Carbon::now ()->diffIndays (substr ($ file , 7 , 10 )) >= $ this -> days ) {
75+ unlink ($ backDir . $ file );
5976 }
6077 }
6178
0 commit comments