cp: цикл обнаружен: - PullRequest
       9

cp: цикл обнаружен:

2 голосов
/ 28 января 2010

Любая идея о цикле cp: обнаружена: ошибка на Solaries. Я получаю это, когда копирую данные из одного каталога в другой.

Ответы [ 2 ]

5 голосов
/ 28 января 2010

Цикл при выполнении рекурсивной копии дважды посещает один и тот же «файл». Это может быть вызвано круговыми настройками ссылок. Например, если вы сделаете каталог level1:

mkdir level1

затем символически связать файл там с этим каталогом:

cd level1
ln -s . level2

Вы в основном получаете круговую ссылку. Это означает, что вы можете сделать:

cd level2/level2/level2/...

насколько вам угодно, и никогда не покиньте каталог level1. Это создает проблемы для рекурсивной копии, так как это будет бесконечный цикл.

Вы можете использовать cp -rH или cp -rP (на Solaris 10 и выше, я думаю), чтобы не следовать символическим ссылкам.

В частности, вас могут заинтересовать три флага:

  • -H: Если операнд source_file является символической ссылкой, cp копирует файл, на который ссылается символическая ссылка для операнда source_file. Все остальные символические ссылки, встречающиеся при обходе файловой иерархии, сохраняются. Это означает, что если файл / каталог, указанный вами в качестве источника, является ссылкой, он скопирует цель этой ссылки. Все символические ссылки под этим источником не будут отслеживаться.

  • -L: Копирует файлы, на которые ссылаются символические ссылки. Символьные ссылки, встречающиеся при обходе файловой иерархии, не сохраняются. Это будет следовать всем символическим ссылкам под источником.

  • -P: копирует символические ссылки. Символьные ссылки, встречающиеся при обходе файловой иерархии, сохраняются. Я думаю, что это идентично -H, но также сохраняет символическую ссылку для конкретного источника.

0 голосов
/ 28 января 2010

Попробуйте использовать команду cp, как показано ниже:

cp -rH
...