cp -p conserverà i tempi per alcuni file ma non tutti?


9

Ho una directory di origine su una macchina con un mucchio di file, tutti con le stesse autorizzazioni, che voglio copiare in un'altra directory, che è montata tramite 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

La directory di destinazione viene montata tramite SMB e sto provando a copiare l'insieme di file contemporaneamente.

[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

Si noti che i tempi e le autorizzazioni per i primi due file sono gli stessi della directory di origine, ma differiscono per i file rimanenti.

Quindi, sembra che sia possibile copiare alcuni file e preservarne i permessi e i tempi, ma non con altri file , anche se tutti i file di origine provengono dallo stesso posto e hanno gli stessi permessi e (più o meno) tempi, e io ' li sto copiando tutti nella stessa directory contemporaneamente - e quindi con la stessa umask, ecc.

Quindi, perché posso conservare i tempi per alcuni, ma non tutti i file?

Sarei felice di fornire maggiori dettagli (umask, versione di Linux, smb.conf, ecc. Ecc.) Tranne per il fatto che non riesco a capire come uno di questi dettagli possa spiegare quello che sto vedendo, dato che dovrebbero essere costanti qui.


Hai menzionato SMB. È una condivisione CIFS da un server Windows? Da una NetApp? Anche questo può importare. NetApp ad esempio ha diverse modalità di condivisione / miste. In effetti, ci sono molte possibilità a seconda di ciò che stai condividendo; e come hai eluso, la versione del kernel e le opzioni di mount che stai usando sul client.
Aaron,

puoi condividere i dettagli di montaggio per questa condivisione samba come hai fatto a montarlo? volevo solo controllare hai usato "noatime" durante il montaggio
PKumar il

preferibile usare rsync insead di cp.
PKumar,

Risposte:


8

Su Unix i timestamp non possono essere conservati sui file che l'utente non possiede.

Questo è il motivo per cui il seguente comando ha esito negativo se file1e file2sono di proprietà di utenti diversi nel caso in cui file2già esiste:

cp -p file1 file2

Sembra che sia il tuo caso perché i file di origine sono di proprietà adminrige i file di destinazione sono di proprietà di tmark.

Non sono sicuro se esiste una soluzione alternativa poiché forzare -fnon risolve il problema.

Se puoi, prova a cambiare la proprietà dei file di destinazione ...


2
grazie KrisFR. Tuttavia, i file di origine che sono stati copiati con le autorizzazioni e i timestamp corretti, hanno la stessa proprietà di quelli che generano gli errori. In effetti, tutti i file di origine hanno le stesse autorizzazioni apparenti e sono tutti di proprietà di adminrig, quindi non sembra che la proprietà possa spiegare ciò che sto vedendo completamente, altrimenti nessuno dei file dovrebbe essere copiato con autorizzazioni e timestamp.
tmark

Prendi invece in considerazione l' utilizzocp -a .
Pablo A
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.