ChangeLog --------- 11/11/04 version 2.112 -work to get hashSave info properly updated for directories -also fixed logic for directories for -c -del option combination 11/11/04 version 2.111 -locale issues: try to clobber locale only if LANG env var is set -tmpFilename: add pid to allow simultaneous use. duh. -tar copy: note change in path -mvTreeFind: re-enabled File::Spec actions. -findUnusedPort: added a 2 second timeout. 01/02/03 version 2.110 -fixed to work around perl unicode issues -moved tty reopen to more auspicious location -makeBackup fixes: explicitly change permissions to allow file renaming. better handling if lock fails. 12/07/02 version 2.109 -more fixups for -c -del problems -makeBackup: now make lock attempt before renaming so avoid file truncation on systems with broken file locking. -added no locale line -updated copyright date 11/23/02 version 2.108 -added ability to set local/remote skip filename. -fixup for undesirable -c -del behavior. -interactive input: fixup for ignoring skip command. 11/11/02 version 2.107 -added check for sufficient disk space -added checks for invalid responses for keyboard input 08/10/02 version 2.106 mods to better handle manual server starts: -always tries a manual connection -specification of passcode not necessary -fix so server can be started while not in home directory. 07/14/02 version 2.105 merge patch from Patrick Ohly: die if error in .rc file fixup for default $rsh setting - server must be asked to do initCheckSum() before changing its work dir, because path to fsync might be relative - fixed handling of relative path hashSaveFile specification - MakeHashes processing messages: now printed for $verbose>1 07/14/02 version 2.104 $pid changes: initialize and check before killing child process (may be none). handling of symlinks: properly deal with dangling symlinks specified on cmdline in SyncHash: grab link info from disk for symlinks checkHashMiss: always check if times differ (even if $setDate=0) fixup in file/hardlink swapping logic at startup 05/04/02 version 2.103 cleaned up perl warnings about undefined variables changed verbose level of rootDir search rootDir search: deal with case of missing spec updated test for incompatible version updated hardlink/file collision logic: give up on swapping if there are more than two links to the given inode. 03/30/02 version 2.102 added symlink *modified* logic. removed symlink time tests: can one change symlink times 03/25/02 version 2.101 added partial support for saving symlink info in the hashsave file: added readFromHashSave, checkSumString 03/10/02 version 2.100 -fixes so dangling symlinks are correctly handled -added Exists subroutine to replace perl -e test (doesn't follow symlinks) 02/23/02 version 2.99 -cleanup -added code to create directory hierarchy in fsyncRename. Necessary -because File::Copy is broken on some platforms (Darwin). 02/17/02 version 2.98 -added includeList: regexps which are not excluded. -added rename feature for symlinks, dirs and files 01/13/02 version 2.97 -client: fix for nondirs which had same beginning part of name as full directory name. -checkError: clear errorMsg 12/01/01 version 2.96 - fixed problem with -L -del: files marked as deleted remotely would be deleted locally 11/12/01 version 2.95 -fixes for ignore actions. -now ignore blank lines in .fsync-skip 11/04/01 version 2.94 -addressed performance issue with addition of @currentKeys. 10/28/01 version 2.93 -ignoreSpec: now delete all spec entries which match given regular expression. -RemoveDirEntries: now always delete all types with given name. 10/21/01 version 2.92 -ign prompt option renamed to IGN -ign option now modifies cmd_file: it adds an entry to excludeList -> I find this preferrable as it's per-host and the info is localized in one place. -allow user to modify the regular expression before it is set. 10/14/01 version 2.91 -adjusted verbosity level of skippedList warning messages 10/14/01 version 2.90 -in skippedList processing, call removeDirEntries 10/10/01 version 2.89 - fixed dumb bug in dbClientCopyFrom 10/07/01 version 2.88 - fix handing of .fsync-skip: now all entries are collected on client and server - inconsitencies are weeded out. This previously could cause skipped files to appear deleted. 09/23/01 version 2.87 - added mvTreeFind to move directory trees across filesystems 09/01/01 version 2.86 - makeBackup: added ugly hack around fact that File::Copy::move doesn't move directories across filesystems. 8/30/01 Version 2.85 - default Slogfile now placed in home directory - verbose output added 7/28/01 - Perl warning flag enabled. Added handler to ignore uninitiated value warning checksum prog: value of "none" now disables checksums - added checkErrors var and -nc flag: can disable error check call after each command - initCheckSum now called after server started. - checksum-prog server command added - moved call to chdir to after checksum initialization - added --fast-sync-once combo flag - added cmd_ versions of all flags to allow overiding of rc file - dbClientCopy cmds: added argument specifying if size and checksum are the same. If only time differs, it does the right thing now. - removed setting of $0 in server. Why was this done? It screws up the checksum init. - increased verbose level required to get server commands. Since these are commonly echoed back to the client, having many of them impacts performance over slow connections. - changed backupDir behavior: now use value of "none" to disable changed hashSaveFile behavior: now use value of "none" to disable 6/16/01 - use File:Copy::move to mv across filesystem boundaries. - maintain hashsave info for symlinks and directories, so delete propagation will work with these. 6/02/01 - added followTopLinks functionality (and -ft command option). - always send follow-links info- so suspended server has appropriate behavior. - RemoveDirEntries as appropriate if hash collision detected 5/7/01 - allow command line path specifications to override those in the excludeList. 4/15/01 - fixed multiple lines installing signal handlers. Ctrl-C behavior during dbCopyFrom fixed. 4/1/01 - changed #! line to use /usr/bin/env - changed passcode file stuff- now used if host and port match those saved. - fixed hash save file reading to correctly handle file names with spaces. 3/24/01 - added -c -del behavior for files (deletion propagation) - added in-hash-save server command 3/4/01 - changed -R/-L behavior and added -del flag - added protectShell and now protect the $ character - fixed merge/diff behavior so temp file doesn't get in sync loop. - fixed so -bd "" means no backup made. 2/25/01 - merged setOwn funtionality from Jon Hittner. 2/10/01 - made changes to findHashCollisions. Now is symmetric and takes only two fields 2/6/01 - now use Cwd package - fixed chdir($rootdir) location - don't open tty if skipFlag is set. - added type info field to symlinks 1/27/01 - changed passcodes from floating point nums to whole numbers - changed fsuid code- now fsuid contains the hostname - created changes file 1/24/01 - dumb error in dbCopyTo: synced hashes after return... 1/18/01 - fixed ugly bug whereby hashes weren't properly updated on copyTo - merged -fs functionality from Alexey Nogin 1/15/01 - handle dropped connections better - changed squence of get-passcode command- so that checksums are computed simultaneously on client and server if -ns is specified. - added FSUID deliniation of hashsave filename- so fsync deals better with syncing to multiple hosts. - changed hashsave assignment to happen in [db]copyFrom and removed it from makehash: modified status maintained until a copy has occurred. - added readWithQuit: added suspend capability - added syncHash func and sync-hash command so that modified files which are identical have their hashSave entry updated. 1/9/01 - merged Patrick Ohly's -ns functionality 11/16/00- added code to check for hash miss in dbCopyFrom/To. Now does copyFrom/To is hash miss is detected. - fixed mask in myCheckSum 10/2/00 - completed ignoreSpec implementation 10/1/00 - added ignoreSpec - functionality to directory processing 9/2/00 - fixed cmd_port behavior (again) - fixed hardlink behavior when mirroring 8/30/00 - fixed special character protection when using checkSumProg - made some copy messages shorter. 8/28/00 - fixed bug in -n w/ symlinks - better treatment of catastrophic user shutdown: sets 8/22/00 - added -R and -L mirroring flags. Still needs a bit of work. date to epoch 8/19/00 - unified path specifications into single hash of hashes and added findHashCollisions to remove redundant code. Perl sucks for multi-dimensional arrays. 8/15/00 - added -nd and -np flags. Inspired by Patrick Ohly. 8/14/00 - server logfile moved to client host. Removes nasty shell dependency. 8/12/00 - merged in changes from Patrick Ohly (Patrick.Ohly@pallas.com) - enable communication over the rsh (or ssh) connection. Will not work if server is manually started. - added separate proxyport. - added printHash subroutine- to cut out redundant code. - fixed permission bugs with (sym)links in server code 7/25/00 - new dbCheckSum: robust against transposed characters 7/24/00 - added new algorithm for dbCheckSum. Now differentiates files with transposed lines. 7/12/00 - fixed hashSaveFile bug: by default sent local full path name - fixed bug in copyFrom: setting of hashes never happened. 7/11/00 - fixed problem with files with more than one hard link. 6/17/00 - delete hashsave entry in Delete 6/13/00 - fixed -v0 override from command line. 5/20/00 - fixed protection of special characters in system calls. - Many minor fixes for undefined values 5/15/00 - added code to check for busy ports. 5/13/00 - changes to allow fsync . in the root directory - moved hard link handling after files. hard links are only for files. The file must exist for the link to succeed. - fixed more issues with hard link handling. 5/9/00 - added .fsync-skip per-directory path excclusion support 4/19/00 - fixed space protection for external cksumprog 4/14/00 - removed "inode" member of filehash in MakeHashes: caused nasty in sendHash2D 4/11/00 - changed to use external cksum program, if available. This change provides a huge speedup. 4/5/00 - replaced get/sendlinkhash/get/sendfilehash with get/sendHash2D 4/3/00 - added sendLines - placed processing links before files (so directory links work) - added get-error command to server 4/1/00 - changed checksum to use the algorithm in ``cksum.'' 3/18/00 - added print size/time statements for targets which exist only on one host. - changed linkHash: added time element. Can now update newer link. 3/4/00 - Fixed MakeHash to read dangling symlinks. Also reduced number of stat()s required by using ``_'' file argument. 2/28/00 - redirected stdin from /dev/null for rsh command. This old behavior was somehow removed. 2/12/00 - Enabled makeBackup for non-files added readInteractive 2/8/00 - removed trailing slashes from fileList added skipFlag- for unattended execution. Inspired by S. Hauan. 1/31/00 - added explicit resyncing of stdin after connection is established. This apparently needed when using ssh version 2. 1/28/00 - fixed bugs in absolute path handling. 1/16/00 - changed behavior of command-line arguments. Are now interpreted relative to PWD. Also, fully specified path specifications are now allowed. However, the spec must be in the rootdir directory hierarchy. 12/6/99 - fixed bug in which -p option was ignored if $port was specified in the rc file. 12/4/99 - fixed bug in which permisions were changed in dbCopyTo 11/17/99- fixed bug in interrupt mode of copyFrom added -p option 11/25/99- added default for $hashSaveFile. Added delete feature for case when file exists on both local and remote hosts. 10/13/99- changed dbCopyFileFrom to write into proper file name- seems better for incremental copying. 10/12/99- added dbCopy functionality. Allows for smart copying of mail files and incremental copying. 9/21/99 - changed Delete subroutine to call makeBackup instead of unlink 9/2/99 - added initial support for hard links 9/1/99 - fixed bug creating remote symlinks- noted by M. Pavese 7/11/99 - changed all user-settable variables to have work-separation denoted by case. 6/11/99 - added check for open filehandle in clientHandler 6/7/99 - all reads from STDIN now go through readFlushedStdin- so that garbage typed before a prompt is ignored - renamed prompt_filesize to promptFilesize 6/2/99 - added signal handlers for more gentle exits - fixed bug with remroot dir 5/18/99 - added passcode to increase security for orphaned servers and to prevent inadvertent connections. - added ClientQuit- a single exit point for the Client 5/17/99 - added delete command to server - changed behavior when file present on one side, and not the other: added delete file option 5/11/99 - changed client connection code to make ssh-tunneling connects more robust. 4/25/99 - added support for filenames with embedded spaces - fixed bug in which new files were not entered in the hashSave file. - fixed major/minor mode version comparison 4/19/99 - fixed bug which prevented -n from working 4/5/99 - changed format of file hash info. Now sent as one large hash. - Added mod field to fileHash. Flags modification of file from hashSave info. - Added version flag and version checking 3/16/99 - added proxyhost variable- useful for ssh connections. 2/28/99 - added redirect from /dev/null for the rsh command. This prevents users from needing to do this in their .fsyncrc 1/27/99 - fixed server-code bug. Specifying a rem_root dir now works. 1/19/99 - fixed bug with zero-length files in CopyTo 1/7/99 - cleaned out old comments and changed most instances of $remhost to ``remote host'' in print statements 12/29/98- change parameters used by the client when connecting to the server. 12/26/98- changed rsh start to fork- this so that backgrounding is no issue. To work better with port-forwarding under ssh. 10/13/98- command-line remhost specification overrides rc file 9/17/98 - changed command line interface: server now takes only -v option it is not necessary to specify any options for the client 9/16/98 - added buffering to file copies.. 9/16/98 - added loop in makeHashes: so that directories higher in a heirarchy are added to the directory hash 9/11/98 - fixed bug in server: it didn't recognize the makedir command 8/31/98 - fixed bug in RemoveDirEntries: added / to regular expression so that only path elements which are beneath the excluded dir are removed. 7/27/98 - updated directory behavior: -now sets permissions -the user is not prompted for entries further down the directory tree, if s/he chooses not to create the upper-level dir 6/25/98 - fixed modes before unlink, to prevent failure 6/13/98 - fixed server code so that it releases the port when a connection has been made. 6/13/98 - fixed hashsavefile bug - where old hash info was lost 5/12/98 - backup copy support added