Date: Tue, 08 May 2018 14:04:16 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 228069] tar(1) fails to append newer files only (-u, --update), but always appends all files (like -r). Message-ID: <bug-228069-227@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D228069 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@FreeBSD.org Reporter: bugzilla.freebsd@omnilan.de Created attachment 193180 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D193180&action= =3Dedit Simple shell test demo which shows tar(1) failing to append only newer files I guess this simple script is the shortest description (identically attache= d 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=3Dtobetestarchived testpath=3D${TEMP:-/tmp} testtarfile=3Dtest.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 foun= d" >\ "${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.=20 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. --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-228069-227>