Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for [[/eggref/5/osxattr|the CHICKEN 5 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-5.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. == osxattr Batch split and join HFS+ extended attributes. === Overview ''osxattr'' provides a command-line program to split HFS+ extended attributes from filesystem objects into a self-contained format, and a program to rejoin these split attributes. Because the attributes are split into simple files, it is possible to back them up with rsync or other standard backup tools and store them on filesystems without knowledge of EAs. This is the approach espoused by the [[http://www.shoup.net/xbup/|xbup]] utility, which inspired this egg. The extended attribute format is either the standard AppleDouble format which can be read by Apple's own utilities (including NFS), or a special SXML format designed for ''osxattr''. === split-xattr usage: ./split-xattr [options] [file-base] [xattr-base] --attr-mode=FMT attribute output mode [default: dedicated] --list-format=FMT format of input file list [default: rsync-list-only] --no-specials skip fifos and sockets --no-symlinks skip symlinks (recommended for copyfile on 10.4) -n, --dry-run describe operations only -v, --verbose verbose progress report -h, --help usage information -V, --version version information Reads HFS+ metadata from a list of files given on stdin and outputs it to one or many files, depending on the selected output format. Input filenames are relative to {{file-base}} (i.e. we chdir to {{file-base}} at startup), which defaults to the current directory. {{xattr-base}} is prefixed to output filenames, and defaults to empty; by setting it, one may output to a parallel directory structure. Note that the ''split'' operation does not delete any attributes from the files; it just copies them to the output. The attribute output mode ({{--attr-mode}}) may be one of the following: ; individual: EAs from {{filename}} are written in SXML format to {{._@filename}}. ; dedicated: EAs from {{filename}} are written in SXML format to {{.@@/._@filename}}. That is, a dedicated directory {{.@@}} under the parent of {{filename}}. ; unified: One record for each input file is written to stdout. ('''Warning''': this method cannot currently be decoded by {{join-xattr}}.) ; appledouble: Copy Finder Info and the Resource Fork to {{._filename}} in AppleDouble v2 format, using our own packing routines. Other extended attributes are (currently) not copied. ; copyfile: Copy ''all'' HFS+ metadata to {{._filename}} using the native OS X AppleDouble packer. This may not be 100% reliable on OS X 10.4, but works fine on 10.5. In particular, add {{--no-symlinks}} when on 10.4. The input file list format ({{--list-format}}) may be one of the following: ; rsync-list-only: the output of {{rsync --list-only}}. Useful for rsync backups, because you can run the same command to obtain a list of files and then again to actually back them up. ; find: the output of {{find -print}} ; find0: the output of {{find -print0}} === join-xattr usage: ./join-xattr [options] [file-base] [xattr-base] --attr-mode=MODE attribute input mode [default: dedicated] --list-format=FMT format of input file list [default: rsync-list-only] --no-specials skip fifos and sockets --no-symlinks skip symlinks (recommended for copyfile on 10.4) -n, --dry-run describe operations only -v, --verbose verbose progress report -h, --help usage information -V, --version version information Reads a list of files given on stdin and applies the corresponding serialized HFS+ metadata to each. Input filenames have any leading / stripped and are relative to {{file-base}} (i.e. we chdir to {{file-base}} at startup); {{file-base}} defaults to the current directory. {{xattr-base}} is prefixed to attribute filenames, and defaults to empty; by setting it, one may apply attributes from a parallel directory structure. The possible values for the attribute output file format ({{--attr-mode}}) and input file list format ({{--list-format}}) are the same as for {{split-xattr}}. However, note that {{unified}} attribute mode is not currently supported. === Examples ==== Split attributes into .@@/ directories for entire disk For every directory PATH on the disk, create a directory {{PATH/.@@}} and split attributes from {{PATH/FILE}} into {{PATH/.@@/._@FILE}}, in SXML format. rsync -a --list-only --filter '- .@@' --relative / | \ split-xattr --verbose --list-format=rsync-list-only \ --attr-mode=dedicated --no-specials \ / For example, the attributes of {{/Users/me/myfile}} are written in SXML to {{/Users/me/.@@/._@myfile}}. ==== Split attributes into ._ files in parallel tree for entire disk For every directory PATH on the disk, split attributes from {{PATH/FILE}} into {{/._./PATH/._FILE}}. rsync -a --list-only --filter='- ._*' --relative / | \ split-xattr --verbose --list-format=rsync-list-only \ --attr-mode=copyfile --no-symlinks --no-specials \ / /._. The {{xattr-base}} option {{/._.}} is prepended to every output path, which creates a parallel directory tree that can be backed up and disposed of (for example, {{/._.}} could be a ramdisk). If the base option were not provided, attribute files would be written directly inline to {{PATH/._FILE}}; that could be what you want, but it will leave a lot of files scattered around. Here, the attributes of {{/Users/me/myfile}} would be written in AppleDouble v2 format to {{/._./Users/me/._myfile}}. === License Copyright (c) 2010 Jim Ursetto. All rights reserved. License: New BSD (3-clause).
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you multiply 7 by 3?