【问题标题】:rsync and (post) process synced filersync 和(后)处理同步文件
【发布时间】:2012-11-23 22:22:24
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: linux bash shell imagemagick rsync


    【解决方案1】:

    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
    

    【讨论】:

    • 太棒了。就是这样! :-)。我添加了 -a 选项来递归工作。 rsync -ia rsync-client/* rsync-server/
    • 我正在尝试自己解决这个问题,但我认为>f..T...... file1 不是您在未更改文件时所看到的。 ">" 表示正在传输或更新。如果没有发生传输或更新,“>”将替换为一个点,如.f..T...... file1
    猜你喜欢
    • 2012-02-21
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多