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"?
398 Views Asked by arlovande At
1
There are 1 best solutions below
Related Questions in MACOS
- Error installing Nativescript on Mac M2 Sonoma 14.4.1
- macOS - Most secure way of a GUI SUDO_ASKPASS
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- ZSH function parameters conundrum
- how to make read only file/directory in Mac writable
- macOS BigSur - Unable to run bundled php version or brew php 8
- 9 Digit Addresses in Hexadecimal System in MacOS
- MacOS Bash-Script: while read p and echo
- How to make a range for tail rows on a categorized table in Numbers with JXA scripts?
- Cannot build a basic project with curl on Mac (M2) for Raspberry Pi Pico
- How to recover deleted files from create vite react project
- Can't run built SFML project from Xcode template
- React Native - RealmJS - Linker command failed with exit code 1
- How can I manually add a keyboard shortcut to a Shortcut Action Service directly via the system files, without going through the System Prefs GUI?
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
- hdiutil: create failed - Operation timed out
- 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
- How to add software license terms to a Disk Image on macOS 11.0 Big Sur without the hdiutil flatten and unflatten verbs
- Issue with curl downloading corrupt DMG images
- Mounting a loop device on macOS in C
- How create dynamic (growable) DMG file using terminal in MacOS
- The `appdmg` tool fails quite often in Mac OSX 10.15
- Using Process to Create a DMG with hdiutil
- how to properly use hdutils to create a DMG on a (Travis) OSX VM
- Can I modify a disk image while it is open, but not "save changes"?
- hdiutil not responsive when installing DMG files using homebrew-cask
- Hdiutil files case sensitivity changing in ISO
- hdiutil: create failed - error -5342
- AppleScript throwing error on hdiutil command
- Error creating disk image using hdutil
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.