OS X 10.6 (Snow Leopard) HFS+ File Compression

Tony tonyt57 at gmail.com
Wed Oct 28 05:54:11 MDT 2009


Thanks.  The C code that brkirch provides takes care of a lot of the  
work, so hopefully someone will be able to provide a patch (Its been  
over 15 years since I did any C programing, so unfortunately I won't  
be able to contribute)

On Oct 28, 2009, at 12:08 AM, Matt McCutchen wrote:
> Rsync is just reading and writing files via the filesystem API; it has
> no access to any of the flags or xattrs used to implement the
> compression.
>
> I guess the filesystem doesn't compress new files by default.  If it  
> had
> an API to request compression, rsync could use that API when writing  
> the
> destination files.  Unfortunately, the API ditto is using appears to  
> be
> private to Apple.  See the post from brkirch beginning "The first  
> thing
> that I tried to do" on this page:
>
> http://www.macosxhints.com/article.php?story=20090902223042255
>
> So anyone interested in making rsync compress the destination files
> would probably have to copy the relevant code from afsctool.  This  
> could
> be shared as a patch; I feel quite sure it would not be adopted in the
> main version of rsync.
>
>

> On Tue, 2009-10-27 at 23:38 -0400, Tony wrote:
>> When rsync 3.0.6 copies files with HFS+ File Compression, the new
>> extended attribute decmpfs is not preserved, and the UF_COMPRESSED
>> flag is not set on the destination and the destination file is not
>> compressed.
>>
>> I examined the destination file as described in ars technica  (with  
>> ls
>> and xattr from a 10.5 Leopard boot), and the compressed data is moved
>> from the resource fork to the data fork, and the extended attributes
>> '@' are removed from the file.
>>
>> As far as I know, only ditto in 10.6 can handle HFS+ File
>> Compression.  (I even tested a 'clone' with disk utility (file copy,
>> not block), and it also failed (block copy, of course works).
>
> Rsync is just reading and writing files via the filesystem API; it has
> no access to any of the flags or xattrs used to implement the
> compression.
>
> I guess the filesystem doesn't compress new files by default.  If it  
> had
> an API to request compression, rsync could use that API when writing  
> the
> destination files.  Unfortunately, the API ditto is using appears to  
> be
> private to Apple.  See the post from brkirch beginning "The first  
> thing
> that I tried to do" on this page:
>
> http://www.macosxhints.com/article.php?story=20090902223042255
>
> So anyone interested in making rsync compress the destination files
> would probably have to copy the relevant code from afsctool.  This  
> could
> be shared as a patch; I feel quite sure it would not be adopted in the
> main version of rsync.
>
> -- 
> Matt
>



More information about the rsync mailing list