I've made a backup bash script using rsync to sync files between my laptop and USB. Basically, I use rsync -uai x y to backup x to y. Now, the files transfer fine, but interestingly the script doesn't update old files on y with the newer versions from x. It just skips them. Isn't the -u switch supposed to over-write the old versions with the new one?
The script runs without any errors and the log files confirm that new files are being written, but old ones are being skipped rather than overwritten.
Any help is much appreciated.
Thanks,
Cammo
. The full source code is attached below, but
Code: Select all
#!/bin/bash
# Purpose: For syncing files between two drives, where changes might occur
# on either. (I use it to backup documents between a PC and USB)
#
# Rsyncs $OLD-PATH to $NEW-PATH, ignoring newer files on $NEW-PATH. Then, rsyncs $NEW-PATH onto $OLD-PATH, ignoring newer files.
# The output is redirected to $logLocation, so you can grep through what's been copied later at your leisure.
# Usage: ./ backup-script.sh
# Author: Cammo
# Date: Mon 12 May 2014
# Version: 0.5
# Disclaimer: Feel free to use it, but don't blame me if your computer conks out.
#=====================================================================
# Enter your required params here...
OldPath='/mnt/Storage/Uni/'
mountPoint='/media/cameron/UUI'
NewPath="$mountPoint/Uni/"
myName='cameron'
now=$(date +"%F")
logLocation="/home/$myName/Documents/BackupLogs/backup-output-$now.txt"
#=====================================================================
chown $myName: $mountPoint; chown $myName: $logLocation
mount '/dev/sdb1' $mountPoint>>$logLocation
mkdir "$mountPoint/Uni">>$logLocation
echo "">>$logLocation
echo "">>$logLocation
echo $(date +"%c")>>$logLocation
echo ''>>$logLocation
echo 'Hard drive path = ' $OldPath>>$logLocation
echo 'USB path = ' $NewPath>>$logLocation
echo ''>>$logLocation
echo "Starting backup from $OldPath to $NewPath" >>$logLocation
echo ''>>$logLocation
rsync -uai $OldPath $NewPath>>$logLocation
echo 'Syncing Old->New done'>>$logLocation
rsync -uai $NewPath $OldPath>>$logLocation
echo 'Syncing New->Old done'>>$logLocation
chown -R $myName: $NewPath>>$logLocation
echo 'taking ownership of new files -> done'>>$logLocation