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