Is there a command to only copy files before a certain date, say 20120901? Furthermore, I would like to do it with cp -p capability (e.g. the original timestamp is preserved).
Yes, you should be able to do it with a combination of touch and find.
# Create a file with the desired timestamp touch -d 20120901 /tmp/timefile # Find all files older than that and act on them find $PATH -type -f -and -not -newer /tmp/timefile -print0 | xargs -0 -i % cp -p % /new/location
So what this does is find all files underneath the directory
$PATH that have been modified before September 1st, 2012 at 00:00:00 hours and copy them all to the directory