Browse Source

run file copies in detached subshell

Tobias Simetsreiter 4 years ago
parent
commit
99c95a6003
1 changed files with 17 additions and 8 deletions
  1. 17 8
      overlaycached

+ 17 - 8
overlaycached

@@ -83,21 +83,30 @@ USAGEEOF
     set -x
     mount -t overlay -o lowerdir="$LOWER_DIR",upperdir="$UPPER_DIR",workdir="$WORK_DIR" overlay "$MOUNT_DIR"
     set +x
-    inotify_cmd "$MOUNT_DIR" |while read DIR EVT FILE;
+    inotify_cmd "$MOUNT_DIR" | handle_inotify_event
+}
+
+handle_inotify_event(){
+    while read DIR EVT FILE;
     do 
-        echo "$DIR $EVT $FILE"
         [[ "$EVT" =~ "ISDIR" ]] && continue
-        RELPATH="$(realpath --relative-to="$MOUNT_DIR" "$DIR")/$FILE"
+        echo "$DIR $EVT $FILE"
+        local RELPATH="$(realpath --relative-to="$MOUNT_DIR" "$DIR")/$FILE"
 
         [[ "$EVT" =~ "CLOSE_NOWRITE" ]] && [ ! -f "$UPPER_DIR/$RELPATH" ] && {
-            echo touch "$MOUNT_DIR/$RELPATH"
-            cat "$LOWER_DIR/$RELPATH" > "$MOUNT_DIR/$RELPATH"
-            touch -c -r "$LOWER_DIR/$RELPATH" "$MOUNT_DIR/$RELPATH"
+            echo "$LOWER_DIR/$RELPATH" ">" "$MOUNT_DIR/$RELPATH"
+            (
+                cat "$LOWER_DIR/$RELPATH" > "$MOUNT_DIR/$RELPATH"
+                touch -c -r "$LOWER_DIR/$RELPATH" "$MOUNT_DIR/$RELPATH"
+            ) &
         }
 
         $WRITE_THROUGH && [[ ! "$EVT" =~ "CLOSE_NOWRITE" ]] && [ ! -f "$LOWER_DIR/$RELPATH" ] && {
-            echo cat "$UPPER_DIR/$RELPATH" ">" "$LOWER_DIR/$RELPATH"
-            cat "$UPPER_DIR/$RELPATH" > "$LOWER_DIR/$RELPATH"
+            echo "$UPPER_DIR/$RELPATH" ">" "$LOWER_DIR/$RELPATH"
+            (
+                cat "$UPPER_DIR/$RELPATH" > "$LOWER_DIR/$RELPATH"
+                touch -c -r "$UPPER_DIR/$RELPATH" "$LOWER_DIR/$RELPATH"
+            ) &
         }
     done
 }