Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- copy_folders() { #SAVE_LAYER=/pup_ro1 #Line 593 of initrd/init (tharpup)
- echo -e "\n-------------------- copy_folders" #debug
- echo "SAVE_MP=$SAVE_MP"
- DESTDIR="/mnt/tmpfs/pup_ro1"
- [ -d "$DESTDIR" ] || mkdir -p $DESTDIR
- rm -r -f "$SAVE_LAYER"
- SAVE_FN="$DESTDIR"
- ln -s $DESTDIR $SAVE_LAYER
- #BKFOLDERS now set in check for pupmode=77
- BKLASTFOLDER="$(echo "${BKFOLDERS}" | head -n 1)"
- #a boot option allows ignore last n sessions, also need to create a badlist...
- if [ "$PIGNORELAST" ];then
- BKBADLIST="$(echo "${BKFOLDERS}" | head -n ${PIGNORELAST})"
- if [ -f ${SAVE_MP}/${BKLASTFOLDER}/.badfolders ];then
- cp ${SAVE_MP}/${BKLASTFOLDER}/.badfolders ${DESTDIR}/
- if [ $? -ne 0 ];then
- #fallback, in case last folder badly corrupted...
- BKPREVFOLDER="$(echo "${BKFOLDERS}" | head -n 2 | tail -n 1)"
- [ -f ${SAVE_MP}/${BKPREVFOLDER}/.badfolders ] && cp ${SAVE_MP}/${BKPREVFOLDER}/.badfolders ${DESTDIR}/
- fi
- fi
- echo "$BKBADLIST" >> ${DESTDIR}/.badfolders
- #note, rc.shutdown and savesession-dvd 'touch' this file so it will get saved.
- sync
- else
- [ -f ${SAVE_MP}/${BKLASTFOLDER}/.badfolders ] && cp ${SAVE_MP}/${BKLASTFOLDER}/.badfolders ${DESTDIR}/
- fi
- [ -f ${DESTDIR}/.badfolders ] && BKBADLIST="$(cat ${DESTDIR}/.badfolders | tr "\n" " ")"
- echo "BKBADLIST=${BKBADLIST}" #debug
- BKFOLDERS="$(echo -n "${BKFOLDERS}" | tr "\n" " ")"
- for ONEFOLDER in ${BKFOLDERS}
- do
- if [ "$(echo -n "$BKBADLIST" | grep "${ONEFOLDER}")" != "" -o -L "${SAVE_MP}/${ONEFOLDER}" ];then
- echo "$(printf "${L_FOLDER_MARKED_BAD}" "${ONEFOLDER}")" >/dev/console
- continue #ignore bad folder.
- fi
- echo "$ONEFOLDER" #debug
- echo -n "$(printf "${L_LOADING_FROM_CD}" "${ONEFOLDER}")" >/dev/console
- #need to be careful not to overfill the ramdisk...
- FREERAMDISK=$(df 2>/dev/null | grep /mnt/tmpfs | head -n 1 | tr -s " " | cut -f 4 -d " ")
- SIZEFOLDER=$(du -k -s ${SAVE_MP}/${ONEFOLDER} | cut -f 1)
- SIZEARCHIVE=0
- if [ -d ${SAVE_MP}/${ONEFOLDER}/archive ];then
- SIZEARCHIVE=$(du -k -s ${SAVE_MP}/${ONEFOLDER}/archive | cut -f 1)
- fi
- SIZESOURCE=$(expr $SIZEFOLDER - $SIZEARCHIVE)
- if [ $FREERAMDISK -gt $SIZESOURCE ];then
- #well, -u will only copy if files newer, so less stuff may get copied than calc'd above.
- #need to copy everything except archive folder...
- [ -d ${SAVE_MP}/${ONEFOLDER}/bin ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/bin ${DESTDIR}/
- [ -d ${SAVE_MP}/${ONEFOLDER}/sbin ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/sbin ${DESTDIR}/
- [ -d ${SAVE_MP}/${ONEFOLDER}/etc ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/etc ${DESTDIR}/
- [ -d ${SAVE_MP}/${ONEFOLDER}/lib ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/lib ${DESTDIR}/
- [ -d ${SAVE_MP}/${ONEFOLDER}/opt ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/opt ${DESTDIR}/
- if [ -d ${SAVE_MP}/${ONEFOLDER}/root/.var_saved ];then #100820 see /etc/rc.d/functions4puppy
- mkdir -p ${DESTDIR}/var
- cp -a -u ${SAVE_MP}/${ONEFOLDER}/root/.var_saved/* ${DESTDIR}/var/
- fi
- [ -d ${SAVE_MP}/${ONEFOLDER}/root ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/root ${DESTDIR}/
- [ -d ${SAVE_MP}/${ONEFOLDER}/root/.var_saved ] && rm -rf ${DESTDIR}/root/.var_saved
- [ -d ${SAVE_MP}/${ONEFOLDER}/usr ] && cp -a -u ${SAVE_MP}/${ONEFOLDER}/usr ${DESTDIR}/
- [ -f ${DESTDIR}/root/.XLOADED ] && rm -fv ${DESTDIR}/root/.XLOADED #toxic
- cp -a -u ${SAVE_MP}/${ONEFOLDER}/*.sfs ${DESTDIR}/ 2>/dev/null
- #delete deleted files (.wh.filename)... 110212 screen out .wh..wh..opq
- WHITEOUTS="$(find ${DESTDIR} -xdev -type f -name .wh.* | grep -v '__dir_opaque' | grep -v '.wh..wh.')" #110212
- echo "$WHITEOUTS" | while read DELWHITE ; do
- DELFILE="$(echo -n "$DELWHITE" | sed -e 's/\.wh\.//g')"
- if [ -e "$DELFILE" ];then
- [ "$PDEBUG" ] && echo "Deleting $DELFILE" #debug
- rm -rf "$DELFILE"
- rm -rf "$DELWHITE"
- fi
- done
- check_status 0 #display 'done' for each folder loaded.
- else
- printf "${L_RAM_DISK_FULL}\n" "${ONEFOLDER}"
- check_status 1
- break
- fi
- done
- sync
- echo -e "--------------------\n" # debug
- }
Advertisement
Add Comment
Please, Sign In to add comment