我喜欢使用shell脚本将我的照片从一个(linux)光盘分区转移到另一个(备份位置)。
问题是,我需要重新缩放保存在备份位置的所有照片,例如使用mogrify
。
是否可以对rsync同步/复制的每个文件进行后期处理?
在oder中对每个同步文件执行mogrify
?
另一种方法可以使用rsync(仅)生成必须同步的文件列表。下一步:为每个列表条目运行一个循环到mogrify
,以便将缩放的照片输出到备份位置。
问题是,在保存照片之前,我必须添加所有目录和子目录以保留原始文件夹结构。
使用rsync可以“动态”处理文件夹创建。
那么:是否可以对与rsync同步的每个文件执行命令?
答案 0 :(得分:3)
rsync
有一个-i
/ --itemize-changes
标志,用于输出每个文件的简历。
我建议您稍微玩一下,我看到它为新文件输出>f+++++++++ file1
行,为未更改的文件输出>f..T...... file1
,为更新输出>f.sT...... file1
,等...
有了这个,您可以将此输出读入变量,并使用grep
和cut
对其进行解析:
#!/bin/bash
log=$(rsync -i rsync-client/* rsync-server/)
newFiles=$(echo "$log" | grep '>f+++++++++' | cut -d' ' -f2)
for file in $newFiles
do
echo "Added file $file"
done