В случае, если вы используете GNU coreutils. Это ошибка, которая исправлена в версии 8.26.
https://lists.gnu.org/archive/html/bug-coreutils/2016-08/msg00016.html
Так что альтернативным инструментом будет обновленный coreutils, или, например, rsync
, который способен сделать это даже с сохранением прав доступа:
$ rsync -a --relative /sys/power/state /tmp/test
$ rsync -a --relative /sys/bus/cpu/drivers_autoprobe /tmp/test/
Хотя я вижу, что rsync имеет другие проблемы для этих конкретных sysfs файлов, см. Опция rsync для отключения проверки?
Другим сложным обходным решением было бы chmod
всех каталогов после каждой команды cp
.
$ find /tmp/test -type d -exec chmod $(umask -S) {} \;
(Команда find/chmod выше также не будет работать при любой комбинации существующих разрешений и umask).
BTW вы можете сообщить об этой ошибке в ваш Linux-дистрибутив, и они могут исправить ваш пакет 8.21 через обновления.