Unix "cp -p". Can I preserve attributes selectively?
Solution 1
From the cp
manual of GNU coreutils
:
-p
same as--preserve=mode,ownership,timestamps
So, you are looking for
cp --preserve=mode,timestamps source target
But if you use some non-GNU operating system, you might not be able to use these long option with cp
. In that case, you can give rsync
a try, where you can specify in details which attributes should be preserved (search the man page for "preserve"):
-H, --hard-links preserve hard links
-p, --perms preserve permissions
-E, --executability preserve executability
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-t, --times preserve modification times
So, to resemble the cp
command above, use something like
rsync -pEt source target
To test the command beforehand, you can initiate a "dry-run" with -n
. Add also the verbose parameter -v
to see what's going on:
rsync -nv -pEt source target
However, I'm not sure, if the access time will be copied, too.
Solution 2
I believe the ditto command preserves dates.
ditto src target
Related videos on Youtube
![Adam](https://i.stack.imgur.com/YQTNR.jpg?s=256&g=1)
Adam
Updated on September 18, 2022Comments
-
Adam almost 2 years
I'd like to copy the modification and access times, but not the user ID. If I use
cp -p source target
It will copy everything.
I'm trying to copy files to a different user but keep the original dates intact.
-
Adam over 10 yearsMakes sense, but I'm (noobishly) not sure how to use the long options. I've been trying to test with something safer than cp ("ls --all") but I get an "illegal option" error.
-
Adam over 10 yearsI'm on a Mac using the Terminal application.
-
mpy over 10 yearsThen, I think, your
cp
doesn't offer long options. I'll add an alternative possibility withrsync
, perhaps that's an option for you. -
David Foerster over 10 yearsOr you could use one of the FOSS package managers for Mac OS and install GNU cp.
-
LOlliffe almost 5 yearsThis is the only solution that worked properly for me to preserve mtimes. When using
cp -p...
, orcp -p -r...
, for some unknown reason, 4 out of 10 files preserved their mtime as expected, but the other 6 showed up with the copy time as the new mtime.