cp -p conservera les temps pour certains fichiers mais pas tous?

9

J'ai un répertoire source sur une machine avec un tas de fichiers, tous avec les mêmes autorisations, que je veux copier dans un autre répertoire, qui est monté via SMB.

[tmark@dexter JR09141045 roche_454_transfer]$ ls -l /source_dir
total 71348
-rwxrwxrwx 1 adminrig lifelabs 19768377 Mar 25 23:29 1.TCA.454Reads.fna
-rwxrwxrwx 1 adminrig lifelabs 53093396 Mar 25 23:29 1.TCA.454Reads.qual
-rwxrwxrwx 1 adminrig lifelabs     1035 Mar 25 23:29 454AllControlMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs     2657 Mar 25 23:29 454AllControlMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs     4607 Mar 25 23:29 454BaseCallerMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs    14518 Mar 25 23:29 454BaseCallerMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs      351 Mar 25 23:23 454DataProcessingDir.xml
-rwxrwxrwx 1 adminrig lifelabs      702 Mar 25 23:29 454QualityFilterMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs     1609 Mar 25 23:29 454QualityFilterMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs    13496 Mar 25 23:29 454RuntimeMetricsAll.csv
-rwxrwxrwx 1 adminrig lifelabs    26967 Mar 25 23:29 454RuntimeMetricsAll.txt
-rwxrwxrwx 1 adminrig lifelabs     1675 Mar 25 14:48 dataRunParams.xml
-rwxrwxrwx 1 adminrig lifelabs     7134 Mar 25 23:29 gsRunProcessor.log

Le répertoire cible est monté via SMB et j'essaie de copier l'ensemble de fichiers en une seule fois.

[tmark@dexter JR09141045 target_dir]$ cd /target_dir
[tmark@dexter JR09141045 target_dir]$ cp -p /source_dir/* ./
cp: preserving times for `./454AllControlMetrics.csv': Operation not permitted
cp: preserving times for `./454AllControlMetrics.txt': Operation not permitted
cp: preserving times for `./454BaseCallerMetrics.csv': Operation not permitted
cp: preserving times for `./454BaseCallerMetrics.txt': Operation not permitted
cp: preserving times for `./454DataProcessingDir.xml': Operation not permitted
cp: preserving times for `./454QualityFilterMetrics.csv': Operation not permitted
cp: preserving times for `./454QualityFilterMetrics.txt': Operation not permitted
cp: preserving times for `./454RuntimeMetricsAll.csv': Operation not permitted
cp: preserving times for `./454RuntimeMetricsAll.txt': Operation not permitted
cp: preserving times for `./dataRunParams.xml': Operation not permitted
cp: preserving times for `./gsRunProcessor.log': Operation not permitted

[tmark@dexter JR09141045 target_dir]$ ls -l
total 71264

-rwxrwxrwx 1 tmark 1008 19768377 Mar 25 23:29 1.TCA.454Reads.fna
-rwxrwxrwx 1 tmark 1008 53093396 Mar 25 23:29 1.TCA.454Reads.qual
-rwxr-xr-x 1 tmark 1008     1035 Apr  1  2015 454AllControlMetrics.csv
-rwxr-xr-x 1 tmark 1008     2657 Apr  1  2015 454AllControlMetrics.txt
-rwxr-xr-x 1 tmark 1008     4607 Apr  1  2015 454BaseCallerMetrics.csv
-rwxr-xr-x 1 tmark 1008    14518 Apr  1  2015 454BaseCallerMetrics.txt
-rwxr-xr-x 1 tmark 1008      351 Apr  1  2015 454DataProcessingDir.xml
-rwxr-xr-x 1 tmark 1008      702 Apr  1  2015 454QualityFilterMetrics.csv
-rwxr-xr-x 1 tmark 1008     1609 Apr  1  2015 454QualityFilterMetrics.txt
-rwxr-xr-x 1 tmark 1008    13496 Apr  1  2015 454RuntimeMetricsAll.csv
-rwxr-xr-x 1 tmark 1008    26967 Apr  1  2015 454RuntimeMetricsAll.txt
-rwxr-xr-x 1 tmark 1008     1675 Apr  1  2015 dataRunParams.xml
-rwxr-xr-x 1 tmark 1008     7134 Apr  1  2015 gsRunProcessor.log

Notez que les heures et les autorisations sur les deux premiers fichiers sont les mêmes que dans le répertoire source, mais diffèrent pour les fichiers restants.

Donc, il semble que je puisse copier certains fichiers et conserver leurs autorisations et leurs heures, mais pas avec d'autres fichiers , même si tous les fichiers source proviennent du même endroit et ont les mêmes autorisations et (plus ou moins) fois, et je ' m les copier tous dans le même répertoire en même temps - et donc avec le même umask, etc.

Alors, pourquoi puis-je conserver les heures pour certains, mais pas pour tous les fichiers?

Je serais heureux de fournir plus de détails (umask, version Linux, smb.conf, etc.), sauf que je ne comprends pas comment ces détails pourraient expliquer ce que je vois - car ils devraient être constants ici.

tmark
la source
Vous avez mentionné SMB. S'agit-il d'un partage CIFS d'un serveur Windows? Depuis un NetApp? Cela peut aussi être important. NetApp, par exemple, a différents modes de partage / mixtes. En fait, il existe de nombreuses possibilités en fonction de ce que vous partagez; et comme vous l'avez évité, la version du noyau et les options de montage que vous utilisez sur le client.
Aaron
pouvez-vous partager les détails de montage de ce partage samba, comment l'avez-vous monté? Je voulais juste vérifier si vous avez utilisé "noatime" lors du montage
PKumar
préférable d'utiliser rsync au lieu de cp.
PKumar

Réponses:

8

Sous Unix, les horodatages ne peuvent pas être conservés sur les fichiers dont l'utilisateur n'est pas propriétaire.

C'est pourquoi la commande suivante échoue si file1et file2appartiennent à différents utilisateurs au cas où il file2existe déjà:

cp -p file1 file2

Il semble que ce soit votre cas, car les fichiers source appartiennent à adminriget les fichiers cible appartiennent à tmark.

Je ne sais pas s'il existe une solution de contournement car le forçage avec -fne résout pas le problème.

Si vous le pouvez, essayez de changer la propriété des fichiers cibles ...

krisFR
la source
2
merci krisFR. Cependant, les fichiers source qui ont été copiés avec les autorisations et horodatages appropriés ont la même propriété que ceux qui génèrent les erreurs. En fait, tous les fichiers source ont les mêmes autorisations apparentes, et ils appartiennent tous à adminrig, il ne semble donc pas que la propriété puisse expliquer complètement ce que je vois - sinon aucun des fichiers ne devrait copier avec des autorisations et des horodatages.
tmark
Pensez à utiliser à la cp -aplace .
Pablo A