====== PDA/Kopírování adresářů ====== :!: Originální skript je na těchto stránkách: http://synce.sourceforge.net/synce/contrib/pcp-r :!: Pro systémy založené na Debianu (tedy i Ubuntu) nutno upravit ! (//synce-pcp// místo //pls// apod. !!!) Zde je upravený skript: # recursively copy a directory to WinCE PDA # Now handles spaces/dash in names, and multiple sources. # Henrik Isacsson, Apr 2004 if [ "$2" == "" ]; then echo "$0 source [source ..] dest" echo "example: $0 /my/files \":/storage card/\"" echo "copies the 'files' directory to /storage card/files" echo "'source' must be a directory! Not a wildcard or similar." echo "'dest' must be a dir with a trailing slash, on the form \":/dir/\"." echo "source _OR_ dest MUST have a colon ':'. NOT both and NOT neither." exit fi # more than one source? handle them one at a time. if [ $# -gt 2 ]; then THISPARAM=1 LASTPARAM=$# while [ $THISPARAM -lt $LASTPARAM ]; do $0 "${!THISPARAM}" "${!LASTPARAM}" THISPARAM=$((THISPARAM+1)) done exit 0 fi if [ `echo "$2"|grep -cE "^:"` == 1 ]; then # case 1, copy _to_ PDA: pcp-r "src" ":dest" # First, 'cd' to the base of the directory we're about to copy. cd `dirname "$1"` SRCDIR="`basename "$1"`" DSTDIR="$2" DSTNOCOLON="`echo "$DSTDIR"|sed 's/^://'`" # make the directory structure find "$SRCDIR" -type d|grep -vE '^.$'|sed 's/^.\///' | while read i; do synce-pmkdir "${DSTNOCOLON}/${i}" done # copy the files find "$SRCDIR" -type f|sed 's/^.\///' | while read i; do echo "writing file: $i" synce-pcp "$i" "${DSTDIR}${i}" done elif [ `echo "$1"|grep -cE "^:"` == 1 ]; then # case 2, copy _from_ PDA: pcp-r ":src" "dest" # recursive look,cd-or-copy,look.. problem. # looks at the $1 path - makes dir and recurses if dir, or copies if file # $1 - source, $2 - destination function copy-item { synce-pls "$1"| while read i; do # new method, as easily breakable but not worse than before.. we now # rely on the filename starting at exactly position 61 in the line pls # returns.. i="`echo "$i"|cut -b61-`" if [ `echo "$i"|grep -cE "/$"` = 1 ]; then # directory echo "making dir: $2/$i" mkdir "$i" cd "$i" copy-item "$1/$i" "$2/$i" cd .. else # file if [ `echo "$1"|grep -cE "/$"` = 1 ]; then echo "reading file: [$2]$i" synce-pcp ":$1/$i" "$i" else echo "reading file: $i" synce-pcp ":$1" "$i" fi fi done } SRC="`echo "$1"|sed 's/^://'`" SRCLASTPART="`basename "$SRC"`" DSTDIR="$2" # check src: if dir, then make dir and append /. if [ `echo "$SRC"|grep -cE "/$"` = 1 ]; then # ends with slash? dir. FILETYPE=Directory else # if not? We figure it out ourselves. FILETYPE=`pls "$SRC"|cut -f1 -d" "` fi if [ "$FILETYPE" = "Directory" ]; then mkdir "$DSTDIR/$SRCLASTPART" cd "$DSTDIR/$SRCLASTPART" # base cases: copy srcdir to 'this' directory. copy-item "$SRC/" "$SRCLASTPART" elif [ "$FILETYPE" = "Archive" ]; then # if it's a file, just dump it in this directory.. copy-item "$SRC" "$SRCLASTPART" else echo "Unknown file type \"$FILETYPE\" returned from pls." exit 1 fi else # error case echo "Neither source nor dest begins with ':' - don't know what to do." echo "arguments: source \"$1\", dest \"$2\"" exit 1 fi Můžete text zkopírovat do nějakého textového editoru a uložit např. jako pcpr.sh Nastavte práva spouštění např. příkazem chmod +x pcpr.sh Použití je jednoduché. Dejme tomu, že potřebujete zkopírovat adresar Madonna obsahující mp3 soubory na PPC do adresare /Storage card/Audio (podadresář Audio na PPC musi byt vytvořený předem) Zadejte vs@mypc:~$ ./pcpr.sh ~/Audio/Madonna/ ":/Storage card/Audio/" Průběh kopírování jednotlivých souborů bude zobrazen na vašem terminálu. Skript si pro snadné spouštění můžete samozřejmě zkopírovat např. do adresáře ///usr/bin// nebo jiného pro který je nastavena cesta. ====== Odkazy ====== * [[http://synce.sourceforge.net/synce/contrib/pcp-r]]