Заметки консультанта

Шамрай Александр Владимирович

Почему элементы IBM Rational ClearCase помещаются в директорий lost+found и как их удалить оттуда?

Posted by Шамрай Александр на Ноябрь 12, 2010

<< Перейти в раздел «ClearCase FAQ»

Оригинал: About the lost+found directory

Почему элементы помещаются в директорий lost+found

Объект будет размещен в каталог VOB-а lost+found, когда родительский директорий был удален (в этом случае уже нет контекста, в котором отображается объект) или изменен так, что его содержание не имеет ссылки на предыдущую версию каталога. Это может произойти в следующих случаях:

  • Родительский каталог объекта был удален с помощью команды rmelem и более нигде нет прямых ссылок на объект в версионном хранилище.

Пример:

%>cleartool rmelem dir1
CAUTION! This will destroy the element, all its branches and versions,
including all data, meta-data and history, and will remove the element
from all directory versions that now contain it.  Once you destroy the
element, there will be no way to restore it to its current state.
If you want to preserve the element, but remove references to it from
future directory versions, use the «rmname» command.

Element «dir1» has 1 branches, 2 versions, and is entered
in 1 directory versions.
Destroy element?  [no] y
cleartool: Warning: Object «foo.c» no longer referenced.
cleartool: Warning: Moving object to vob lost+found directory as «foo.c.986de380d90b479db49316560deba2f2».
Removed element «dir1».

  • Родительский каталог был изъят на редактирование, были добавлены файлы и/или директории, а затем редактирование директория было отменено (выполнения операция unchecked out).

Пример:

%>cleartool co -nc dir1
Checked out «dir1» from version «/main/7».

%>cleartool mkelem -ci -nc foo.c
Created element «foo.c» (type «text_file»).
Checked in «foo.c» version «/main/1».

%>cleartool unco dir1
cleartool: Warning: Object «foo.c» no longer referenced.
cleartool: Warning: Moving object to vob lost+found directory as
«foo.c.c7592f61ab0b11db83b5000180f96245».
Checkout cancelled for «dir1».

  • Родительский каталог был изъят на редактирование, были добавлены файлы и/или директории, а затем файл или директорий был удален (rmname) перед тем как новая версия родительского директория была зарегистрирована.

Пример:

%>cleartool co -nc dir1
Checked out «dir1» from version «/main/7».

%>cleartool mkelem -ci -nc foo.c
Created element «foo.c» (type «text_file»).
Checked in «foo.c» version «/main/1».

%>cleartool rmname foo.c
cleartool: Warning: Object «foo.c» no longer referenced.
cleartool: Warning: Moving object to vob lost+found directory as
«foo.c.c7592f61ab0b11db83b5000180f96245».
Removed «foo.c».

Когда объект перемещается в корень каталога lost+found его OID (идентификатор объекта) добавляется к его оригинальному имени файла. Например:

Оригинальное наименование: foo.c
Наименование в lost+found: foo.c.282d5d339cba4043905da6ca201e1f3d

Если каталог перемещается в lost+found, все подкаталоги и элементы, которые он содержит, перемещаются вместе с ним (структура каталогов сохраняется). Поскольку содержание каталога не помещается в корень lost+found, файлы и директории внутри перемещенного каталога не переименовываются по правилам, описанным выше.

Удаление объектов из lost+found

Прежде чем принимать какие-либо шаги по очистке lost+found VOB-а, пожалуйста, сделайте резервную копию VOB-а.

