在所有视图中只有经过修改的checkedout元素才能进行常规大小的备份对于我们来说是一件好事,因为大量的定义的dynamic/快照视图不能包含在日常备份策略中。
下面的ksh代码接近我们所需要的dynamic视图,但它平凡地假设视图的config-spec文件中的第一行总是首先select签出的元素(* element * CHECKEDOUT *)。 一般来说,这样做效果不好。
对于视图中的每个版本化文件, 只有当它与为该视图select的VOB中最后一个对应的版本化元素不同时,才能够将其添加到备份列表。 (只有在视图中开发的情况下)。
[该解决scheme也必须对快照视图有效]
for CHECKEDOUT_FILE_IN_THE_VIEW in $( /usr/atria/bin/cleartool lsco -cview -avobs -short ) do VERSIONED_FILE_NAME=$( /usr/atria/bin/cleartool describe -short ${CHECKEDOUT_FILE_IN_THE_VIEW} \ | sed -e's/CHECKEDOUT/LATEST/' ) if [ -f ${VERSIONED_FILE_NAME} ]; then if [ -f ${CHECKEDOUT_FILE_IN_THE_VIEW} ]; then diff -b ${CHECKEDOUT_FILE_IN_THE_VIEW} ${VERSIONED_FILE_NAME} > /dev/null if [ $? -ne 0 ]; then ##-- The checked-out file in the view is different from the corresponding ##-- versioned element in the VOB. So it has to be added to the backup list. echo "${VERSIONED_FILE_NAME}" >> ${F_LOG} fi fi fi done
有任何想法吗) ?。 TIA。 哈维尔
坦率地说,对于动态视图,更简单的备份策略是压缩和备份与所述动态视图相关联的视图存储(在' cleartool endivew -server aDynViewTag
'之后):
如果您需要动态和快照视图的通用解决方案,则可以参考:
' 如何用ClearCase cleartool找到所有签出的文件? '(你使用的是' cleartool lsco
'),但是你不需要计算最新的版本来创建一个基于系统的差异。
您可以简单地:
cleartool diff -pred ${CHECKEDOUT_FILE_IN_THE_VIEW}
如果在签出版本和以前版本之间存在任何修改,它将返回一些内容(对于快照或动态视图中的版本)。
看到cleartool diff
。