By default, when doing incremental restores the restore program

overwrites an existing file rather than removing it and creating a
new file.  If the old and new version of the file both have extended
attributes and the extended attributes of the two versions of the
file are different, the result is that the new file ends up with
the union of the extended attributes of the old and new files.

To get the behavior of replacing the extended attributes rather
than augmenting them requires explicitly removing the old attributes
and then adding the new ones.

To get this behavior, the old file must be unlinked (which clears
out the old extended attributes).  Then the new file of the same
name must be created and the new extended attributes added to it.

This behavior can be obtained by specifying the -u flag when running
restore.  Rather than defaulting the -u option to on and possibly
breaking existing scripts using restore, this change simply notes
in the restore.8 manual page that the -u flag is recommended when
using restore on filesystems that contain extended attributes.

PR:                     216127
Reported by:            dewayne at heuristicsystems.com.au
Differential Revision:  https://reviews.freebsd.org/D9208
This commit is contained in:
Kirk McKusick 2017-01-22 17:49:14 +00:00
parent 6386d003c9
commit 8b273fc833

View File

@ -349,6 +349,8 @@ To prevent this, the
.Fl u
(unlink) flag causes restore to remove old entries before attempting
to create new ones.
This flag is recommended when using extended attributes
to avoid improperly accumulating attributes on pre-existing files.
.It Fl v
Normally
.Nm