镜像照片目录并减小文件大小

镜像照片目录并减小文件大小

我将家庭照片备份到我家的 Ubuntu 14.04 服务器上的 Samba 目录中/srv/照片。我希望能够通过访问网页来查看它们,并创建了一个 php 页面来实现这一点。不过,我不想直接使用实际的 3-5Mb 照片,因为这样会非常慢,而是想使用 Imagemagick 在文件夹(例如 /var/www/album)中创建 200-300Kb 的副本,然后将我的 php 页面指向该副本。

我想创建一个脚本来重新创建文件夹结构/srv/照片//var/www/专辑,并在每个子文件夹中对每张照片运行 Imagemagick 以减小文件大小。最后,我希望得到一个文件夹结构/var/www/专辑反映了/srv/照片,所有 jpg 图像的尺寸均已缩小。

我见过可以镜像文件夹结构的命令:

$ find -type d -exec mkdir -p /target-folder/{} \;

Imagemagick 将降低文件质量和大小(需要一些实验......):

convert holiday_pic.jpg reduced_holiday_pic.jpg -quality 50

感觉我需要某种数组来执行此操作......对于每个 jpg/srv/照片/folder_X,转换并保存为/var/www/专辑/folder_X...

任何帮助表示感谢

答案1

您可以用来rsync同步文件和文件夹结构,然后mogrify降低文件质量。

#!/bin/bash

IFS=$'\t\n'

files=`rsync -rvu /srv/photos/ /var/www/album/ |grep -i jpg` && cd /var/www/album
mogrify -quality 50 $files    

Mogrify和 相同,convert但它会覆盖已更改的文件(在此示例中,在您的专辑文件夹)
IFS设置为包含空格的文件和文件夹

rsync options:

-r be recursive - for folders structure
-v verbose - tell what you are doing 
-u update - skip files that are newer on the receiver    

当您的相片文件夹您可以jpg通过将其添加到 rsync 命令来告诉 rsync 仅同步文件:

--include '*/' --include '*.jpg' --exclude '*'

相关内容