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/
此命令还将打印出已替换文件的列表。
我想在 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/
此命令还将打印出已替换文件的列表。