- local dir fs x bdir f dst
- for dir in "$@"; do
- fs=$dir/filesystem
- if [[ -e $fs && $USER == ian ]]; then
- # note, symlinks get resolved, not copied.
- m s cp -RLT --preserve=mode,timestamps $fs /
- fi
-
- # one program so far does not work with a symlink,
- # so we have to use a bind mount
- bdir=$dir/binds
- if [[ -e $bdir && $USER == ian ]]; then
- for f in $(find $bdir -type f); do
- dst=/home/ian/${f##$bdir}
- binds+="$f $dst none bind 0 0"$'\n'
- if [[ ! -e $dst || $(stat -c%i $f $dst |uniq -u) ]]; then
- if mountpoint -q $dst; then
- s umount $dst
- fi
- # note: in future, may need to mkdir also
- [[ -e $dst ]] || touch $dst
- s mount --bind $f $dst
- fi
- done
- fi
-
- if [[ -e $dir/subdir_files ]]; then
- subdir-link-r $dir/subdir_files
- fi
- local x=( $dir/!(binds|subdir_files|filesystem|machine_specific|..|.) )
- (( ${#x[@]} >= 1 )) || continue
- m lnf ${x[@]} ~
- done
+ local dir fs x bdir f dst
+ for dir in "$@"; do
+ fs=$dir/filesystem
+ if [[ -e $fs && $USER =~ ^iank?$ ]]; then
+ # note, symlinks get resolved, not copied.
+ s tar --mode=g-s --owner=0 --group=0 -cz -C $fs . | s tar -xz -C /
+ fi
+
+ if [[ -e $dir/subdir_files ]]; then
+ m subdir-link-r $dir/subdir_files
+ fi
+ local x=( $dir/!(binds|subdir_files|filesystem|machine_specific|..|.) )
+ (( ${#x[@]} >= 1 )) || continue
+ m lnf ${x[@]} ~
+ done