Comments (8)
Hi, can you unmount the disk from FUSE and post the output of
hfsdump /dev/sdXX stat "/Users/abc/Font Library/A/Avant Garde Gothic URW/Avant Garde Gothic URW"
and also try running
hfsdump /dev/sdXX read "/Users/abc/Font Library/A/Avant Garde Gothic URW/Avant Garde Gothic URW/rsrc" > some_resource_data
(note the /rsrc at the end of the path in this one)
This should help indicate what's going wrong.
from hfsfuse.
OK, I figured out what's going on here. The maximum size extended attribute the Linux kernel can support is 64kb. If the resource fork is larger than this, hfsfuse will return a range error, which in turn getting printed as "argument list too long".
The best way to deal with these at present is to read them with hfsdump as outlined above. I'm not sure what the best solution is for making these readable on the FUSE side (adding /rsrc to the path does not work with FUSE's path resolution), but I'll try to come up with some alternate syntax for that.
from hfsfuse.
Thanks for investigating this. Is there a simple command with hfsdump which will write out only the raw data into a file or stdout?
from hfsfuse.
You can do this with the second command above. hfsdump <device> read <path>
will write the data at path
to stdout. Appending /rsrc to the path it will write the resource fork instead.
You can find all files with an oversized resource fork on the mounted volume using attr
:
find Users/ -type f -exec attr -l {} \; |\
awk '$2 = "com.apple.ResourceFork" && $5 > 65536' |\
cut -d' ' -f9- > bigforks.txt
Then the list can be fed to hfsdump in a loop. For example if you wanted to place the fork data under a mirror of the hierarchy of the original volume at "rsrc/":
while read -r path; do
mkdir -p "rsrc/$(dirname "$path")" && hfsdump /dev/sdXX read "/$path/rsrc" > "rsrc/$path"
done < bigforks.txt
Probably hfsdump should support some kind of bulk mode like debugfs
does to make operations like this more efficient.
from hfsfuse.
That will work fine I guess with my small application, recovering the font files.
Thanks for all your help.
from hfsfuse.
No problem. I'd like to leave this ticket open until I have a solution for this inside the FUSE driver.
FYI, I noticed that the hfsfuse.record.date_*
xattrs were being printed incorrectly on Linux due to some time formatting differences vs the BSDs and just pushed a fix, you may want to update.
from hfsfuse.
I've added two new options to facilitate accessing fork data within the FUSE driver -- one which allows setting a special file extension like .rsrc
and one which mounts the entire volume as a resource fork view. I also expanded the documentation on fork and xattr handling: https://github.com/0x09/hfsfuse#extended-attributes-and-resource-forks
This should take care of any cases where extended attributes are too small to represent the fork data and make the forks easier to work with anyway.
Thanks for reporting this!
from hfsfuse.
This is awesome! Thanks for the changes!
from hfsfuse.
Related Issues (20)
- src/hfsfuse.c:31:10: fatal error: 'fuse/fuse.h' file not found HOT 10
- rc/hfsfuse.c:34:10: fatal error: 'version.h' file not found HOT 8
- make config fails with errors under macOS Big Sur HOT 3
- "could not read catalogue header node" when opening a Time Machine Volume HOT 3
- ld: library not found for -lutf8proc HOT 3
- Releases? HOT 9
- Doesn't find system libutf8proc on OpenBSD 6.8 HOT 2
- Failure in ARM platform - solved. HOT 5
- /hfsfuse-master/lib/libhfsuser/features.h:5:10: fatal error: 'utf8proc.h' file not found HOT 9
- kext load failed HOT 4
- make install fails HOT 2
- Error mounting on GNU/Linux: all records greater than key / could not find root parent HOT 7
- plan to add read write support ? HOT 3
- Support for compressed files? HOT 9
- Garbled, varying text after symlink destinations HOT 3
- Extended attributes of symlinks HOT 11
- Operation not permitted (EPERM) on some files HOT 5
- FreeBSD port HOT 5
- Slow rsync speed on USB3 device mounted via USB3 port HOT 3
- 32-bit build fails to open large dmgs HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hfsfuse.