Есть два возможных способа для удаления объекта из корня lost+found:

    1. Объект может быть перемещен на новое место в VOB-е использованием команды cleartool mv.
    2. Объект может быть полностью удален из VOB.
      • Чтобы переместить объект в новое место, необходимо изъять на редактирование каталог, в который будет помещен объект, и использовать команду cleartool mv <object>.

      См. IBM Rational ClearCase Command Reference команда mv (cleartool man mv) для дополнительной информации.

      Пример:

      % pwd
      /vobs/myvob/lost+found

      % cleartool ls
      test.c.f9e4e356252a11d0a41508000993b102@@/main/1    Rule: /main/LATEST

      % cleartool checkout -nc /vobs/myvob/src

      % cleartool mv test.c.f9e4e356252a11d0a41508000993b102 /vobs/myvob/src/test.c
      Moved «test.c.f9e4e356252a11d0a41508000993b102» to «/vobs/myvob /src/test.c».

      Примечание: Для перемещения необходимо использовать команду cleartool mv, как описано выше, поскольку операция копировать/вставить из Windows Explorer или ClearCase Explorer будет просто создавать приватный файл представления и не будет перемещать элемент.

      • Чтобы удалить объект из VOB-а, используйте команду cleartool rmelem <object>.

      ВНИМАНИЕ: прочитайте нижеприведенное перед выполнением операции

      Осторожно используйте rmelem при удалении элементов или символических ссылок из каталога lost+found. Хотя lost+found, как правило, содержит нежелательные элементы и символические ссылки, в некоторых случаях он может содержать элементы, которые содержаться в другом месте VOB-а (то есть, с родителем), с которыми связаны символические или прямые ссылки. Поэтому, не запускайте rmelem рекурсивно в lost+found без предварительной проверки его содержимого.

      Если необходимо сохранить элемент, который находится в lost+found, перенесите его в другой каталог с помощью команды mv, как описано в предыдущем разделе.

      См. IBM Rational ClearCase Command Reference команда rmelem (cleartool man rmelem) для дополнительной информации.

      Пример:

      Example:

      % pwd
      /vobs/myvob/lost+found

      % cleartool ls
      test.c.f9e4e356252a11d0a41508000993b102@@/main/1    Rule: /main/LATEST

      % cleartool rmelem test.c.f9e4e356252a11d0a41508000993b102


      CAUTION! This will destroy the element, all its branches and versions, including all data, meta-data and history, and will remove the element from all directory versions that now contain it.  Once you destroy the element, there will be no way to restore it to its current state. If you want to preserve the element, but remove references to it from future directory versions, use the «rmname» command.

      Element «test.c.f9e4e356252a11d0a41508000993b102» has 1 branches, 2 versions, and is entered in 1 directory versions.
      Destroy element?  [no] yes
      Removed element «test.c.f9e4e356252a11d0a41508000993b102».

      Примечание: Если каталог удаляется из lost+found с помощью rmelem, его содержимое будет перемещено в lost+found в том же порядке, который описан в первом разделе выше.

      Если существуют элементы изъятые на редактирование, то изъятие на редактирование должно быть отменено до того, как элемент будет удален из lost+found, см. technote 1259118.

      Использование шаблонов для удаления объектов из lost+found

      Командная строка cleartool в сочетании с шаблонами может быть использована для удаления сразу нескольких элементов из каталога lost+found VOB-а.

      ВАЖНО: Перед выполнением нижеприведенных шагов, Вы должны проверить актуальность файлов в lost+found. Если есть шанс, что эти файлы не должны быть удалены, не используйте эти инструкции. См. раздел Руководства администратора ClearCase The lost+found Directory для дополнительной информации.

      Из представления ClearCase, перейдите в каталог lost+found, запустите командную строку cleartool и вызовите команду rmelem:

      Z:\VOB1\lost+found>cleartool
      cleartool> rmelem *.*

      CAUTION! This will destroy the element, all its branches and versions, including all data, meta-data and history, and will remove the element from all directory versions that now contain it.  Once you destroy the element, there will be no way to restore it to its current state. If you want to preserve the element, but remove references to it from future directory versions, use the «rmname» command.

      Element «nameapp.c.e83edfb9dfa042db90b83d4417fdec5c» has 1 branches, 2 versions, and is entered in 1 directory versions.
      Destroy element?  [no] yes
      Removed element «nameapp.c.e83edfb9dfa042db90b83d4417fdec5c».

      Примечание: Используйте -force для подавления подтверждения запроса «Destroy element?»:

      cleartool> rmelem -force *.*

      См. Руководство по командам ClearCase по теме rmelem (cleartool man rmelem) для получения информации о поведении rmelem при удалении символической ссылки.

      Удаление нескольких уровней каталогов

      Если существуют каталоги в lost+found, которые должны быть удалены, вам нужно запустить команду rmelem несколько раз.

      Почему?

      • После первой итерации, все элементы, которые были в удаляемом каталоге из lost+found, перемещаются в корень lost+found.
      • Последующие итерации rmelem будут удалять элементы, которые были перемещены в корень lost+found.

      Определение UCM компонента, к которому принадлежит элемент lost+found

      Следующая процедура может быть использована для определения, куда перемещать элементы в случаях, когда есть один или несколько элементов lost+found VOB-а, который содержит много компонентов UCM.

      Примечание: Шаги этой процедуры направлены на поиск корневого каталога UCM компонента и не определяют точный подкаталог компонента, в который элемент должен быть перемещен. Кроме того, эта процедура не будет работать в VOB, который не является Компонентным UCM VOB-ом.

      1. Откройте окно командной строки (Пуск> Выполнить> набрать: cmd.exe)
      2. Перейдите в представление и каталог lost+found конкретного VOB-а
      3. Выполните «cleartool dump -l <element-name>@@», например:
        >cleartool dump -l test.txt.3a99f3b26e9d43bb87e48b981708138c@@test.txt.3a99f3b26e9d43bb87e48b981708138c@@ (3a99f3b2.6e9d43bb.87e4.8b:98:17:08:13:8c)
        M:\mra_EclipseTest\ManyComps\lost+found\test.txt.3a99f3b26e9d43bb87e48b981708138c@@
        oid=3a99f3b2.6e9d43bb.87e4.8b:98:17:08:13:8c dbid=289 (0x121)
        mtype=file element type=9
        stored fstat:
        ino: 0; type: 2; mode: 0444
        usid: NT:S-1-5-21-141845252-1443263951-584457872-1453
        gsid: NT:S-1-5-21-141845252-1443263951-584457872-1023
        nlink: 1; size: 0
        atime: Wed Dec 31 19:00:00 1969
        mtime: Wed Sep 24 07:44:00 2008
        ctime: Wed Sep 24 07:44:00 2008
        returned fstat:
        ino: 289; type: 2; mode: 0444
        usid: NT:S-1-5-21-141845252-1443263951-584457872-1453
        gsid: NT:S-1-5-21-141845252-1443263951-584457872-1023
        nlink: 1; size: 0
        atime: Wed Sep 24 07:44:00 2008
        mtime: Wed Sep 24 07:44:00 2008
        ctime: Wed Sep 24 07:44:00 2008
        master replica dbid=3
        source pool=33 cleartext pool=35
        crde=46
        branches:
        290 \main
        292 \main\mra_EclipseTest

      4. Найдите строку, которая имеет «crde =» и запомните число, которое будет после знака равенства. В приведенном выше примере номер «46» то, что нам нужно. Это идентификатор компонента корневого каталога элемента, который мы будем использовать, чтобы найти компонент, в который элемент должен быть перемещен.
      5. Перейдите в корень VOB-а
        >dir
        Volume in drive M is CCase
        Volume Serial Number is 0234-5789 

        Directory of M:\mra_EclipseTest\ManyComps 

         

        08/28/2007  07:13 AM    <DIR>          .
        09/18/2008  12:03 PM    <DIR>          ..
        08/28/2007  07:13 AM    <DIR>          Comp1
        09/24/2008  07:44 AM    <DIR>          Comp2
        09/24/2008  07:44 AM    <DIR>          lost+found
        0 File(s)              0 bytes
        5 Dir(s)  52,428,800,000 bytes free

      6. Выполните «cleartool dump <sub-directory-name>@@» в одном из поддиректориев компонента. Например:

        >cleartool dump -l Comp1@@ 

        Comp1@@ (ebb32a4a.46224a03.b388.40:71:64:7a:1a:7d)
        M:\mra_EclipseTest\ManyComps\Comp1@@
        oid=ebb32a4a.46224a03.b388.40:71:64:7a:1a:7d dbid=42 (0x2a)
        mtype=directory element type=6
        stored fstat:
        ino: 0; type: 2; mode: 0777
        usid: NT:S-1-5-21-141845252-1443263951-584457872-1453
        gsid: NT:S-1-5-21-141845252-1443263951-584457872-1023
        nlink: 2; size: 0
        atime: Wed Dec 31 19:00:00 1969
        mtime: Tue Aug 28 07:13:57 2007
        ctime: Tue Aug 28 07:13:57 2007
        returned fstat:
        ino: 42; type: 2; mode: 0777
        usid: NT:S-1-5-21-141845252-1443263951-584457872-1453
        gsid: NT:S-1-5-21-141845252-1443263951-584457872-1023
        nlink: 2; size: 0
        atime: Tue Aug 28 07:13:57 2007
        mtime: Tue Aug 28 07:13:57 2007
        ctime: Tue Aug 28 07:13:57 2007
        master replica dbid=3
        source pool=33 cleartext pool=35 derived pool=34
        crde=42
        <cropped>

      7. Найдите строку, которая содержит «crde =» и сравните с числом из шага 4. В данном примере это число «42» и это не тот каталог, который нам нужен.
      8. Повторите шаги 6 и 7, пока не найдете нужный каталог. В этом примере каталог компонента Comp2 с » crde = 46″.
      9. Переместите конкретный элемент в любой каталог в рамках структуры каталогов компонента. Вы должны сделать это из командной строки, изъять на редактирование каталог назначения и установить активность. Например:
        >cleartool lsactivity -cact -cview
        2008-09-24T07:43:58-04:00 20080924test mabushee «20080924test»>cleartool checkout -nco Comp2
        Checked out «Comp2» from version «\main\mra_EclipseTest\2».
        Attached activity:
        activity:20080924test@\Projects «20080924test»

        >cleartool move «lost+found\test.txt.3a99f3b26e9d43bb87e48b981708138c» Comp2\test.txt
        Moved «lost+found\test.txt.3a99f3b26e9d43bb87e48b981708138c» to «Comp2\test.txt».

      10. После выполнения шага 9 зарегистрируйте изменения Вашего целевого каталога.

      Если у вас есть дополнительные элементы в каталоге lost+found, необходимо повторить процедуру для каждого из них.

      Дополнительно

      Реклама

      Добавить комментарий

      Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

      Логотип WordPress.com

      Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

      Фотография Twitter

      Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

      Фотография Facebook

      Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

      Google+ photo

      Для комментария используется ваша учётная запись Google+. Выход / Изменить )

      Connecting to %s

       
      %d такие блоггеры, как: