เดิมไฟล์ 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 หาไฟล์ตามรูปแบบได้ ไม่ยากนัก
<?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]); }