在一个奇怪的情况下。客户有Wordpress网站,我们刚刚转移了托管服务提供商。旧站点使用WP Offload将所有图像放置到S3中,并使用随机生成器围绕每次上载创建一个文件夹。
示例:https://s3url/wp-uploads/2019/06/########/file.jpg
我们收到了从S3下载的所有已上传文件的ZIP。因此,所有文件都包含在其月/年文件夹中的一个随机命名的文件夹中。该数据库没有这些随机文件夹名称,因此所有图像均已损坏。数据库提供的“ wp-uploads / 2019/06 / file.jpg”显然返回了404。
客户在网站的5年中积累了数千张图像,因此手动移动它们将花费大量的时间。我希望写一个简单的插件,让我提供扫描和移动文件的文件夹。最糟糕的情况是,我每年必须运行12次(每个月)。我可以应付。
因此,我需要整理一个表格,为它提供源文件夹以供扫描,遍历所有子文件夹并运行以下代码。
$src = 'wp-uploads/2019/06/*/';
$dst = 'wp-uploads/2019/06/';
rcopy($src, $dst); // Call function
// Function to Copy folders and files
function rcopy($src, $dst) {
if (file_exists ( $dst ))
rrmdir ( $dst );
if (is_dir ( $src )) {
mkdir ( $dst );
$files = scandir ( $src );
foreach ( $files as $file )
if ($file != "." && $file != "..")
rcopy ( "$src/$file", "$dst/$file" );
} else if (file_exists ( $src ))
copy ( $src, $dst );
rrmdir ( $src );
}
// Function to remove folders and files
function rrmdir($dir) {
if (is_dir($dir)) {
$files = scandir($dir);
foreach ($files as $file)
if ($file != "." && $file != "..") rrmdir("$dir/$file");
rmdir($dir);
}
else if (file_exists($dir)) unlink($dir);
}
我疯了吗?有一个更好的方法吗?