Jon Mitchell
2006-Jan-30 14:44 UTC
Overwriting source file leaves destination full of zeros
Hi, I'm a little confused over what I'm seeing when a source file is overwritten whilst an rsync is in progress. Instead of the destination file being truncated, or an error being raised and the destination file removed, I get a file of the correct length, but mostly full of nulls where previously there were none. An example is shown here:> ls -l big_file-rw------- 1 jonm users 168797799 Jan 30 09:06 big_file> ls -l small_file-rw-r--r-- 1 jonm users 9212 Jan 30 09:09 small_file> od -c -j 168797700 big_file # show the tail of the big file1203723004 e R a t e T r u n c \0 \0 \0 \0 \0 \0 1203723024 001 017 s o u n d . c o n n e c t e 1203723044 d 001 001 023 E t h e r n e t 0 . c o 1203723064 n n e c t e d 001 001 020 i d e 1 : 0 1203723104 . c o n n e c t e d 001 001 021 f l o 1203723124 p p y 0 . c o n n e c t e d 001 \0 1203723144 \0 \0 \0 1203723147> sha1sum big_filee9c56b070a077d942ac4db0ef48744cd1e5290a2 big_file> rsync big_file big_file2# Whilst this is running> cp small_file big_file> ls -l *_file*-rw------- 1 jonm users 9212 Jan 30 09:11 big_file -rw-r--r-- 1 jonm users 9212 Jan 30 09:09 small_file -rw------- 1 jonm users 168797799 Jan 30 09:11 big_file2 # big_file2 file size is correct> sha1sum big_file271c5981c0b22a22fc59859e6a86ea6e51edbb6fb big_file2 # sha1 differs> od -c -j 168797700 big_file21203723004 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 1203723144 \0 \0 \0 1203723147 # Last bytes of the big_file are all \0 Is this behaviour what you would expect from rsync? This is rsync version 2.6.6. Thanks, Jon ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________
Wayne Davison
2006-Jan-30 20:11 UTC
Overwriting source file leaves destination full of zeros
On Mon, Jan 30, 2006 at 02:43:42PM +0000, Jon Mitchell wrote:> Instead of the destination file being truncated, or an error being > raised and the destination file removed, I get a file of the correct > length, but mostly full of nulls where previously there were none.This is something that has been fixed in CVS, and will be released soon in version 2.6.7. Older versions of rsync were not properly setting an error condition when getting an early EOF (just when the read failed for other reasons). Many thanks for the full details of your error report. ..wayne..