| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/bash
- set -e
- #set -x
- src="$1"
- dest="$2"
- if [ -z "$dest" ]; then
- echo >&2 "usage: $0 src dest"
- exit 1
- fi
- seen_files=$(mktemp)
- mkdir -p "$dest" || true
- cur=$(ipfs name resolve --nocache "$src")
- ipfs ls "$cur" | while read HASH SIZE FILENAME; do
- FILENAME="${FILENAME%$'\r'}"
- dest_file="$dest/$FILENAME"
- if [ -e "$dest_file" ]; then
- ipfs_file_size=$(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"
- 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
- rm -f "$dest/$INTRUDER"
- done
- rm -f "$seen_files"
- rm -f "$after_files"
- echo "$cur"
|