Command line interface 清理Prestashop';s原始产品图像以减少存储使用

Command line interface 清理Prestashop';s原始产品图像以减少存储使用,command-line-interface,prestashop,prestashop-1.6,Command Line Interface,Prestashop,Prestashop 1.6,我管理一个用1.6版构建的Prestashop网站,上面有1000个产品 每次上传新产品图像时,Prestashop都会将其存储在一个文件结构中,以备将来访问,并根据当前主题的各种要求(类别页面、产品、篮子等)调整图像的大小 随着大量的产品和14个较小的版本的创建,他们很快就填满了存储空间 我正在寻找一种方法来删除原始图像,并将其替换为最大尺寸图像的副本 e、 g.产品5010的原始图像名为5010.jpg,其次是5010-big\u default\u 2x.jpg 我想删除5010.jpg并

我管理一个用1.6版构建的Prestashop网站,上面有1000个产品

每次上传新产品图像时,Prestashop都会将其存储在一个文件结构中,以备将来访问,并根据当前主题的各种要求(类别页面、产品、篮子等)调整图像的大小

随着大量的产品和14个较小的版本的创建,他们很快就填满了存储空间

我正在寻找一种方法来删除原始图像,并将其替换为最大尺寸图像的副本

e、 g.产品5010的原始图像名为5010.jpg,其次是5010-big\u default\u 2x.jpg

我想删除5010.jpg并将5010-big_default_2x.jpg复制到5010.jpg,取而代之

我想用某种cli递归正则表达式搜索以.jpg结尾的数字文件,存储文件名,删除文件并将[filename]-big_default_2x.jpg复制到[filename].jpg

服务器在Centos 6.7上运行,具有完全的根访问权限


谢谢你的建议

像这样简单的事情怎么样:

images.php
==========

require 'config/config.inc.php'

$productIds = Db::getInstance(...) // Select all products IDs

$i = 0;
$s = 0;
foreach ($productIds as $id_product) {
  $bits = explode('', (string)$id_product);
  $directory = _PS_IMG_DIR.'/'.implode('/', $bits);
  $filePath = $directory.'/'.(string)$id_product.'.jpg';

  if (file_exists($filePath)) {
    $resizedFilePath = $directory.'/'.(string)$id_product.'-large_default.jpg';
    $resizedImageData = file_get_contents(resizedFilePath);
    file_put_contents($filePath, $resizedImageData);
    $s++;
  }
  $i++;
}

echo 'Folders: '.$i.'; Successful copies: '.$s;

通过FTP上传并在浏览器中调用它一次

您尝试了什么以及您的实际问题是什么?我相信最好的方法是使用命令行脚本,但是我不确定如何创建一个可以实现这一点的脚本。首先,我试图查找原始图像文件的尝试没有成功:
find-regextype sed-regex“/[0-9]+\.jpg”
保留原始图像的目的是能够重新生成图像或生成新添加格式的图像。我想你想替换它们是因为它们非常大>2MB?是的,上传的原件太大了,占用了4GB的空间。下一个缩小的大小将足以重新生成任何未来较小的文件-这就是为什么我希望它的副本来代替原始图像。太好了,谢谢-我只是在我的头脑中使用命令行。我做了一些轻微的调整,但这是你建议的核心。现在节省了超过1GB的内存,谢谢。