| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/bin/bash
- set -e
- #set -x
- src="$1"
- dest="$2"
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
- if [ -z "$dest" ]; then
- echo >&2 "usage: $0 src dest"
- exit 1
- fi
- seen_files=$(mktemp)
- mkdir -p "$dest" || true
- $DIR/ipfs ls "$src" | while read HASH SIZE FILENAME; do
- FILENAME="${FILENAME%$'\r'}"
- dest_file="$dest/$FILENAME"
- if [ -e "$dest_file" ]; then
- ipfs_file_size=$($DIR/ipfs files stat --format='<size>' "/ipfs/$HASH")
- if [ $( stat -c %s "$dest_file") -eq "$ipfs_file_size" ]; then
- echo $FILENAME >> "$seen_files"
- continue
- fi
- fi
- echo >&2 "Retrieving $HASH => $dest_file"
- $DIR/ipfs cat "$HASH" > "$dest_file"
- echo $FILENAME >> "$seen_files"
- done
- after_files=$(mktemp)
- ls "$dest" > "$after_files"
- comm --nocheck-order -13 "$seen_files" "$after_files" | while read INTRUDER; do
- echo rm -f "$dest/$INTRUDER"
- done
- rm -f "$seen_files"
- rm -f "$after_files"
|