bash – 我可以使用rsync创建仅更改文件的列表吗?

前端之家收集整理的这篇文章主要介绍了bash – 我可以使用rsync创建仅更改文件的列表吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在bash脚本中使用rsync来保持文件在几台服务器和NAS之间同步.我遇到的一个问题是尝试生成rsync期间已更改的文件列表.

我的想法是,当我运行rsync时,我可以将已经更改的文件输出到文本文件中 – 更希望内存中的数组 – 然后在脚本存在之前,我只能在已更改的文件上运行chown.

有没有人找到办法执行这样的任务?

# specify the source directory
source_directory=/Users/jason/Desktop/source

# specify the destination directory
# DO NOT ADD THE SAME DIRECTORY NAME AS RSYNC WILL CREATE IT FOR YOU
destination_directory=/Users/jason/Desktop/destination

# run the rsync command
rsync -avz $source_directory $destination_directory

# grab the changed items and save to an array or temp file?

# loop through and chown each changed file
for changed_item in "${changed_items[@]}"
do
        # chown the file owner and notify the user
        chown -R user:usergroup; echo '!! changed the user and group for:' $changed_item
done
您可以使用rsync的–itemize-changes(-i)选项生成可解析的输出,如下所示:
~ $rsync src/ dest/ -ai
.d..t.... ./
>f+++++++ newfile
>f..t.... oldfile

~ $echo 'new stuff' > src/newfile

~ $!rsync
rsync src/ dest/ -ai
>f.st.... newfile

>第一个位置的字符表示文件已更新,其余字符表示原因,例如此处s和t表示文件大小和时间戳已更改.

获取文件列表的快速而脏的方法可能是:

rsync -ai src / dest / | egrep’^>’

显然更高级的解析可以产生更清晰的输出:-)

我在尝试找出引入–itemize-changes的时候遇到了这个很棒的链接,非常有用:

http://andreafrancia.it/2010/03/understanding-the-output-of-rsync-itemize-changes.html(存档链接)

原文链接:https://www.f2er.com/bash/386154.html

猜你在找的Bash相关文章