<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Haystack Software Blog &#187; review</title>
	<atom:link href="http://www.haystacksoftware.com/blog/category/review/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.haystacksoftware.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 24 Jan 2012 20:02:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CrashPlan restore analysis</title>
		<link>http://www.haystacksoftware.com/blog/2010/06/crashplan-restore-analysis/</link>
		<comments>http://www.haystacksoftware.com/blog/2010/06/crashplan-restore-analysis/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 19:08:24 +0000</pubDate>
		<dc:creator>Stefan Reitshamer</dc:creator>
				<category><![CDATA[backup]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.haystacksoftware.com/blog/?p=255</guid>
		<description><![CDATA[I&#8217;m the author of Arq, a backup product for the Mac, so I&#8217;m certainly biased, but in this post I&#8217;m only going to describe the factual results of a backup/restore with CrashPlan. You can verify these results yourself. Warning: What follows is technical nitty-gritty. If you just want to know why Mac metadata are important [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m the author of <a href="http://www.haystacksoftware.com/arq/">Arq</a>, a backup product for the Mac, so I&#8217;m certainly biased, but in this post I&#8217;m only going to describe the factual results of a backup/restore with CrashPlan. You can verify these results yourself.</p>
<p>Warning: What follows is technical nitty-gritty. If you just want to know why Mac metadata are important in the real world, read <a href="http://www.haystacksoftware.com/blog/2010/06/the-importance-of-metadata-on-the-mac/">The Importance of Metadata on the Mac</a>.</p>
<p style="background-color: #cccccc; margin: 20px 0; padding: 10px;"><strong>UPDATE December 13, 2010</strong>: CrashPlan have released a new version of their app which <a href="http://www.haystacksoftware.com/arq/crashplan-backup-bouncer-test.txt">passes all but 1</a> of the Backup Bouncer tests. The version is called &#8220;3.0&#8243;. Within the app the version is listed as &#8220;3.0 (1291687724486)&#8221;. This blog post analyzed the &#8220;3.8.2010&#8243; version which was the latest as of February 2010.</p>
<h3>Detailed Technical Analysis</h3>
<p>Here&#8217;s what CrashPlan <a href="http://support.crashplan.com/doku.php/articles/supported_metadata">says it backs up and restores</a> on the Mac:</p>
<ul>
<li>Data fork</li>
<li>Resource fork</li>
<li>Owner information for regular files and directories</li>
<li>Symlink owner information</li>
<li>POSIX permissions</li>
<li>Finder Flags/Info (including type/creator)</li>
<li>Locked flag (this is part of Finder Flags)</li>
<li>Modification date</li>
<li>Creation date</li>
<li>Finder comments (.DS_Store file)</li>
<li>ACLs</li>
</ul>
<p>CrashPlan states that the following are unsupported:</p>
<ul>
<li>Other named forks</li>
<li>BSD Flags, which can be set via chflags</li>
<li>HFS+ extended attributes (i.e. xattr)</li>
<li>Aliases</li>
</ul>
<p>That list a bit redundant: &#8220;other named forks&#8221; is the same as &#8220;HFS+ extended attributes&#8221;, and an &#8220;<a href="http://en.wikipedia.org/wiki/Alias_(Mac_OS)">alias</a>&#8221; is a special type of file containing some data as well as 2 extended attributes (com.apple.FinderInfo and com.apple.ResourceFork) and some Finder Flags (&#8216;Alias&#8217; and &#8216;Custom Icon&#8217;).</p>
<p>Also, CrashPlan doesn&#8217;t mention that they do not support hardlinks, FIFOs, or device files.</p>
<ul>
</ul>
<h3>Test Results</h3>
<p>I tested CrashPlan 3.8.2010 on a MacBook Pro running OS X 10.6.3. I followed <a href="http://github.com/n8gray/Backup-Bouncer">Backup Bouncer</a>&#8216;s test procedure:</p>
<ol>
<li>Download <a href="http://github.com/n8gray/Backup-Bouncer">Backup Bouncer 0.2.0</a></li>
<li>&#8216;sudo bbouncer create-vol Src&#8217; to create the source volume for testing</li>
<li>&#8216;sudo bbouncer create /Volumes/Src&#8217; to create the files to be backed up</li>
<li>&#8216;sudo bbouncer create-vol Dst&#8217; to create a volume for the restore</li>
<li>Back up all the folders under /Volumes/Src using CrashPlan (to CrashPlan Central)</li>
<li>Restore all the folders from CrashPlan to /Volumes/Dst</li>
<li>&#8216;sudo bbouncer verify -d /Volumes/Src /Volumes/Dst&#8217;</li>
</ol>
<p>Here&#8217;s the output of that &#8216;bbouncer verify&#8217; command:</p>
<pre>backup-bouncer-0.2.0 $ sudo ./bbouncer verify /Volumes/Src /Volumes/Dst
Verifying:    basic-permissions ... ok (Critical)
Verifying:           timestamps ... ok (Critical)
Verifying:             symlinks ... ok (Critical)
Verifying:    symlink-ownership ... FAIL
Verifying:            hardlinks ... FAIL (Important)
Verifying:       resource-forks ...
   Sub-test:             on files ... ok (Critical)
   Sub-test:  on hardlinked files ... FAIL (Important)
Verifying:         finder-flags ... FAIL (Critical)
Verifying:         finder-locks ... ok
Verifying:        creation-date ... ok
Verifying:            bsd-flags ... FAIL
Verifying:       extended-attrs ...
   Sub-test:             on files ... FAIL (Important)
   Sub-test:       on directories ... FAIL (Important)
   Sub-test:          on symlinks ... FAIL
Verifying: access-control-lists ...
   Sub-test:             on files ... ok (Important)
   Sub-test:              on dirs ... ok (Important)
Verifying:                 fifo ... FAIL
Verifying:              devices ... FAIL
Verifying:          combo-tests ...
   Sub-test:  xattrs + rsrc forks ... FAIL
   Sub-test:     lots of metadata ... FAIL</pre>
<h3>Detailed Failure Analysis</h3>
<h4>symlink-ownership test failure</h4>
<p>The source directory looks like this:</p>
<pre>$ ls -l Src/15-symlink-ownership/
total 32
-rw-r--r--  1 root  staff  14 Jun  1 07:07 some-file
lrwxr-xr-x  1 _www  _www   11 Jun  1 07:07 symlink1@ -&gt; ./some-file
lrwxr-xr-x  1 root  wheel  11 Jun  1 07:07 symlink2@ -&gt; ./some-file
lrwxr-xr-x  1 root  staff  10 Jun  1 07:07 symlink3@ -&gt; ./symlink1</pre>
<p>The files restored by CrashPlan look like this:</p>
<pre>$ ls -l Dst/15-symlink-ownership/
total 32
-rw-r--r--  1 root  staff  14 Jun  1 07:07 some-file
lrwxr-xr-x  1 root  staff  11 Jun  1 07:11 symlink1@ -&gt; ./some-file
lrwxr-xr-x  1 root  staff  11 Jun  1 07:11 symlink2@ -&gt; ./some-file
lrwxr-xr-x  1 root  staff  10 Jun  1 07:11 symlink3@ -&gt; ./symlink1</pre>
<p>CrashPlan doesn&#8217;t restore symlink owner information, <a href="http://support.crashplan.com/doku.php/articles/supported_metadata">even though they claim to</a> on their web site.</p>
<h4>hardlinks test failure</h4>
<p>The source directory looks like this:</p>
<pre>$ stat -f 'inode:%i file:%N' Src/20-hardlinks/*
inode:48 file:Src/20-hardlinks/link1
inode:48 file:Src/20-hardlinks/link2
inode:48 file:Src/20-hardlinks/link3
inode:48 file:Src/20-hardlinks/some-file﻿</pre>
<p>Note the &#8216;inode&#8217; number is the same for each file. That&#8217;s what a &#8220;hardlink&#8221; is. Wikipedia has <a href="http://en.wikipedia.org/wiki/Hard_link">more information on hardlinks</a>.</p>
<p>The files restored by CrashPlan look like this:</p>
<pre>$ stat -f 'inode:%i file:%N' Dst/20-hardlinks/*
inode:57 file:Dst/20-hardlinks/link1
inode:59 file:Dst/20-hardlinks/link2
inode:58 file:Dst/20-hardlinks/link3
inode:60 file:Dst/20-hardlinks/some-file</pre>
<p>The &#8216;inode&#8217; numbers are all different in the restored files.</p>
<h4>finder-flags test failure</h4>
<p>CrashPlan correctly restores almost all the Finder Flags, but Backup Bouncer marks this test as &#8220;failed&#8221; because CrashPlan fails to restore the Extended Finder Flag &#8220;busy&#8221;. The source files look like this:</p>
<pre>$ GetFileInfo -P -a Src/40-finder-flags/mucho-flags-file
AVBSTClINMEDZ</pre>
<pre>$ GetFileInfo -P -a Src/40-finder-flags/mucho-flags-dir
aVbstClInmEDZ﻿</pre>
<p>The files restored by CrashPlan look like this:</p>
<pre>$ GetFileInfo -P -a Dst/40-finder-flags/mucho-flags-file
AVBSTClINMEDz</pre>
<pre>$ GetFileInfo -P -a Dst/40-finder-flags/mucho-flags-dir
aVbstClInmEDz﻿</pre>
<p>The &#8216;z&#8217; flag is &#8220;busy&#8221; (<span style="font-family: Monaco; font-size: 10px;">kExtendedFlagObjectIsBusy</span>) in the Extended Finder Flags.</p>
<h4>bsd-flags test failure</h4>
<p>CrashPlan restores 1 of the 4 BSD flags, UF_NODUMP (1), UF_IMMUTABLE (2), UF_APPEND (4), and UF_OPAQUE (8). The source files look like this:</p>
<pre style="margin: 8px;">$ stat -f 'flags:%f name:%N' Src/60-bsd-flags/*
flags:15 name:Src/60-bsd-flags/dir-with-flags
flags:15 name:Src/60-bsd-flags/file-with-flags﻿</pre>
<p>The files restored by CrashPlan look like this:</p>
<pre style="margin: 8px;">$ stat -f 'flags:%f name:%N' Dst/60-bsd-flags/*
flags:2 name:Dst/60-bsd-flags/dir-with-flags
flags:2 name:Dst/60-bsd-flags/file-with-flags﻿</pre>
<p>In the output above, the &#8220;flags:15&#8243; is all 4 flags (1+2+4+8=15) and &#8220;flags:2&#8243; is UF_IMMUTABLE. CrashPlan actually restores the UF_IMMUTABLE flag correctly because it&#8217;s the same as the &#8220;Locked&#8221; Finder Flag in OS X.</p>
<h4>extended-attrs test failure</h4>
<p>Backup Bouncer creates some <a href="http://en.wikipedia.org/wiki/Extended_file_attributes">extended attributes</a> with silly names on a file, a symlink, and a directory. The names of the extended attributes of each file are listed here (&#8216;xattr-test&#8217; has 2 extended attributes):</p>
<pre>$ xattr-util l Src/70-extended-attrs/dir-with-xattrs
mamma.mia
$ xattr-util l Src/70-extended-attrs/﻿symlink-with-xattrs
good.grief
$ xattr-util l Src/70-extended-attrs/﻿xattr-test
message
this.that</pre>
<p>The files restored by CrashPlan look like this:</p>
<pre>$ xattr-util l Dst/70-extended-attrs/dir-with-xattrs
$ xattr-util l Dst/70-extended-attrs/﻿symlink-with-xattrs
$ xattr-util l Dst/70-extended-attrs/﻿xattr-test﻿﻿</pre>
<p>Those 3 &#8216;xattr-util&#8217; commands show no output because no extended attributes exist on the restored files.</p>
<h4>fifo test failure</h4>
<p>The source file is a &#8220;<a href="http://en.wikipedia.org/wiki/FIFO">fifo</a>&#8221; (a first-in-first-out file, or &#8220;named pipe&#8221;):</p>
<pre>$ file Src/90-fifo/some-fifo
Src/90-fifo/some-fifo: fifo (named pipe)﻿</pre>
<p>CrashPlan doesn&#8217;t restore anything at all in this case:</p>
<pre>$ file Dst/90-fifo/some-fifo
Dst/90-fifo/some-fifo: cannot open `Dst/90-fifo/some-fifo' (No such file or directory)﻿﻿﻿</pre>
<p>Backing up and restoring fifos is quite esoteric and probably of no interest to most people.</p>
<h4>devices test failure</h4>
<p>The source files are &#8220;<a href="http://en.wikipedia.org/wiki/Device_file">device</a>&#8221; files:</p>
<pre>$ file Src/95-devices/devvn0
Src/95-devices/devvn0: block special﻿﻿
$ file Src/95-devices/devzero
Src/95-devices/devzero: character special﻿</pre>
<p>CrashPlan doesn&#8217;t restore anything at all in this case:</p>
<pre style="margin: 8px;">$ file Dst/95-devices/devvn0
Dst/95-devices/devvn0: cannot open `Dst/95-devices/devvn0' (No such file or directory)
$ file Dst/95-devices/devzero
Dst/95-devices/devzero: cannot open `Dst/95-devices/devzero' (No such file or directory)﻿</pre>
<p>Like fifos, device files are quite esoteric and probably of no interest to most people.</p>
<h3>﻿﻿﻿﻿Conclusions</h3>
<p>As I said at the beginning of this post, I wrote Arq, which competes with CrashPlan, so I&#8217;m biased.</p>
<p>If you&#8217;ve analyzed your programs and your files and determined you don&#8217;t need the metadata that CrashPlan skips, then you should be OK, at least in terms of metadata.</p>
<p>If you want to be sure all your data (and metadata) are backed up and restored correctly, then Arq and Jungle Disk are the only 2 options I know of. Arq has a Mac-native UI, a one-time software license fee (instead of an endless software subscription fee), and has gotten excellent reviews (see <a href="http://www.macupdate.com/info.php/id/33485/arq#revs">MacUpdate</a> and <a href="http://www.macstories.net/reviews/arq/">MacStories</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haystacksoftware.com/blog/2010/06/crashplan-restore-analysis/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Arq&#8217;s Backup Bouncer results</title>
		<link>http://www.haystacksoftware.com/blog/2010/02/arqs-backup-bouncer-results/</link>
		<comments>http://www.haystacksoftware.com/blog/2010/02/arqs-backup-bouncer-results/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 18:45:39 +0000</pubDate>
		<dc:creator>Stefan Reitshamer</dc:creator>
				<category><![CDATA[arq]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.haystacksoftware.com/blog/?p=32</guid>
		<description><![CDATA[The critical feature of any backup product is its ability to restore your files correctly. If it can&#8217;t do that, then it really doesn&#8217;t matter how fast it is, how easy to use it is. Files on the Mac can have a bewildering array of important metadata attached to them, and it&#8217;s critical to restore [...]]]></description>
			<content:encoded><![CDATA[<p>The critical feature of any backup product is its ability to restore your files correctly. If it can&#8217;t do that, then it really doesn&#8217;t matter how fast it is, how easy to use it is.</p>
<p>Files on the Mac can have a bewildering array of important metadata attached to them, and it&#8217;s critical to restore all the metadata, not just the file&#8217;s main data (contents). Fortunately there&#8217;s an awesome open-source tool for testing whether your backup solution is capable of restoring correctly: <a href="http://www.n8gray.org/blog/2007/04/27/introducing-backup-bouncer/">Backup Bouncer</a>.</p>
<p><a href="http://www.haystacksoftware.com/arq/">Arq</a> passes every Backup Bouncer test. It&#8217;s safe to use for backing up your files. What are you using for backup? Does it pass all the Backup Bouncer tests?</p>
<p>Here are the Backup Bouncer results:</p>
<p><code>Verifying:    basic-permissions ... ok (Critical)<br />
Verifying:           timestamps ... ok (Critical)<br />
Verifying:             symlinks ... ok (Critical)<br />
Verifying:    symlink-ownership ... ok<br />
Verifying:            hardlinks ... ok (Important)<br />
Verifying:       resource-forks ...<br />
Sub-test:             on files ... ok (Critical)<br />
Sub-test:  on hardlinked files ... ok (Important)<br />
Verifying:         finder-flags ... ok (Critical)<br />
Verifying:         finder-locks ... ok<br />
Verifying:        creation-date ... ok<br />
Verifying:            bsd-flags ... ok<br />
Verifying:       extended-attrs ...<br />
Sub-test:             on files ... ok (Important)<br />
Sub-test:       on directories ... ok (Important)<br />
Sub-test:          on symlinks ... ok<br />
Verifying: access-control-lists ...<br />
Sub-test:             on files ... ok (Important)<br />
Sub-test:              on dirs ... ok (Important)<br />
Verifying:                 fifo ... ok<br />
Verifying:              devices ... ok<br />
Verifying:          combo-tests ...<br />
Sub-test:  xattrs + rsrc forks ... ok<br />
Sub-test:     lots of metadata ... ok<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.haystacksoftware.com/blog/2010/02/arqs-backup-bouncer-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

