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

9

Eu tenho um diretório de origem em uma máquina com vários arquivos, todos com as mesmas permissões, que quero copiar para outro diretório, 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 permissões nos dois primeiros arquivos são iguais aos do diretório de origem, mas diferem nos arquivos restantes.

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

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

Eu ficaria feliz em fornecer mais detalhes (umask, versão Linux, smb.conf, etc etc.), exceto que eu não consigo entender como qualquer um desses detalhes poderia explicar o que estou vendo - pois eles devem ser constantes aqui.

marca
fonte
Você mencionou SMB. Esse compartilhamento CIFS é um servidor Windows? De uma NetApp? Isso também pode importar. A NetApp, por exemplo, possui diferentes modos de compartilhamento / combinação. De fato, existem muitas possibilidades, dependendo do que você está compartilhando; e como você evitou, a versão do kernel e as opções de montagem que você está usando no cliente.
Aaron
você pode compartilhar os detalhes da montagem deste compartilhamento de samba, como o montou? só queria verificação fez u usar "noatime" durante a montagem
PKumar
preferível usar rsync insead do cp.
PKumar #

Respostas:

8

No Unix, os carimbos de data e hora não podem ser preservados nos arquivos que o usuário não possui.

É por isso que o seguinte comando falhará se file1e file2são propriedade de diferentes usuários em caso file2já existe:

cp -p file1 file2

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

Não tenho certeza se existe uma solução alternativa, pois forçar com -fnão resolve o problema.

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

krisFR
fonte
2
obrigado krisFR. No entanto, os arquivos de origem que foram copiados com as permissões e os carimbos de data e hora corretos têm a mesma propriedade dos que geram os erros. Na verdade, todos os arquivos de origem têm as mesmas permissões aparentes e todos pertencem ao adminrig; portanto, não parece que a propriedade possa explicar o que estou vendo completamente; caso contrário, nenhum dos arquivos deve copiar com permissões e carimbos de data e hora.
tmark
Considere usar em seu cp -alugar .
Pablo #