cp -p preservará os tempos de alguns arquivos, mas não todos?

8

Eu tenho um diretório fonte em uma máquina com vários arquivos, todos com as mesmas permissões, que eu quero copiar para outro diretório, que é montado 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

O diretório de destino é montado via SMB e estou tentando copiar o conjunto de arquivos de uma só 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

Observe que os horários e as permissões nos dois primeiros arquivos são os mesmos do diretório de origem, mas diferem para os arquivos restantes.

Assim, parece que posso copiar alguns arquivos e preservar suas permissões e horários, mas não com outros arquivos , embora todos os arquivos de origem sejam do mesmo local e tenham as mesmas permissões e (mais ou menos) vezes, e estou copiando todos eles para o mesmo diretório ao mesmo tempo - e, portanto, com o mesmo umask, etc.

Então, por que posso preservar os tempos de alguns, mas não de todos os arquivos?

Eu ficaria feliz em fornecer mais detalhes (umask, versão do Linux, smb.conf, etc etc.), mas não consigo entender como qualquer um desses detalhes poderia explicar o que estou vendo - como eles deveriam ser constante aqui.

    
por tmark 02.04.2015 / 03:06

1 resposta

7

No Unix, os timestamps não podem ser preservados nos arquivos que o usuário não possui.

É por isso que o comando a seguir falha se file1 e file2 pertencerem a usuários diferentes no caso de file2 já existir:

cp -p file1 file2

Parece que é o seu caso, porque os arquivos de origem são de propriedade de adminrig e os arquivos de destino são de propriedade de tmark .

Não tenho certeza se há uma solução alternativa, pois forçar com -f não resolve o problema.

Se puder, tente alterar a propriedade dos arquivos de destino ...

    
por 02.04.2015 / 13:57