[Bug 228069] tar(1) fails to append newer files only (-u, --update), but always appends all files (like -r).
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Tue May 8 14:04:19 UTC 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228069
Bug ID: 228069
Summary: tar(1) fails to append newer files only (-u,
--update), but always appends all files (like -r).
Product: Base System
Version: 11.1-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: bin
Assignee: bugs at FreeBSD.org
Reporter: bugzilla.freebsd at omnilan.de
Created attachment 193180
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=193180&action=edit
Simple shell test demo which shows tar(1) failing to append only newer files
I guess this simple script is the shortest description (identically attached as
file, respects TEMP environment variable):
#!/bin/sh
#
# Simple test demo which shows tar(1) failing to append only newer
# files to an existing archive.
#
testdir=tobetestarchived
testpath=${TEMP:-/tmp}
testtarfile=test.tar
[ -e "${testpath}"/"${testdir}" ] && rm -R "${testpath}"/"${testdir}"
mkdir "${testpath}"/"${testdir}" ||
{ echo "Can't write into ${testpath} (\$testpath), exiting."; exit 1; }
cp /COPYRIGHT "${testpath}"/"${testdir}" || echo "No COPYRIGHT in root found"
>\
"${testpath}"/"${testdir}"/COPYRIGHT
date > "${testpath}"/"${testdir}"/date.txt
echo
echo "Prepared two files for testing tar(1)'s --update feature"
echo "(in ${testpath}/${testdir})."
echo "One is named COPYRIGHT and"
echo -n " "
stat -f "modification timestamp of COPYRIGHT is %Fm" \
"${testpath}"/"${testdir}"/COPYRIGHT
#sha1 "${testpath}"/"${testdir}"/COPYRIGHT
tar cPf "${testpath}"/"${testtarfile}" "${testpath}"/"${testdir}" || exit 1
echo
echo "Successfully created a test archive, showing the following content:"
tar tf "${testpath}"/"${testtarfile}"
echo -n " "
stat -f "Size of the archive: %z Bytes" "${testpath}"/"${testtarfile}"
echo
echo "Now we --update the archive, so only files which have a"
echo "modification time newer than the files in the archive"
echo "should be appended to the archive (none in our case)."
# ?halluzination?
#echo
#echo "Bu surprisingly, COPYRIGHT reports beeing modified,"
#echo "so the --update feature seems to be broken, but in fact,"
#echo "something else is broken:"
#stat -f "modification timestamp of COPYRIGHT is %Fm" \
# "${testpath}"/"${testdir}"/COPYRIGHT
#sha1 "${testpath}"/"${testdir}"/COPYRIGHT
tar uPf "${testpath}"/"${testtarfile}" "${testpath}"/"${testdir}" || exit 1
echo "Done."
echo "But all files were appended:"
tar tf "${testpath}"/"${testtarfile}"
echo -n " "
stat -f "Size of the archive: %z Bytes" "${testpath}"/"${testtarfile}"
echo
echo "No idea why the files were appended, since"
echo -n " "
stat -f "modification timestamp of COPYRIGHT is %Fm" \
"${testpath}"/"${testdir}"/COPYRIGHT
echo " (identical)"
echo
# I was sure I saw the first tar creation run modifing st_mtime,
# which would explain the observed misbehaviour, but I cannot reproduce.
Either
# I had a typo in this very basic script or I'm losing my mind...
#
# If I knew how to, I'd attach some dtrace/gdb or the like to tar in order to
# watch which functions/syscalls are happening... But I must hope somebody
# else takes over.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list