problems with rsync version 2.4.6 protocol version 24 on
solaris 2.8
Paul LaMadeleine
plamadeleine at lightbridge.com
Sat Aug 25 05:19:30 EST 2001
Greetings,
I'm using rsync to keep multiple nfs filesystems on two emc nfs
serves in sync. Here are the six file systems and their info:
Filesystem kbytes used avail capacity Mounted
on Number of files
burd1p0:/nettmp 258120 37144 220976 15%
/nfs/burd1p0/nettmp 2102
burd1p0:/user 29443776 16160480 13283296 55%
/nfs/burd1p0/user 68171
burd2p0:/netutl 14721376 4515128 10206248 31%
/nfs/burd2p0/netutl 13611
burd3p0:/netconfig
14721376 1010336 13711040 7% /nfs/burd3p0/netconfig 33198
burd2p0:/aqptmp 258120 10664 247456 5%
/nfs/burd2p0/aqptmp 546
burd3p0:/reports 14721376 3868000 10853376 27%
/nfs/burd3p0/reports 290481
What I'm seeing is that Rsync will freeze in the middle of the
sync. I've attached the script that I use along with the config file for it.
I know that there is a patch for this version, but I am unable the
compile in this environment and do not have access to a compiler in the our
other environments.
I have done a truss -p pid on the three running processes and here
are their outputs:
root at lancelot:/opt/Rsync% ps -ef | grep rsync
root 29191 29182 0 14:43:37 pts/2 2:51 /opt/Rsync/bin/rsync.7
--recursive --progress --stats --delete --one-file-syste
root 1516 25536 0 15:16:35 pts/5 0:00 grep rsync
root 29192 29191 0 14:43:37 pts/2 1:10 /opt/Rsync/bin/rsync.7
--recursive --progress --stats --delete --one-file-syste
root at lancelot:/opt/Rsync% truss -p 29191
poll(0xFFBEF888, 0, 20) = 0
waitid(P_PID, 29192, 0xFFBEF898, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xFFBEF888, 0, 20) = 0
waitid(P_PID, 29192, 0xFFBEF898, WEXITED|WTRAPPED|WNOHANG) = 0
^Croot at lancelot:/opt/Rsync% truss -p 29192
poll(0xFFBEDC58, 1, 60000) (sleeping...)
^Croot at lancelot:/opt/Rsync%
-------------- next part --------------
#
#
# A list of file systems and where they are located
#
# filesystem FROM TO
netconfig /nfs/burd3p1/netconfig /nfs/wald2p1/netconfig
netutl /nfs/burd2p1/netutl /nfs/wald2p1/netutl
reports /nfs/burd3p1/reports /nfs/wald3p1/reports
user /nfs/burd1p1/user /nfs/wald1p1/user
aqptmp /nfs/burd2p1/aqptmp /nfs/wald2p1/aqptmp
nettmp /nfs/burd1p1/nettmp /nfs/wald2p1/nettmp
-------------- next part --------------
#!/bin/ksh
#
# set -x
#
#
# sync_nfs_filesystems
#
# This script was written to help keep the nfs file systems in sync between file systems.
# It takes one argument - which file system to sync. It uses this argument to read from
# a config file a FROM location and a TO location. It also set up the logging information
# and determines which exclude file to use from this.
#
# EXIT STATUS:
# 0 normal suggessful exit
# -2 Usage has been displayed
# -3 A Sync for this filesystem is already running
#
# V1.0 12/15/2000 PEL Initial Version
#
#
#echo "$0 - Version 1.0 - last revised on 12/15/2000 by PEL"
#
# check number of args - must be exactly one or else give usage
#
if [ $# -eq 0 -o "$1" = "-h" ]
then
cat <<EOF
USAGE:
$0 filesystem
Where filesystem is the file system that you want to sync
EOF
exit -2
fi
FILESYSTEM=$1 # which file system to sync
WORKPATH=/opt/Rsync # path to all needed files
CONF_FILE=$WORKPATH/sync_nfs_filesystem.conf # config file of sync data
FROMDIR=`grep ^$FILESYSTEM $CONF_FILE | awk '{print $2}'`/ # get's source data path
TODIR=`grep ^$FILESYSTEM $CONF_FILE | awk '{print $3}'`/ # get's destination data path
#NOTIFY_LIST="sysopsprod at lightbridge.com" # who to notify when done
NOTIFY_LIST="plamadeleine at lightbridge.com,pel_pager at lightbridge.com"
TIMELOG=$WORKPATH/times.log # log file of start and stop times
OUTLOG=$WORKPATH/$FILESYSTEM.log # log file of work done
ARCHIVELOG=$WORKPATH/logs/${FILESYSTEM}_`date +"%H%M_%m%d%Y"`.log # where/how to archive log files
EXCLUDE=$WORKPATH/sync_${FILESYSTEM}.exclude # file of directories to exclude from sync
STARTTIME=`date +"%H:%M:%S %m/%d/%Y"` # start time of sync
LOCKFILE=/tmp/${FILESYSTEM}_sync.lock # used for program locking
#
# check to see if another sync job for this file system is already running
#
if [ -f $LOCKFILE ]
then
MESSAGE='tried to start syncing when there already was on running'
printf "%6s %6s %10s %55s \n" $STARTTIME $FILESYSTEM "$MESSAGE" >> $TIMELOG
exit -3
else
MESSAGE='started sync'
printf "%6s %6s %10s %35s \n" $STARTTIME $FILESYSTEM "$MESSAGE" >> $TIMELOG # records start time
touch $LOCKFILE
fi
#
# This line does the actually syncing of the two file systems
#
#$WORKPATH/bin/rsync.5 --recursive \
$WORKPATH/bin/rsync.7 --recursive \
--progress \
--stats \
--delete \
--one-file-system \
--times \
--group \
--owner \
--perms \
--archive \
--verbose \
--timeout=300 \
--exclude-from=$EXCLUDE \
$FROMDIR $TODIR >> $OUTLOG 2>&1
ENDTIME=`date +"%H:%M:%S %m/%d/%Y"` # gets ending time
MESSAGE='done with sync'
printf "%6s %6s %10s %35s \n" $ENDTIME $FILESYSTEM "$MESSAGE" >> $TIMELOG # records ending time
#
# archive log file
#
mv $OUTLOG $ARCHIVELOG # creates archive log file
#
# remove lock file
#
rm $LOCKFILE
#
# send out notification mail
#
#mailx -s "Done syncing $FILESYSTEM - $ENDTIME" $NOTIFY_LIST < /dev/null # mails notification list of job completion
exit 0 # exits nicely
More information about the rsync
mailing list