我正在从bash脚本运行此命令
rsync -avzh $SourceFolder/ $DestinationFolder
如果我将SourceFolder和DestinationFolder作为本地文件夹(都在我的MAC上)运行它,它的行为正确。这意味着它复制新文件并将较新版本覆盖到DestinationFolder。
如果我使用外部驱动器文件夹作为DestinationFolder运行脚本,它会复制并覆盖SourceFolder的整个内容。
我怎样才能避免这种情况,让脚本每次只覆盖较新版本的文件而不是SourceFolder的全部内容?
答案 0 :(得分:0)
我不知道为什么这会被低估,可能是因为答案已经存在。无论如何,我认为这是一个特定的问题。
几个小时之后,这是我修复脚本的方法。关键在于--update
和--modify-window=1
rsync命令选项。
这是工作脚本(另外我要从外部文件中排除文件)。
#!/bin/sh
ScriptName=${0##*/}
# this script sync SourceFolder with DestinationFolder
# to a FAT32 external drive, excluding files from ExcludeFile
### --- EDIT FOLDERS HERE --- ###
SourceFolder='/Users/matteo'
DestinationFolder='/Volumes/HITACHI/MatteoMainFolderBackup'
ExcludeFile='/Users/matteo/.backupignore'
### --- DISPLAY SOME INFO --- ###
echo "Starting " $ScriptName
printf "WARNING! This script sync all files from SourceFolder to DestinationFolder \n"
echo "SourceFolder: " $SourceFolder
echo "DestinationFolder: " $DestinationFolder
echo "ExcludeFile: " $ExcludeFile
printf "### Start Syncing files ###\n"
### --- OPERATIONS --- ###
rsync --archive \
--delete \
--delete-excluded \
--exclude-from=$ExcludeFile \
--modify-window=1 \
--progress \
--update \
--verbose \
$SourceFolder/ $DestinationFolder
### --- END --- ###
echo $ScriptName " ended"