عند أخذ نسخة إحتياطية من الحزم بالأمر
لاستخدمها لاحقا يتم نسخ جميع الحزم وينتج عن ذلك تكرار للحزمة الواحدة بإصدارات مختلفة أو إطلاقات مختلفة مثلا ستجد
ولحفظ المساحات ولتسريع عملية النسخ قمت بالتعديل على أمر النسخ الاحتياطى ليتفادى نسخ الحزم المكررة ودمجه فى الاسكريبت
ولتشغيل الاسكريبت قم بنسخه وحفظه فى ملف جديد
ثم أعطه صلاحيات التنفيذ
لتشغيله يتم سحب الملف للطرفية ثم سحب الدليل الهدف ثم إنتر ليتم التنفيذ
بعد الانتهاء ستجد ملف لوج على سطح المكتب بالحزم التى تم استبعادها وستجد الحزم فى دليل فرعى من الدليل الهدف تحت اسم repeated يمكن حذفه والابقاء عليه
كود PHP:
find /var/cache/yum -name '*.rpm' | xargs cp -t Path_to_folder
كود PHP:
kernel-2.6.33.8-149.fc13.i686.rpm
kernel-2.6.34.6-47.fc13.i686.rpm
ولتشغيل الاسكريبت قم بنسخه وحفظه فى ملف جديد
كود PHP:
#!/bin/bash
# Find and remove repeated (RPM) packages, But saving newest!
# Exit code 0 = done successfully
# Exit code 1 = target directory not found
# Exit code 2 = target directory Permission denied
# Sun Aug 29 06:56:54 EET 2010
# Ehab El-Gedawy <[email protected]>
[[ -n $1 && -d $1 ]] || exit 1
TargetDir=$(echo $1 | sed 's/\/$//')
[ -e $TargetDir/repeated/ ] || mkdir $TargetDir/repeated || exit 2
RemRep()
{
echo -e "All repeated packages will be moved into: $TargetDir/repeated/"
echo -e '---------------------------------------------------------'
echo -e "---------------------------------------------------------\
\n\t\t\t$(date)\nYou can delete ($TargetDir/repeated/) \
to save some space\nRepeated packages are:\n" >> ~/Desktop/remove\ repeated\ \(RPM\)\ packages.log
for a in $(rpm --qf '%{Name}\n' -qp "$TargetDir/*.rpm" | sort | uniq -d)
do
Skip=0
for b in $(ls -Xr1 $TargetDir/$a-[0-9]*.rpm)
do
[ $Skip -ne 0 ] && echo -e "Moving file: $(basename $b)." &&
mv $b $TargetDir/repeated/ &&
echo -e "Moving file: $(basename $b), To ./repeated/$(basename $b)" >> \
~/Desktop/remove\ repeated\ \(RPM\)\ packages.log
Skip=1
done
done
echo -e '---------------------------------------------------------'
echo -e "You can delete ($TargetDir/repeated/) to save some space"
}
CPNew()
{
echo -e 'Copying New packages please wait .....'
for a in $(find /var/cache/yum/ -iname '*.rpm')
do
[[ -e "$TargetDir/$(basename $a)" || \
-e "$TargetDir/repeated/$(basename $a)" ]] || \
cp $a "$TargetDir/Packages"
done
echo -e 'Done.\n'
}
#[ "S$2" == "S-b" ] && CPNew
CPNew
RemRep
exit 0
كود PHP:
chmod -x FILENAME
بعد الانتهاء ستجد ملف لوج على سطح المكتب بالحزم التى تم استبعادها وستجد الحزم فى دليل فرعى من الدليل الهدف تحت اسم repeated يمكن حذفه والابقاء عليه
تعليق