我将家庭照片备份到我家的 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 '*'