user 7 anos atrás
pai
commit
21857028e2
3 arquivos alterados com 58 adições e 1 exclusões
  1. 8 1
      Makefile
  2. 6 0
      ipfs
  3. 44 0
      sync_directory

+ 8 - 1
Makefile

@@ -9,6 +9,9 @@ MEDIA_DIR ?= /tmp/media
 
 default: init build run
 
+ctid:
+	@echo $(ID)
+
 init:
 	bash init_container
 
@@ -18,6 +21,9 @@ build:
 shell:
 	docker exec -it $(ID) /bin/bash
 
+ipfsshell:
+	docker exec -it -u ipfs $(ID) env -i PWD=/home/ipfs HOME=/home/ipfs PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin USER=ipfs /bin/bash
+
 run:
 	mkdir -p $(LOCAL_DIR) $(LOCAL_STAGING_DIR) $(LOCAL_PLEX_DIR) $(MEDIA_DIR)
 	docker run --name $(ID) $(RUN_OPTIONS) -v $(MEDIA_DIR):/media -v $(LOCAL_PLEX_DIR):/var/lib/plexmediaserver -v $(LOCAL_STAGING_DIR):/staging -v $(LOCAL_DIR):/home/ipfs/.ipfs $(NAME)
@@ -46,4 +52,5 @@ ps:
 	docker ps -a
 
 genswarmkey:
-	bash generate_swarm_key
+	bash generate_swarm_key
+

+ 6 - 0
ipfs

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+set -e
+#set -x
+
+docker exec -u ipfs $(make ctid) env -i HOME=/home/ipfs PATH=/usr/local/bin:/usr/bin:/bin USER=ipfs ipfs "$@"

+ 44 - 0
sync_directory

@@ -0,0 +1,44 @@
+#!/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"