(Решено) cp не удалось сохранить владельца

Chips
-rwxr-xr-x 1 chip users 1126 янв 23 17:41 compute_octave_metric.sh
lrwxrwxrwx 1 chip users 14 янв 23 17:41 dists-rgb.sh -> iqa_wrapper.sh
lrwxrwxrwx 1 chip users 14 янв 23 17:41 fsim-rgb.sh -> iqa_wrapper.sh
lrwxrwxrwx 1 chip users 14 янв 23 17:41 fsim-y.sh -> iqa_wrapper.sh
lrwxrwxrwx 1 chip users 14 янв 23 17:41 gmsd-rgb.sh -> iqa_wrapper.sh
Это ссылки
Vadim
поможет,системы копирую и восстанавливаю,все права сохраняются.

может под пользователем запускаешь,поэтому и не может сохранить права?
Это не тот случай.
vs220
Это ссылки
Да теперь я вижу что это происходит только с ссылками. Возможно coreutils сломал во время экспериментов
Chips
Возможно coreutils сломал во время экспериментов
На символьные ссылки вы права не поменяете просто.
Как я понимаю cp должен игнорировать линки ну то есть просто их копировать. Не суть сам виноват у меня тут из системы винегрет получился.
Урааа раскурил это действительно косяк coreutils над которым я безжалостно поиздевался Test for proper exit code of chmod on a processed symlink. Я для своих экспериментов собрал его без данного патча который это исправляет аналогичные патчи есть в Gentoo, OpenMandriva, Fedora, Void...
Chips
Как я понимаю cp должен игнорировать линки ну то есть просто их копировать.
Копировать то он копируют, но симлинки получаются сломанные.
Пример - берем любой симлинк, например, /usr/lib64/ld-linux-x86-64.so.2
смотрим
file /usr/lib64/ld-linux-x86-64.so.2
/usr/lib64/ld-linux-x86-64.so.2: symbolic link to ld-2.33.so
Копируем (хоть с -a, хоть без -a) в другое место: cp -a /usr/lib64/ld-linux-x86-64.so.2 ~/TTT/TEMP/1
проверяем
ls -l ~/TTT/TEMP/1/ld-linux-x86-64.so.2
lrwxrwxrwx 1 vasek users 10 мая 12 2021 /home/vasek/TTT/TEMP/1/ld-linux-x86-64.so.2 -> ld-2.33.so
все скопировалось, НО смотрим подробнее
file ~/TTT/TEMP/1/ld-linux-x86-64.so.2
/home/vasek/TTT/TEMP/1/ld-linux-x86-64.so.2: broken symbolic link to ld-2.33.so
и видим ... broken symbolic link to ld-2.33.so ..... а что это означает???
hexdump -C -n 16 /usr/lib64/ld-linux-x86-64.so.2
00000000  7f 45 4c 46 02 01 01 03  00 00 00 00 00 00 00 00  |.ELF............|
hexdump -C -n 16 ~/TTT/TEMP/1/ld-linux-x86-64.so.2
hexdump: /home/vasek/TTT/TEMP/1/ld-linux-x86-64.so.2: Нет такого файла или каталога
hexdump: all input file arguments failed
Ошибки не исчезают с опытом - они просто умнеют
vasek
но симлинки получаются сломанные.
Ничего он не ломает.
Просто в симлинке указан относительный путь.
cp копирует как есть. Не редактировать же ему линк.
Lupus pilum mutat, non mentem.
jim945
Ничего он не ломает.
Просто в симлинке указан относительный путь.
Если симлинк не работает, для системы он "сломан"
Или используй опцию cp --preserve=links (cp -L) - скопируется сам файл, либо используй ln + readlink - для создания симлинка с абсолютным путем
Ошибки не исчезают с опытом - они просто умнеют
vasek
Если симлинк не работает, для системы он "сломан"
А не надо было копировать симлинк без файла, на который он ссылается.
Сам сломал же.

Ты приводишь в пример какую-то надуманую ситуацию, которая фиг знает для чего может понадобиться (только если в "исследовательских целях" ), потом жалуешься на то что cp что-то там ломает.
Lupus pilum mutat, non mentem.
 
Зарегистрироваться или войдите чтобы оставить сообщение.