#!/usr/bin/bash #---------------------------------------------------------------------- # #---------------------------------------------------------------------- # XXX source $(dirname "$0")/.pct-helpers #---------------------------------------------------------------------- case $1 in -h|--help) echo "Recursively push a directory to a CT creating the necessary paths" echo echo "Usage:" echo " `basename $0` ID FROM TO" echo exit ;; -*) echo "Unknown option: $1" exit ;; esac if [[ $# < 3 ]] ; then echo ERR need both id and target id 1>&2 exit 1 fi IFS=$'\n' #---------------------------------------------------------------------- id=$1 from=$2 to=$3 #---------------------------------------------------------------------- wd=$(pwd) # get from path relative to working directory... if [[ ${from:0:1} != '/' ]] ; then from="$(normpath "${wd}/${from}")" fi dirs=($(find "$from" -type d)) for dir in "${dirs[@]}" ; do if [[ "$dir" == "${to}" ]] ; then continue fi dir=${dir#${from}} lxc-attach $id -- mkdir -p "${to}/${dir}" done files=($(find "$from" -type f)) for file in "${files[@]}" ; do file=${file#${from}} f=$(normpath "${from}/${file}") t=$(normpath "${to}/${file}") [ $QUIET ] \ || echo "copy: \"${f#${wd}/}\" -> $id:\"$t\"" pct push $id "$f" "$t" done #---------------------------------------------------------------------- # vim:set ts=4 sw=4 nowrap :