เดิมไฟล์ backup ถูกเก็บในรูปแบบ ปี เดือน วัน โปรเจ็ค เช่น 2015-07-10-joomla.sql, 2015-07-10-joomla.zip, 2015-07-10-prestashop.sql, 2015-07-10-prestashop.zip ทุกๆวัน วันละ 4 ไฟล์ ถ้าเก็บแบบนี้ทุกวันก็จะมีไฟล์ 1,440 ไฟล์ เริ่มจะรก จะลบไฟล์แบ็กอัพเก่า ๆ ออกก็ไม่สะดวก ถ้ามีโปรเจ็คที่ต้องดูแลมากกว่านี้
ก็มีความคิดว่า ทำไม่ไม่เก็บ backup เป็น directory ปี เดือน วัน ละ เวลาลบจะได้ง่ายๆ อยากจะลบปีก่อนทั้งปี ก็แค่คลิก 2 ครั้งก็เสร็จ ลบ 3 เดือนที่แล้วก็ไม่ยาก มันแยกไว้อยู่แล้ว แต่ก่อนอื่นก็ต้องย้ายไปเก็บให้ถูกที่ก่อน
PHP มี function glob ช่วยหาไฟล์ตามรูปแบบอยู่ ทำให้เขียน code หาไฟล์ตามรูปแบบได้ ไม่ยากนัก
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php /* find file */ $root = 'backup' ; foreach ( glob ( $root . '/*-*' ) as $filename ) { /* get path */ $path = explode ( '/' , $filename ); list( $year , $month , $date ) = explode ( '-' , $path [1]); /* create folder */ $dir = $root . '/' . $year . '/' . $month . '/' . $date ; if (! is_dir ( $dir )) { mkdir ( $dir , 0644, true); } /* move file */ rename( $filename , $dir . '/' . $path [1]); } |
About the author