对于仅的常规大小效率备份,所有视图中的修改后的签出元素对我们来说都是件好事,因为大量定义的动态/快照视图不能包含在每日备份政策。
以下ksh代码接近动态视图所需的内容,但它通常假设视图的config-spec文件中的第一行始终首先选择签出元素(* element * CHECKEDOUT * )。它一般不会很好。
对于视图中的每个版本化文件,如果它与为该视图选择的VOB中的最后一个相应版本化元素不同,我们希望能够将其添加到备份列表 中。 (只有在视图中已经开发出来)。
[解决方案也必须对快照视图有效]
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。 哈维尔C.
答案 0 :(得分:1)
坦率地说,对于动态视图,更简单的备份策略是只压缩和备份与所述动态视图关联的视图存储(在cleartool endivew -server aDynViewTag
之后):
如果您需要dynamic and snaphot views的通用解决方案,那么您可以参考:
'How to find all checkedout files with ClearCase cleartool?'(您正在使用的'cleartool lsco
'),但您无需计算最新版本即可制作基于系统的差异。
你可以简单地说:
cleartool diff -pred ${CHECKEDOUT_FILE_IN_THE_VIEW}
如果签出版本与其先前版本之间存在任何修改,它将返回一些内容(适用于快照或动态视图中的版本)。
请参阅 cleartool diff
。