pda:kopírování_adresářů

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
pda:kopírování_adresářů [2012/07/27 11:05] – vytvořeno ubuntupda:kopírování_adresářů [2019/02/25 17:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== 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. !!!)
 +
 + <ubu> Zde je upravený skript:
 +
 +<code>
 +
 +# recursively copy a directory to WinCE PDA
 +# Now handles spaces/dash in names, and multiple sources.
 +# Henrik Isacsson, <snout@ctrl-c.liu.se>  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
 +</code>
 +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
 +<code>
 +chmod +x pcpr.sh
 +</code>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
 +<code>
 +vs@mypc:~$ ./pcpr.sh  ~/Audio/Madonna/ ":/Storage card/Audio/"
 +</code>
 + <circ> 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]]