Peter Woelfel
2008-Apr-29 14:39 UTC
[Samba] Strange behaviour regarding timestamps when copying files
Hi all, we observed a strange effect when copying an file within a samba share: Both atime an mtime of the target file are set to the mtime of the original file. The atime of the original file is updated to the current time. 1. Status of the original file: # stat test.txt File: `test.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 811h/2065d Inode: 58721415 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 609/ testuser) Gid: ( 800/testgroup) Access: 2008-04-25 11:10:38.876386411 +0200 Modify: 2008-04-24 13:31:52.554637383 +0200 Change: 2008-04-24 13:49:26.615046291 +0200 2. Copying the file using a Windows XP SP2 box: X:\> copy test.txt test2.txt 3. Status of the target file: # stat test2.txt File: `test2.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 811h/2065d Inode: 58721425 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 609/ testuser) Gid: ( 800/testgroup) Access: 2008-04-24 13:31:52.000000000 +0200 Modify: 2008-04-24 13:31:52.000000000 +0200 Change: 2008-04-25 11:10:38.881383030 +0200 When copying the same file on the server with 'cp', all timestamps of the target file are updated. # cp test.txt test3.txt # stat test.txt File: `test.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 811h/2065d Inode: 58721415 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 609/ testuser) Gid: ( 800/testgroup) Access: 2008-04-29 10:39:42.676283318 +0200 Modify: 2008-04-24 13:31:52.554637383 +0200 Change: 2008-04-24 13:49:26.615046291 +0200 # stat test3.txt File: `test3.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 811h/2065d Inode: 58721426 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2008-04-29 10:39:42.675283834 +0200 Modify: 2008-04-29 10:39:42.675283834 +0200 Change: 2008-04-29 10:39:42.675283834 +0200 We verified this behaviour with several samba versions beginning with 2.2.3 up to 3.0.26. This is the minimalistic smb.conf we used for testing (with samba 3.x): [global] workgroup = TEST passdb backend = ldapsam:ldaps://172.16.112.1 preferred master = No local master = No domain master = No ldap admin dn = cn=admin,o=leistritz ldap suffix = o=leistritz printing = bsd [data] comment = data path = /data read only = No A Windows Server behaves differently: here, only the atime of the target file is updated on copy, along with the creation time which sadly is not available on Unix. One of our applications appears to get confused by this behaviour, so we are looking for a way to mimic the MS Windows handling of timestamps (or at least how Unix does it). Thanks, -- | LEISTRITZ Aktiengesellschaft Tel.: +49 (0) 911 4306 559 | Peter W?lfel, EDV-Abteilung (ITO) Fax: +49 (0) 911 4306 685 | Markgrafenstra?e 29-39 eMail: pwoelfel@leistritz.com | D-90459 N?rnberg Web: http://www.leistritz.com -- LEISTRITZ Aktiengesellschaft Markgrafenstr. 29-39, D-90459 Nuernberg Telefon/Phone: +49 911 4306-0 Fax: +49 911 4306-420 Internet: www.leistritz.com Vorsitzender des Aufsichtsrates/ Chairman of the Supervisory Board: Dipl.-Ing. Helmuth Schaak Vorstand/Board of Directors: Dipl.-Kfm. Dr. Heiko Neumann Dr.-Ing. Michael Radke Dr.-Ing. Ernst Rothstein Sitz der Gesellschaft/Registered Office: Nuernberg Handelsregister/Commercial Register: HRB 7679, Registergericht Nuernberg USt-IdNr./VAT-No.: DE133500743 St.-Nr.: 241/115/90148