我一直在搜索整个网络上的.sh脚本来做到这一点,但我没有找到任何。从文件列表创建.new文件
在这一刻,我有一个脚本,它将使用find命令创建一个文件列表。 此文件列表与复制一起使用,以将它们复制到另一个文件夹,并且一切正常。
现在我想创建一个脚本文件,它将接收文件列表并执行以下测试: - 如果文件在目标上不存在,请复制该文件。 - 如果文件存在于目标上并且与源文件相同,则不要执行任何操作。 - 如果文件存在于目标,它是从源头不同,将它复制并改变它的扩展。新
这是将创建文件列表中的脚本:
# File source to copy text files
find /home/repo/source -type f -name '*.txt' -o -name '*.cfg' -o -name '*.doc' -o -name '*.lst' -o -name '*.inf' -o -name '*.xml' > ../copy-from.txt
sed -i 's/ /\\ /g' ../copy-from.txt
# File destination to copy text files
find . -type f -name '*.txt' -o -name '*.cfg' -o -name '*.doc' -o -name '*.lst' -o -name '*.inf' -o -name '*.xml' > ../copy-to.txt
sed -i 's/ /\\ /g' ../copy-to.txt
sed -i 's/\(.\{2\}\)//' ../copy-to.txt
# Merge source and destination files and add cp command
paste ../copy-from.txt ../copy-to.txt > ../copy.sh
rm ../copy-from.txt ../copy-to.txt
sed -i 's/^/cp /' ../copy.sh
希望有人能指向正确的路径或提供一个脚本,将做我正在寻找的。
问候
肯定叫做'rsync'? –
我看了rsync,我看不出rsync如何创建.new文件,如果他们更新。 – Webix
重要说明:我希望脚本创建.new文件,而不是覆盖现有的文件。 – Webix