4

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

是否可以对每个由 rsync 同步/复制的文件进行后处理?为了mogrify在每个同步文件上执行?

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

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

使用 rsync 将“即时”处理文件夹创建。

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

4

1 回答 1

4

rsync有一个-i/--itemize-changes标志来输出它对每个文件所做的恢复。

我建议你玩一下它,我看到它输出>f+++++++++ file1新文件、>f..T...... file1未更改文件、>f.sT...... file1更新等行...

有了它,您可以将此输出读入一个变量,并使用 and 解析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
于 2012-11-23T23:12:57.397 回答