I have a script where I create a disk image of an SD card using hdiutil and then mount that disk image. I then write extended attributes to the files inside using xattr and important them into a program. Is there any way I can reverse those xattr writes so they don't save when I unmount the image? Ideally I'd keep an untouched copy of the SD card for archive. Is there a way to mount a disk image, make changes to the files inside, then unmount it and those changes aren't "Saved"? I'm trying to avoid copying the SD card twice for time reasons.
Can I modify a disk image while it is open, but not "save changes"?
393 Views Asked by arlovande At
1
There are 1 best solutions below
Related Questions in MACOS
- How do I customize NSOutlineView to have border color?
- Force sublime text to use PATH from the shell value
- Do executable files always open a terminal window on MacOS?
- setting OpenGL version in objective-C
- C std library don't appear to be linked in object file
- Cross compile simple standard C program on Linux for Mac
- How to generate request format for WCF web service method for Mac and iPhone
- Bundle Multiple Xamarin apps in one pkg installer
- How to Handle Command Line Prompt from a Cocoa App
- AVFoundation - Process each image separately
- CMYK NSImage get pixel data
- how i get the mac of ibeacon or BLE
- Set JAVA_HOME on Mac
- Finding active IPv6 interfaces under Mac OS (using Python)
- OSX: Why is my launchd agent running my script twice?
Related Questions in XATTR
- xattr/extended attributes not settable for file in /tmp while in $home on same mount works fine
- xattr -w Writing metadata to a file - syntax issue
- where are extended attributes stored?
- Understanding output of xattr -p com.apple.quarantine
- How to query target of all Finder aliases?
- Opening a text file with no xattr gives "Operation not permitted" under macOS Catalina and Python 2
- Linux setxattr: possible to use Unicode string?
- Could not build wheels for xattr, which is required to install pyproject.toml-based projects
- How is attribute com.apple.quarantine represented in AppleDouble files?
- How to write Finder comment from Swift
- Can I modify a disk image while it is open, but not "save changes"?
- Using multiple keywords in xattr via _kMDItemUserTags or kMDItemOMUserTags
- Linux capabilities over FUSE file system
- Python Module xattr has no attribute list
- Sharing a dmg file without recipient having to do xattr -d
Related Questions in HDIUTIL
- Error creating disk image using hdutil
- hdiutil failing on macOS Catalina with a write error when creating a file on a network drive. The error does not happen on macOS mojave
- hdiutil: create failed - Operation timed out
- Can I modify a disk image while it is open, but not "save changes"?
- Issue with curl downloading corrupt DMG images
- hdiutil not responsive when installing DMG files using homebrew-cask
- Programmatically hiding many files when creating hybrid iso with hdiutil
- Calculating hdiutil's compression ratio
- hdiutil: create failed - error -5342
- Mounting a loop device on macOS in C
- how to properly use hdutils to create a DMG on a (Travis) OSX VM
- Using Process to Create a DMG with hdiutil
- Hdiutil files case sensitivity changing in ISO
- -pubkey option in hdiutil
- AppleScript throwing error on hdiutil command
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can mount the image with a "shadow" file; changes to the volume will be stored in the shadow file, leaving the original image file unchanged. To reset back to the original state, just eject the image and delete the shadow file.
Actually, you can be even trickier if you want, by "deleteing" the shadow file while the image is still mounted. The file's directory entry will be deleted immediately, but it remains on disk (& can be read & written) until the last program closes it, which doesn't happen until the image gets ejected. Like this:
This way, the changes immediately vanish when the image is ejected; remounting it gets you a clean image. One warning, though: you must fully eject the disk image, not just unmount the volume. Unmounting the volume leaves the image attached to a /dev entry, shadow file changes still in force, etc.
See the
hdiutilman page for details.