--- a/restore/tape.c
+++ b/restore/tape.c
@@ -1039,7 +1039,18 @@ extractfile(struct entry *ep, int doremo
 		utimes(name, timep);
 		if (flags)
 #ifdef	__linux__
-			(void) lsetflags(name, flags);
+		{
+			 struct timespec times[2];
+			 (void) lsetflags(name, flags);
+
+			 times[0].tv_sec  =  timep[0].tv_sec;
+			 times[0].tv_nsec =  timep[0].tv_usec/1000;
+			 times[1].tv_sec  =  timep[1].tv_sec;
+			 times[1].tv_nsec =  timep[1].tv_usec/1000;
+
+			 if (utimensat(AT_FDCWD, name, times, AT_SYMLINK_NOFOLLOW) < 0)
+					warn("%s: file timestamp update failed", name);
+		}
 #else
 #ifdef sunos
 			{
