slitaz-modular rev 101

local-mirror: Add support for backup-mirror. This will allow you to backup mirror packages, src, and repos to the mirror union branch directly if its mounted in /mnt/live/memory/mirror folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Thu May 12 22:07:51 2011 +0000 (2011-05-12)
parents a885658a2485
children 5cff4ed8b747
files initramfs/usr/bin/local-mirror
line diff
     1.1 --- a/initramfs/usr/bin/local-mirror	Thu May 12 18:10:08 2011 +0000
     1.2 +++ b/initramfs/usr/bin/local-mirror	Thu May 12 22:07:51 2011 +0000
     1.3 @@ -13,20 +13,19 @@
     1.4  usage() {
     1.5  	echo "$0 $VERSION"
     1.6  	echo "$0 [on|off|update-repos|tank-only|mirror-only]"
     1.7 +	echo "$0 [backup-mirror|up-src-links]"
     1.8  	exit 1 
     1.9  }
    1.10  
    1.11 +#[ -d /mnt/live/memory/mirror/packages ] && PKGDIR="/mnt/live/memory/mirror/packages"
    1.12 +#[ -d /mnt/live/memory/mirror/src ] && SRCDIR="/mnt/live/memory/mirror/src"
    1.13 +sync_mirror=$(find /mnt/live -name "mirror" -type d -maxdepth 3 | head -1)
    1.14 +
    1.15  COOKORDER="$(find /mnt/live/mnt/* -name "cookorder.list" -maxdepth 1)"
    1.16  CUR_PWD="$PWD"
    1.17  
    1.18  [ -d $SLITAZ_DIR ] || mkdir -p $SLITAZ_DIR
    1.19 -if [ "$(cat /proc/cmdline | grep 'home=')" ]; then
    1.20 -	[ -d $SLITAZ_DIR/repos ] || cp -a $REPOS_DIR $SLITAZ_DIR/repos
    1.21 -	rm -rf $REPOS_DIR
    1.22 -else
    1.23 -	[ -d $SLITAZ_DIR/repos ] || ln -sf $REPOS_DIR $SLITAZ_DIR/repos
    1.24 -fi
    1.25 -
    1.26 +[ -d $SLITAZ_DIR/repos ] || ln -sf $REPOS_DIR $SLITAZ_DIR/repos
    1.27  [ -d $SLITAZ_DIR/repos ] && REPOS_DIR="$SLITAZ_DIR/repos"
    1.28  
    1.29  #repos folders for website
    1.30 @@ -36,18 +35,7 @@
    1.31  BOOT_WWW_DIR="$REPOS_DIR/slitaz-forge/boot"
    1.32  TANK_WWW_DIR="$REPOS_DIR/slitaz-forge/tank/web"
    1.33  
    1.34 -if [ -d $REPOS_DIR/my-wok ]; then
    1.35 -	REPO_WOK=$REPOS_DIR/my-wok
    1.36 -	if [ -x /usr/bin/hg ]; then
    1.37 -		cd $REPO_WOK
    1.38 -		if [ ! "$(hg branch)" = "cooking" ]; then
    1.39 -			hg update cooking
    1.40 -		fi
    1.41 -		cd $CUR_PWD
    1.42 -	fi
    1.43 -elif [ -d $REPOS_DIR/wok ]; then
    1.44 -	REPO_WOK=$REPOS_DIR/wok
    1.45 -fi
    1.46 +
    1.47  
    1.48  if [ "$COMMAND" = "tank-only" ]; then
    1.49  	WWW="${WWW/mirror/}"
    1.50 @@ -62,17 +50,29 @@
    1.51  fi
    1.52  
    1.53  [ -d $REPOS_DIR ] || continue
    1.54 -[ -d $MAIN_WWW_DIR ] || mkdir -p $MAIN_WWW_DIR
    1.55 -[ -L /var/www/vhosts ] || ln -sf $MAIN_WWW_DIR /var/www/vhosts
    1.56  
    1.57  INCOMING_REPOSITORY="$LOCAL_REPOSITORY/packages-incoming"
    1.58  CRON_FILE="/var/spool/cron/crontabs/root"
    1.59  
    1.60 -[ -d $(dirname $CRON_FILE) ] || mkdir -p $(dirname $CRON_FILE)
    1.61 -[ -f $CRON_FILE ] || touch $CRON_FILE
    1.62 -
    1.63  www() {
    1.64  	b=$1
    1.65 +	[ -d $(dirname $CRON_FILE) ] || mkdir -p $(dirname $CRON_FILE)
    1.66 +	[ -f $CRON_FILE ] || touch $CRON_FILE
    1.67 +	[ -d $MAIN_WWW_DIR ] || mkdir -p $MAIN_WWW_DIR
    1.68 +	[ -L /var/www/vhosts ] || ln -sf $MAIN_WWW_DIR /var/www/vhosts
    1.69 +	
    1.70 +	if [ -d $REPOS_DIR/my-wok ]; then
    1.71 +		REPO_WOK=$REPOS_DIR/my-wok
    1.72 +		if [ -x /usr/bin/hg ]; then
    1.73 +			cd $REPO_WOK
    1.74 +			if [ ! "$(hg branch)" = "cooking" ]; then
    1.75 +				hg update cooking
    1.76 +			fi
    1.77 +			cd $CUR_PWD
    1.78 +		fi
    1.79 +	elif [ -d $REPOS_DIR/wok ]; then
    1.80 +		REPO_WOK=$REPOS_DIR/wok
    1.81 +	fi
    1.82  	case "$b" in
    1.83  		website)
    1.84  			[ -d $REPOS_DIR/$b ] && ln -s $REPOS_DIR/$b $MAIN_WWW_DIR
    1.85 @@ -344,6 +344,7 @@
    1.86  		[ -x /etc/init.d/crond ] && /etc/init.d/crond start
    1.87  		;;
    1.88  	update-repos)
    1.89 +		pwd=$(pwd)
    1.90  		for i in $(ls $REPOS_DIR); do
    1.91  			if [ -d $REPOS_DIR/$i/.hg ]; then
    1.92  				cd $REPOS_DIR/$i
    1.93 @@ -351,6 +352,7 @@
    1.94  				hg pull -u
    1.95  			fi
    1.96  		done
    1.97 +		cd $pwd
    1.98  		;;
    1.99  	up-src-links)
   1.100  		if [ -d $SRCDIR ]; then
   1.101 @@ -362,6 +364,40 @@
   1.102  			unset i
   1.103  		fi
   1.104  		;;
   1.105 +	backup-mirror|-bm)
   1.106 +		case "$2" in
   1.107 +			pkgs-dry-push)
   1.108 +				rsync -avrtlz --delete --dry-run $PKGDIR ${sync_mirror} ;;
   1.109 +			src-dry-push)
   1.110 +				rsync -avrtlz --delete --dry-run $SRCDIR ${sync_mirror} ;;
   1.111 +			repos-dry-push)
   1.112 +				rsync -avrtlz --delete --dry-run $REPOS_DIR ${sync_mirror} ;;
   1.113 +			pkgs-push)
   1.114 +				rsync -avrtlz --delete $PKGDIR ${sync_mirror} ;;
   1.115 +			src-push)
   1.116 +				rsync -avrtlz --delete $SRCDIR ${sync_mirror} ;;
   1.117 +			repos-push)
   1.118 +				rsync -avrtlz --delete $REPOS_DIR ${sync_mirror} ;;
   1.119 +			pkgs-dry-pull)
   1.120 +				rsync -avrtlz --delete --dry-run ${sync_mirror}${PKGDIR} $(dirname ${PKGDIR}) ;;
   1.121 +			src-dry-pull)
   1.122 +				rsync -avrtlz --delete --dry-run ${sync_mirror}${SRCDIR} $(dirname ${SRCDIR}) ;;
   1.123 +			repos-dry-pull)
   1.124 +				rsync -avrtlz --delete --dry-run ${sync_mirror}${REPOS_DIR} $(dirname ${REPOS_DIR}) ;;
   1.125 +			pkgs-pull)
   1.126 +				rsync -avrtlz --delete ${sync_mirror}${PKGDIR} $(dirname ${PKGDIR}) ;;
   1.127 +			src-pull)
   1.128 +				rsync -avrtlz --delete ${sync_mirror}${SRCDIR} $(dirname ${SRCDIR}) ;;
   1.129 +			repos-pull)
   1.130 +				rsync -avrtlz --delete ${sync_mirror}${REPOS_DIR} $(dirname ${REPOS_DIR}) ;;
   1.131 +			*)
   1.132 +				echo "$0 backup-mirror pkgs-dry-{push|pull}"
   1.133 +				echo "$0 backup-mirorr pkgs-{push|pull}"
   1.134 +				echo "$0 backup-mirror src-dry-{push|pull}"
   1.135 +				echo "$0 backup-mirror src-{push|pull}"
   1.136 +				echo "$0 backup-mirror repos-dry-{push|pull}"
   1.137 +				echo "$0 backup-mirror repos-{push|pull}" ;;
   1.138 +		esac ;;
   1.139  	off)
   1.140  		[ -x /etc/init.d/lighttpd ] && /etc/init.d/lighttpd stop
   1.141  		[ -x /etc/init.d/crond ] && /etc/init.d/crond stop