#!/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='' "/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"