You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Long story short, I have an old secondary backup pool that has detected some corruption (in a single file) and I was hoping to try out the correcting receive feature to see if that will work to fix it.
To be clear, fixing it is non-critical (I already have a new secondary backup completing as I type this) but I'd like to fix it if I can to archive its contents just in case (new secondary backup has enough capacity). If it can't be fixed this way, I believe I should be able to re-copy the file and discard affected snapshots to eliminate the errors, but it would be nice to not lose the snapshots if possible.
However, the dataset with the file on it is huge (and the old pool is on a slow NAS) so I'd like to avoid sending the entire snapshot, so I'm looking into redaction, another feature I'd like to try out, to see if I can produce a redacted stream that will only send the damaged file (plus metadata, directories etc., everything except for the other big files).
So first up, is it possible to do a corrective receive using a redacted send stream? Seems like it should be but I just want to confirm.
If yes, I'd like to also confirm I'm understanding the procedure correctly:
Assume there is already a recent snapshot called @snapshot, which is also present on the old pool.
On the dataset, blank the files that are to be redacted (find /path/to/dataset -type f -iname '*.mp4' '!' -iname 'Corrupted File.mp4' -exec truncate -s 0 {} ";" or similar, dry-run and check a thousand and one times before running for real).
Create a new snapshot: zfs snapshot pool/dataset@redacted_snapshot
Create a redaction bookmark: zfs redact pool/dataset@snapshot #redacted @redacted_snapshot
Send redacted: zfs send --redact #redacted pool/dataset@snapshot (or should this be @redacted_snapshot?)
Corrective receive (piped onto the send): zfs receive -c backup/dataset@snapshot
Would the above work as expected (attempt a corrective receive of the single file, while minimising data sent)?
When performing the redaction, is it possible to truncate the files using a clone of @snapshot so that other backups of pool/dataset can run normally without having to do a rollback (i.e- send from the clone, then discard when done)?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Long story short, I have an old secondary backup pool that has detected some corruption (in a single file) and I was hoping to try out the correcting receive feature to see if that will work to fix it.
To be clear, fixing it is non-critical (I already have a new secondary backup completing as I type this) but I'd like to fix it if I can to archive its contents just in case (new secondary backup has enough capacity). If it can't be fixed this way, I believe I should be able to re-copy the file and discard affected snapshots to eliminate the errors, but it would be nice to not lose the snapshots if possible.
However, the dataset with the file on it is huge (and the old pool is on a slow NAS) so I'd like to avoid sending the entire snapshot, so I'm looking into redaction, another feature I'd like to try out, to see if I can produce a redacted stream that will only send the damaged file (plus metadata, directories etc., everything except for the other big files).
So first up, is it possible to do a corrective receive using a redacted send stream? Seems like it should be but I just want to confirm.
If yes, I'd like to also confirm I'm understanding the procedure correctly:
@snapshot, which is also present on the old pool.find /path/to/dataset -type f -iname '*.mp4' '!' -iname 'Corrupted File.mp4' -exec truncate -s 0 {} ";"or similar, dry-run and check a thousand and one times before running for real).zfs snapshot pool/dataset@redacted_snapshotzfs redact pool/dataset@snapshot #redacted @redacted_snapshotzfs send --redact #redacted pool/dataset@snapshot(or should this be@redacted_snapshot?)zfs receive -c backup/dataset@snapshotWould the above work as expected (attempt a corrective receive of the single file, while minimising data sent)?
When performing the redaction, is it possible to truncate the files using a clone of
@snapshotso that other backups ofpool/datasetcan run normally without having to do a rollback (i.e- send from the clone, then discard when done)?Beta Was this translation helpful? Give feedback.
All reactions