>Please try using 'strace' to trace the system calls and show the >results of them. > > strace -o cp-a.strace.out cp -a SRC DST > >I believe the output of that should be sufficiently small and should >contain the information needed to determine where the problem exists.
Here is the output of the strace log for my etch system: execve("/bin/cp", ["cp", "-a", "zdiff", "/mnt/ad1/"], [/* 14 vars */]) = 0 uname({sys="Linux", node="debian-etch-virtual", ...}) = 0 brk(0) = 0x8057000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f87000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=10331, ...}) = 0 mmap2(NULL, 10331, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f84000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libacl.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\23"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=22156, ...}) = 0 mmap2(NULL, 20980, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f7e000 mmap2(0xb7f83000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb7f83000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libselinux.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P8\0\000"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=79368, ...}) = 0 mmap2(NULL, 84884, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f69000 mmap2(0xb7f7c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb7f7c000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f68000 mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e37000 mmap2(0xb7f5e000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7f5e000 mmap2(0xb7f65000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f65000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libattr.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\f\0\000"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=12840, ...}) = 0 mmap2(NULL, 15796, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e33000 mmap2(0xb7e36000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb7e36000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\f\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=9592, ...}) = 0 mmap2(NULL, 12404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e2f000 mmap2(0xb7e31000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7e31000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libsepol.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0200\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=219824, ...}) = 0 mmap2(NULL, 265152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dee000 mmap2(0xb7e24000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x35) = 0xb7e24000 mmap2(0xb7e25000, 39872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7e25000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ded000 mprotect(0xb7f5e000, 20480, PROT_READ) = 0 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7ded9a0, limit: 1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 munmap(0xb7f84000, 10331) = 0 access("/etc/selinux/", F_OK) = -1 ENOENT (No such file or directory) brk(0) = 0x8057000 brk(0x8078000) = 0x8078000 open("/proc/mounts", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f86000 read(3, "rootfs / rootfs rw 0 0\nnone /sys"..., 1024) = 576 read(3, "", 1024) = 0 close(3) = 0 munmap(0xb7f86000, 4096) = 0 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 240 close(3) = 0 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=1209088, ...}) = 0 mmap2(NULL, 1209088, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7cc5000 close(3) = 0 geteuid32() = 0 stat64("/mnt/ad1/", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0 lstat64("zdiff", {st_mode=S_IFREG|0755, st_size=1974, ...}) = 0 lstat64("/mnt/ad1/zdiff", 0xbfceff34) = -1 ENOENT (No such file or directory) open("zdiff", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0755, st_size=1974, ...}) = 0 open("/mnt/ad1/zdiff", O_WRONLY|O_CREAT|O_LARGEFILE, 0100755) = 4 fstat64(4, {st_mode=S_IFREG|0755, st_size=0, ...}) = 0 fstat64(3, {st_mode=S_IFREG|0755, st_size=1974, ...}) = 0 read(3, "#!/bin/sh\n# sh is buggy on RS/60"..., 16384) = 1974 write(4, "#!/bin/sh\n# sh is buggy on RS/60"..., 1974) = 1974 read(3, "", 16384) = 0 utimes("/proc/self/fd/4", {1177876734, 0}) = 0 fchown32(4, 0, 0) = 0 getxattr("zdiff", "system.posix_acl_access", 0xbfceab20, 132) = -1 EOPNOTSUPP (Operation not supported) setxattr("/mnt/ad1/zdiff", "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff \x00\x05\x00\xff\xff\xff\xff", 28, 0) = -1 EOPNOTSUPP (Operation not supported) chmod("/mnt/ad1/zdiff", 0100755) = 0 close(4) = 0 close(3) = 0 getxattr("zdiff", "system.posix_acl_access", 0xbfcefc90, 132) = -1 EOPNOTSUPP (Operation not supported) setxattr("/mnt/ad1/zdiff", "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff \x00\x05\x00\xff\xff\xff\xff", 28, 0) = -1 EOPNOTSUPP (Operation not supported) chmod("/mnt/ad1/zdiff", 0100755) = 0 close(1) = 0 exit_group(0) = ? And here us the output from my woody system: execve("/bin/cp", ["cp", "-a", "touch", "/mnt/ad1/"], [/* 16 vars */]) = 0 uname({sys="Linux", node="virtual-debian-vaio", ...}) = 0 brk(0) = 0x8056000 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f75000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=42861, ...}) = 0 old_mmap(NULL, 42861, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f6a000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libacl.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\24"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=22336, ...}) = 0 old_mmap(NULL, 25412, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb7f63000 old_mmap(0xb7f69000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0xb7f69000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`Z\1\000"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1254660, ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f62000 old_mmap(NULL, 1264972, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb7e2d000 old_mmap(0xb7f57000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x129000) = 0xb7f57000 old_mmap(0xb7f60000, 7500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f60000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libattr.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\r\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=10824, ...}) = 0 old_mmap(NULL, 13892, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb7e29000 old_mmap(0xb7e2c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0xb7e2c000 close(3) = 0 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f62b80, limit: 1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 munmap(0xb7f6a000, 42861) = 0 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=290448, ...}) = 0 mmap2(NULL, 290448, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7de2000 close(3) = 0 brk(0) = 0x8056000 brk(0x8077000) = 0x8077000 brk(0) = 0x8077000 geteuid32() = 0 lstat64("/mnt/ad1/", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0 stat64("/mnt/ad1/", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0 lstat64("touch", {st_mode=S_IFREG|0755, st_size=30360, ...}) = 0 lstat64("/mnt/ad1/touch", {st_mode=S_IFREG|0755, st_size=30360, ...}) = 0 open("touch", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0755, st_size=30360, ...}) = 0 open("/mnt/ad1/touch", O_WRONLY|O_TRUNC|O_LARGEFILE) = 4 fstat64(4, {st_mode=S_IFREG|0755, st_size=0, ...}) = 0 fstat64(3, {st_mode=S_IFREG|0755, st_size=30360, ...}) = 0 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\2\0\3\0\1\0\0\0 \216\4"..., 16384) = 16384 write(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\2\0\3\0\1\0\0\0 \216\4"..., 16384) = 16384 read(3, "U\f9U\324s\6\213M\10\306\1\'\307E\324\1\0\0\0\307E\320"..., 16384) = 13976 write(4, "U\f9U\324s\6\213M\10\306\1\'\307E\324\1\0\0\0\307E\320"..., 13976) = 13976 read(3, "", 16384) = 0 close(4) = 0 close(3) = 0 utimes("/mnt/ad1/touch", {1176147960, 0}) = 0 getxattr("touch", "system.posix_acl_access", 0xbfbb32e0, 132) = -1 EOPNOTSUPP (Operation not supported) setxattr("/mnt/ad1/touch", "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff \x00\x05\x00\xff\xff\xff\xff", 28, ) = -1 EOPNOTSUPP (Operation not supported) chmod("/mnt/ad1/touch", 0100755) = 0 exit_group(0) = ? > >> If the files are copied using ssh with switches to preserve dates, >> the files do preserve the dates. This leads me to believe the issue >> lies within the cp application or the fileutils/coreutils package. > >Interesting. Given your present information I would agree. But >because the libc and the kernel are both involved and both are also >different between the systems and because I have seen related issues >there I am suspicious of them. There are multiple different ways to >obtain and set file timestamp information. It is possible that scp is >using a different system call than cp and therefore different behavior >results. > >Bob > ___________________________________________________________ Tiscali Broadband only £9.99 a month for your first 3 months! http://www.tiscali.co.uk/products/broadband/