ป้ายกำกับ: glob

ย้ายไฟล์ลง folder ตามวันที่ย้ายไฟล์ลง folder ตามวันที่

เดิมไฟล์ 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]);
 
}
rt:
สร้างโฟลเดอร์ตัวอักษรไทย
คัดลอกหมดทั้งโฟลเดอร์