I'd like to use btrfs for backup as well, because it can tell me whether a file is corrupted and I can use snapshots too. Let's assume btrfs found a corrupted file on my backup drive and I still have the original file without the damage. Is there a way to fix the backup file and fix my old snapshots with it as well?


You would run a scrub to detect/fix any data issues:

btrfs scrub start /mnt/backup

Once this finishes, if there were unrecoverable errors, search dmesg for details on what files have the errors. Then just copy the files from your main location.

cp /path/to/file /mnt/backup/snapshot/path/to/file

Of course you will have to do this for each snapshot that was corrupted. If the snapshot is read-only, you have to make it writeable first, copy the file, and then set it back to read only.

btrfs property set -ts /mnt/backup/snapshot ro false
cp /path/to/file /mnt/backup/snapshot/path/to/file
btrfs property set -ts /mnt/backup/snapshot ro true

Scripting this should be possible, but in theory this sort of corruption should not happen that often. If you are ending up with many errors it's probably a hardware issue that should be addressed, or potentially a software bug.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.