У меня есть около 4 миллионов файлов JPEG, которые я хочу переименовать и изменить структуру каталогов.
Невозможно просто переименовать каталог, каждое имя файла и изменение каталога уникальны и, к сожалению, определенно должны быть выполнены один за другим.
Мой единственный текущий план - это PHP-скрипт, который будет читатьв старом и новом имени из текстового файла, а затем одну за другой запустите system("mv $src $dest");
вместе со всеми необходимыми командами mkdir.
Я предполагаю, что это займет ДЛИННОЕ время - есть ли лучшие стратегии длясделай это? Будет ли это вызывать чрезмерное перебивание диска и потенциально убивать мой сервер? Вы бы просто запустили его и забыли, или разбили его на маленькие кусочки? В данный момент этот конкретный сервер больше ничего не делает, поэтому мне не нужно беспокоиться о QoS работающего на нем веб-сайта или о чем-то подобном. быстро сбили с толку:
ini_set('memory_limit', '2048M');
$files = file('old-and-new-names.txt');
$directoriesMade = ['/', '/home/', '/home/originals/'];
foreach($files as $n) {
$n = trim($n);
[$old, $new] = explode(' ', trim($n));
$old = '/home/originals'.trim($old);
$new = '/home/originals'.trim($new);
echo "\nOLD: ".$old;
echo "\nNEW: ".$new;
$dirs = explode('/', $new);
array_pop($dirs); // don't want the last item as that's the filename, not a directory
// go through all of the required levels to ensure the directories are created
// using a php array storing the ones already created in an effort to take some pressure off the disk system?
$path = '';
foreach ($dirs as $dir) {
$path .= $dir . '/';
if (!in_array($path, $directoriesMade)) {
echo "\n"."system(\"mkdir $path\")";
system("mkdir $path");
$directoriesMade[] = $path;
}
}
echo "\nsystem(\"mv $old $new\")";
system("mv $old $new");
echo "\n\n";
}
и небольшую часть имен
/20191103/halloween-charity-ride/halloween2019990.jpg /0100/20191103/halloween-charity-ride/452d2ebfde0c5cda6f77188d05e21a06.jpg
/20191103/halloween-charity-ride/halloween2019991.jpg /0100/20191103/halloween-charity-ride/a582eeb68ed42fc7169e80d3c02d715e.jpg
/20191103/halloween-charity-ride/halloween2019992.jpg /0100/20191103/halloween-charity-ride/cb36c56995e4d16e20768753485f6174.jpg
/20191103/halloween-charity-ride/halloween2019993.jpg /0101/20191103/halloween-charity-ride/b707951dd72dbcbdae90be76db8dc4be.jpg
/20191103/halloween-charity-ride/halloween2019994.jpg /0101/20191103/halloween-charity-ride/765f9d00e8b18e6a2e41ee14e56fca27.jpg
/20191103/halloween-charity-ride/halloween2019995.jpg /0101/20191103/halloween-charity-ride/dd92d28b72d504329a49db23e51c879b.jpg