cp -p zachowa czasy dla niektórych plików, ale nie dla wszystkich?

9

Mam katalog źródłowy na komputerze z wieloma plikami, wszystkie z tymi samymi uprawnieniami, które chcę skopiować do innego katalogu, który jest montowany przez 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

Katalog docelowy jest montowany za pośrednictwem SMB i próbuję skopiować zestaw plików jednocześnie.

[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

Pamiętaj, że czasy i uprawnienia dla dwóch pierwszych plików są takie same jak w katalogu źródłowym, ale różnią się dla pozostałych plików.

Wygląda więc na to, że mogę skopiować niektóre pliki i zachować ich uprawnienia i czasy, ale nie z innymi plikami , nawet jeśli wszystkie pliki źródłowe pochodzą z tego samego miejsca i mają te same uprawnienia i (mniej więcej) razy, a ja m kopiując je wszystkie do tego samego katalogu w tym samym czasie - a zatem z tym samym umask itp.

Dlaczego więc mogę zachować czas dla niektórych, ale nie dla wszystkich plików?

Z przyjemnością przedstawię więcej szczegółów (umask, wersja Linux, smb.conf itp.), Z wyjątkiem tego, że nie rozumiem, w jaki sposób którykolwiek z tych szczegółów mógłby wyjaśnić to, co widzę - ponieważ powinny być tutaj stałe.

tmark
źródło
Wspomniałeś o SMB. Czy to jest udział CIFS z serwera Windows? Z NetApp? To też może mieć znaczenie. Na przykład NetApp ma różne tryby współdzielenia / mieszania. W rzeczywistości istnieje wiele możliwości w zależności od tego, z czego się dzielisz; a także, jak ci się nie podobało, wersja jądra i opcje montowania używane na kliencie.
Aaron,
czy możesz udostępnić szczegóły montowania dla tego udostępniania samby, w jaki sposób to zamontował? chciałem tylko sprawdzić, czy
użyłeś
preferowane jest użycie rsync insead cp.
PKumar,

Odpowiedzi:

8

W systemie Unix znaczniki czasu nie mogą być zachowane w plikach, których użytkownik nie jest właścicielem.

Dlatego następujące polecenie kończy się niepowodzeniem, jeśli file1i file2są własnością różnych użytkowników, jeśli file2już istnieje:

cp -p file1 file2

Wydaje się, że to Twoja sprawa, ponieważ pliki źródłowe są własnością, adminriga pliki docelowe są własnością tmark.

Nie jestem pewien, czy istnieje obejście, ponieważ wymuszenie z -fnie rozwiązuje problemu.

Jeśli możesz, spróbuj zmienić własność plików docelowych ...

krisFR
źródło
2
dzięki krisFR. Jednak pliki źródłowe, które zostały skopiowane z odpowiednimi uprawnieniami i znacznikami czasu, mają takie same prawa własności jak pliki generujące błędy. W rzeczywistości wszystkie pliki źródłowe mają te same pozorne uprawnienia i wszystkie są własnością adminrig, więc nie wydaje się, aby własność mogła wyjaśnić to, co widzę całkowicie - w przeciwnym razie żaden z plików nie powinien być kopiowany z uprawnieniami i znacznikami czasu.
tmark
Rozważ użycie cp -azamiast tego .
Pablo A