เดิมไฟล์ 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]);
}