cp -p preservará tiempos para algunos archivos pero no para todos?

9

Tengo un directorio de origen en una máquina con un montón de archivos, todos con los mismos permisos, que quiero copiar en otro directorio, que se monta a través de 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

El directorio de destino se monta a través de SMB y estoy tratando de copiar el conjunto de archivos a la vez.

[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

Tenga en cuenta que los tiempos y permisos en los dos primeros archivos son los mismos que en el directorio de origen, pero difieren para los archivos restantes.

Entonces, parece que puedo copiar algunos archivos y preservar sus permisos y tiempos, pero no con otros archivos , a pesar de que todos los archivos de origen provienen del mismo lugar y tienen los mismos permisos y (más o menos) tiempos, y yo ' m copiándolos a todos en el mismo directorio al mismo tiempo, y por lo tanto con la misma umask, etc.

Entonces, ¿por qué puedo preservar los tiempos para algunos, pero no para todos los archivos?

Estaré encantado de proporcionar más detalles (umask, versión de Linux, smb.conf, etc., etc.), excepto que no puedo entender cómo alguno de esos detalles podría explicar lo que estoy viendo, ya que deberían ser constantes aquí.

tmark
fuente
Mencionaste SMB. ¿Es este un recurso compartido CIFS de un servidor de Windows? ¿De una NetApp? Esto también puede importar. NetApp, por ejemplo, tiene diferentes modos compartido / mixto. De hecho, hay muchas posibilidades dependiendo de lo que está compartiendo; y como eludiste, la versión del kernel y las opciones de montaje que estás usando en el cliente.
Aaron
¿Puedes compartir el detalle de montaje de esta samba? ¿Cómo lo montaste? solo quería comprobar si
usaste
preferible utilizar rsync insead de cp.
PKumar

Respuestas:

8

En Unix, las marcas de tiempo no se pueden conservar en los archivos que el usuario no posee.

Es por eso que el siguiente comando falla si file1y file2son propiedad de diferentes usuarios en caso de que file2ya exista:

cp -p file1 file2

Parece que es su caso porque los archivos de origen son propiedad de adminriglos archivos de destino tmark.

No estoy seguro si hay una solución alternativa ya que forzar con -fno resuelve el problema.

Si puede, intente cambiar la propiedad de los archivos de destino ...

krisFR
fuente
2
gracias krisFR. Sin embargo, los archivos de origen que se copiaron con los permisos y las marcas de tiempo correctos tienen la misma propiedad que los que generan los errores. De hecho, todos los archivos de origen tienen los mismos permisos aparentes, y todos son propiedad de adminrig, por lo que no parece que la propiedad pueda explicar lo que estoy viendo por completo; de lo contrario, ninguno de los archivos debe copiarse con permisos y marcas de tiempo.
tmark
Considere usar en su cp -alugar .
Pablo A