{"id":1300,"date":"2019-05-14T16:58:49","date_gmt":"2019-05-14T14:58:49","guid":{"rendered":"https:\/\/www.pagetable.com\/?p=1300"},"modified":"2019-05-14T16:58:49","modified_gmt":"2019-05-14T14:58:49","slug":"recovering-files-from-broken-amiga-ofs-disks","status":"publish","type":"post","link":"https:\/\/www.pagetable.com\/?p=1300","title":{"rendered":"Recovering Files from Broken Amiga OFS Disks"},"content":{"rendered":"<p><code>extract-adf<\/code> is a tool for recovering files from broken Amiga OFS filesystem images. It can reconstruct directory hierarchies even for files that don&rsquo;t have directory entries.<\/p>\n<p><a href=\"https:\/\/github.com\/mist64\/extract-adf\">https:\/\/github.com\/mist64\/extract-adf<\/a><\/p>\n<p>I originally developed <code>extract-adf<\/code> to <a href=\"https:\/\/www.pagetable.com\/?p=34\">reconstruct the leftovers on the Amiga Kickstart 1.0 disk<\/a>. <a href=\"http:\/\/www.dot1q.org\/\">Sigurbj\u00f6rn B. L\u00e1russon<\/a> has made it into a general-purpose tool with the following features:<\/p>\n<ul>\n<li>support for ADF, ADZ and DMS image files<\/li>\n<li>support for DD and HD disks<\/li>\n<li>reconstruction of directory hierarchies<\/li>\n<li>recreation of time stamps<\/li>\n<li>lots of optional debug output<\/li>\n<\/ul>\n<p>Just passing a disk image file as an argument will write all files and directories to the local filesystem:<\/p>\n<pre><code>$ extract-adf \"Amiga Workbench 1.0 (31.334) (Commodore) (1985) [m].adf\"\nAutodetected fileformat from extension is ADF\nStartsector is 0\nEndsector is 1760\n<\/code><\/pre>\n<p><code>extract-adf<\/code> will create a directory matching the disk name with all the contents, and an &ldquo;Orphaned&rdquo; directory.<\/p>\n<pre><code>$ ls -l\ntotal 0\ndrwxr-xr-x   2 mist  staff   64 May 12 10:47 Orphaned\ndrwxr-xr-x  23 mist  staff  736 Jan 31  2000 Workbench\n\n$ ls -l Workbench\/\ntotal 152\ndrwxr-xr-x   9 mist  staff    288 Jan 31  2000 Demos\n-rw-r--r--   1 mist  staff    346 Sep 11  1985 Demos.info\n-rw-r--r--   1 mist  staff    306 Sep 11  1985 Disk.info\n[...]\n\n$ ls -l Orphaned\/\n[empty]\n<\/code><\/pre>\n<p>The &ldquo;Orphaned&rdquo; directory contains all files that are not referenced by directory entries. In this case, it will be empty.<\/p>\n<p>Here is how to recover the contents of the Kickstart 1.0 disk:<\/p>\n<pre><code>$ extract-adf -s 512 \"Amiga Kickstart 1.0 (NTSC) (A1000) (Commodore) (1985) (disk).adf\"\nAutodetected fileformat from extension is ADF\nStartsector is 512\nEndsector is 1760\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"docs\/extract-adf\/kickstart_contents.png\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>extract-adf is a tool for recovering files from broken Amiga OFS filesystem images. It can reconstruct directory hierarchies even for files that don&rsquo;t have directory entries. https:\/\/github.com\/mist64\/extract-adf I originally developed extract-adf to reconstruct the leftovers on the Amiga Kickstart 1.0 disk. Sigurbj\u00f6rn B. L\u00e1russon has made it into a general-purpose tool with the following features: &#8230; <a title=\"Recovering Files from Broken Amiga OFS Disks\" class=\"read-more\" href=\"https:\/\/www.pagetable.com\/?p=1300\" aria-label=\"Read more about Recovering Files from Broken Amiga OFS Disks\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5,13],"tags":[],"class_list":["post-1300","post","type-post","status-publish","format-standard","hentry","category-amiga","category-archeology","category-floppy-disks"],"_links":{"self":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1300"}],"version-history":[{"count":0,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1300\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}