cp -p сохранит время для некоторых файлов, но не для всех?

9

У меня есть исходный каталог на машине с кучей файлов с одинаковыми правами, которые я хочу скопировать в другой каталог, смонтированный через 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

Целевой каталог монтируется через SMB, и я пытаюсь скопировать набор файлов одновременно.

[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

Обратите внимание, что время и разрешения для первых двух файлов такие же, как в исходном каталоге, но отличаются для остальных файлов.

Таким образом, кажется, что я могу скопировать некоторые файлы и сохранить их разрешения и время, но не с другими файлами , даже если все исходные файлы происходят из одного места и имеют одинаковые разрешения и (более или менее) время, и я ' я копирую их все в один и тот же каталог одновременно - и, следовательно, с тем же umask и т. д.

Итак, почему я могу сохранить время для некоторых, но не для всех файлов?

Я был бы рад предоставить более подробную информацию (umask, версию для Linux, smb.conf и т. Д.), За исключением того, что я не могу понять, как какие-либо из этих деталей могут объяснить то, что я вижу - поскольку они должны быть постоянными здесь.

tmark
источник
Вы упомянули SMB. Это общий ресурс CIFS с сервера Windows? Из NetApp? Это тоже может иметь значение. NetApp, например, имеет различные режимы совместного использования / смешанные. На самом деле, есть много возможностей в зависимости от того, с чем вы делитесь; и, как вы указали, версия ядра и параметры монтирования, которые вы используете на клиенте.
Аарон
Можете ли вы поделиться подробностями монтирования для этого ресурса самбы, как он монтировался? просто хотел проверить, использовал ли ты "noatime" во время монтажа
PKumar
предпочтительнее использовать rsync иссад cp.
PKumar

Ответы:

8

В Unix временные метки не могут быть сохранены в файлах, которыми не владеет пользователь.

Поэтому следующая команда не выполняется , если file1и file2принадлежат разным пользователям в случае , если file2уже существует:

cp -p file1 file2

Кажется, это ваш случай, потому что исходные файлы принадлежат, adminrigа целевые файлы принадлежат tmark.

Не уверен, что существует обходной путь, поскольку форсирование с помощью -fне решает проблему.

Если можете, попробуйте сменить владельца целевых файлов ...

krisFR
источник
2
спасибо krisFR. Однако исходные файлы, которые были скопированы с правильными разрешениями и временными метками, имеют то же владение, что и те, которые генерируют ошибки. На самом деле, все исходные файлы имеют одинаковые видимые разрешения, и все они принадлежат adminrig, поэтому не похоже, что владение может объяснить то, что я вижу полностью - иначе ни один из файлов не должен копироваться с разрешениями и временными метками.
tmark
Попробуйте использовать cp -aвместо этого .
Пабло А