rsync和(post)进程同步文件

时间:2012-11-23 22:22:24

标签: linux bash shell imagemagick rsync

我喜欢使用shell脚本将我的照片从一个(linux)光盘分区转移到另一个(备份位置)。 问题是,我需要重新缩放保存在备份位置的所有照片,例如使用mogrify

是否可以对rsync同步/复制的每个文件进行后期处理? 在oder中对每个同步文件执行mogrify

另一种方法可以使用rsync(仅)生成必须同步的文件列表。下一步:为每个列表条目运行一个循环到mogrify,以便将缩放的照片输出到备份位置。

问题是,在保存照片之前,我必须添加所有目录和子目录以保留原始文件夹结构。

使用rsync可以“动态”处理文件夹创建。

那么:是否可以对与rsync同步的每个文件执行命令?

1 个答案:

答案 0 :(得分:3)

rsync有一个-i / --itemize-changes标志,用于输出每个文件的简历。

我建议您稍微玩一下,我看到它为新文件输出>f+++++++++ file1行,为未更改的文件输出>f..T...... file1,为更新输出>f.sT...... file1,等...

有了这个,您可以将此输出读入变量,并使用grepcut对其进行解析:

#!/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