Shell 脚本 (Linux):仅复制并覆盖目标位置已更改的文件?

Shell Script (Linux): Copy and overwrite only files that have changed in destination?

我想在 Shell 脚本中执行以下操作:

我有两个目录,我只想从源目录复制目标目录中已更改或丢失的这些文件。

注意0:(如果上面的内容很清楚):我想用源目录替换目标文件夹。目标中更改的文件应从源目录恢复到原始状态。未更改的文件不应被触及(以节省时间)。

注意 1: 我查了 rsynch,但我不知道它是否能做我想做的事。只有 -u 但这似乎并不能满足我的要求。

编辑: 这是我的脚本:(已修复)

#!/bin/sh

################################################################################
# Copies resources to build output directory (Ubuntu)
################################################################################

directoryWtSource="/usr/share/Wt"
directoryBuildOutput="bin__output__"

# Get the absolute path to the script
scriptPath=`readlink -e [=12=]`
directoryDestination=`dirname $scriptPath`

################################################################################
# Start
################################################################################

cd ..
directoryWtSourceResources=$directoryWtSource/resources
directoryBuildOutputResources=${PWD}/$directoryBuildOutput

if [ ! -d ${PWD}/$directoryBuildOutput ]
then
    mkdir ${PWD}/$directoryBuildOutput
fi


#echo $directoryWtSourceResources
#echo $directoryBuildOutputResources

# BEGIN - REMOVE THIS: No need for cp
#if [ ! -d $directoryBuildOutputResources ]
#then
#    echo "  --> No destination directory found: copying resources..."
#    cp -Rp $directoryWtSourceResources $directoryBuildOutputResources
#else
#    echo "  --> Destination directory found: won't copy."
#fi
# END - REMOVE THIS

rsync -arv $directoryWtSourceResources $directoryBuildOutputResources

################################################################################
# End
################################################################################

rsync 可以这样做:

rsync -av source/ destination/ 

此命令还将打印出已替换文件的列表。