This shows you the differences between two versions of the page.
| linuxtips:sshpartialdownload [2012/01/14 03:51] 0.0.0.0 created | linuxtips:sshpartialdownload [2012/01/14 05:07] (current) mschiff Page moved from sshpartialdownload to linuxtips:sshpartialdownload | ||
|---|---|---|---|
| Line 17: | Line 17: | ||
| <code> | <code> | ||
| - | - !/bin/bash | + | #!/bin/bash | 
| - | - scp+.sh | + | # scp+.sh | 
| - | - get/put files via ssh and | + | # get/put files via ssh and | 
| - | - continue partial downloads/uploads or host-to-host transfers | + | # continue partial downloads/uploads or host-to-host transfers | 
| - | - | + | # | 
| - | - Copyright (c) 2005-2008 by Marc Schiffbauer | + | # Copyright (c) 2005-2008 by Marc Schiffbauer | 
| - | - | + | # Version 2.0 | 
| - | - Version 2.0 | + | # | 
| - | - | + | |
| SSH_OPTS="-o ServerAliveInterval=5 -o ServerAliveCountMax=3" | SSH_OPTS="-o ServerAliveInterval=5 -o ServerAliveCountMax=3" | ||
| BLOCK_SIZE="1500" # Bytes | BLOCK_SIZE="1500" # Bytes | ||
| - | - URL like "user@host:path/to/file" | + | # URL like "user@host:path/to/file" | 
| SRC_URL="$1" | SRC_URL="$1" | ||
| SRC_URL_HOST="${SRC_URL%%:*}" | SRC_URL_HOST="${SRC_URL%%:*}" | ||
| Line 40: | Line 39: | ||
| if [[ -z "$SRC_URL" || -z "$DST_URL" ]]; then | if [[ -z "$SRC_URL" || -z "$DST_URL" ]]; then | ||
| - | <code> | ||
| echo "" | echo "" | ||
| echo " Syntax: $(basename $0) <src> [[<dst>]]" | echo " Syntax: $(basename $0) <src> [[<dst>]]" | ||
| echo "" | echo "" | ||
| echo " src/dst: [[[user@]]host:]/path/to/file" | echo " src/dst: [[[user@]]host:]/path/to/file" | ||
| - | exit 1</code> | + | exit 1 | 
| fi | fi | ||
| if [[ $SRC_URL_HOST == $SRC_URL_FILE ]]; then | if [[ $SRC_URL_HOST == $SRC_URL_FILE ]]; then | ||
| - | <code> | + | SRC_CMD="sh -c" | 
| - | SRC_CMD="sh -c"</code> | + | |
| else | else | ||
| - | <code> | + | SRC_CMD="ssh $SSH_OPTS $SRC_URL_HOST" | 
| - | SRC_CMD="ssh $SSH_OPTS $SRC_URL_HOST"</code> | + | |
| fi | fi | ||
| if [[ $DST_URL_HOST == $DST_URL_FILE ]]; then | if [[ $DST_URL_HOST == $DST_URL_FILE ]]; then | ||
| - | <code> | + | DST_CMD="sh -c" | 
| - | DST_CMD="sh -c"</code> | + | |
| else | else | ||
| - | <code> | + | DST_CMD="ssh $SSH_OPTS $DST_URL_HOST" | 
| - | DST_CMD="ssh $SSH_OPTS $DST_URL_HOST"</code> | + | |
| fi | fi | ||
| - | DST_SIZE=$($DST_CMD "if [[|-f '$DST_URL_FILE' ]]; then find '$DST_URL_FILE' -printf '%s'; else echo 0; fi") | + | DST_SIZE=$($DST_CMD "if [[sshpartialdownload|-f '$DST_URL_FILE' ]]; then find '$DST_URL_FILE' -printf '%s'; else echo 0; fi") | 
| PADDING=$((BLOCK_SIZE-DST_SIZE%BLOCK_SIZE)) | PADDING=$((BLOCK_SIZE-DST_SIZE%BLOCK_SIZE)) | ||
| - | $SRC_CMD "if [[|$PADDING -ne $BLOCK_SIZE ]]; then dd if='$SRC_URL_FILE' ibs=1 skip=$DST_SIZE status=noxfer count=$PADDING 2>/dev/null; PADDING=$PADDING; \ | + | $SRC_CMD "if [[sshpartialdownload|$PADDING -ne $BLOCK_SIZE ]]; then dd if='$SRC_URL_FILE' ibs=1 skip=$DST_SIZE status=noxfer count=$PADDING 2>/dev/null; PADDING=$PADDING; \ | 
| - | <code> | + | else PADDING=0; fi; dd if='$SRC_URL_FILE' bs=$BLOCK_SIZE skip=\$((($DST_SIZE+PADDING)/$BLOCK_SIZE))" | $DST_CMD "cat >> $DST_URL_FILE" | 
| - | else PADDING=0; fi; dd if='$SRC_URL_FILE' bs=$BLOCK_SIZE skip=\$((($DST_SIZE+PADDING)/$BLOCK_SIZE))" | $DST_CMD "cat >> $DST_URL_FILE"</code> | + | |
| exit $? | exit $? | ||
| </code> | </code> | ||