fix copy and bindfs
parent
c6c8f9876b
commit
fd8a9a7c98
|
@ -2,6 +2,7 @@
|
|||
export BTRFS_BIN=$(which btrfs)
|
||||
module_load confirm
|
||||
module_load helpers
|
||||
module_load path
|
||||
|
||||
# NOTE: set this for sudo
|
||||
# ALL ALL = (root) NOPASSWD:/bin/btrfs
|
||||
|
@ -182,7 +183,7 @@ snapshot_send() {
|
|||
echo "[[ "$tsnap" ]] && sudo $BTRFS_BIN sub del $tsnap"
|
||||
else
|
||||
sudo $BTRFS_BIN send $([[ $tsnap ]] && echo $tsnap || echo $src) | btrfs receive $dest
|
||||
mv $dest/$snap $dest/$name$ext
|
||||
sudo mv $dest/$snap $dest/$name$ext
|
||||
[[ "$tsnap" ]] && sudo $BTRFS_BIN sub del $tsnap
|
||||
echo transfer is complete
|
||||
ls -la $dest
|
||||
|
|
|
@ -18,9 +18,11 @@ if [ -v PS1 ]; then
|
|||
alias bfsum="dir_bind_unmount"
|
||||
alias bfse="bfs_vscode"
|
||||
|
||||
if [[ ! -d $BFS_MOUNT_DIR ]]; then
|
||||
sudo mkdir $BFS_MOUNT_DIR 2> /dev/null
|
||||
sudo chown $USER:$USER $BFS_MOUNT_DIR
|
||||
fi
|
||||
fi
|
||||
|
||||
mounted () {
|
||||
mountpoint "$1" &> /dev/null && echo yes || return 1
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
*[Tt]rash/
|
||||
tmp/*
|
||||
node_modules/*
|
||||
*[Cc]ache/*
|
||||
*[lL]ogs/*
|
||||
[Ll]og/*
|
||||
|
|
|
@ -21,7 +21,7 @@ copy () {
|
|||
cat <<EOF
|
||||
|
||||
usage:
|
||||
rsync <script options> source destination <rsync options> -- <ssh options>
|
||||
rsync <script options> source destination <rsync options> -- <ssh script options> --- <ssh options>
|
||||
|
||||
Available Script Options
|
||||
-r, run the command by this script uses --dry-run. When ready pass this flag.
|
||||
|
@ -62,7 +62,7 @@ EOF
|
|||
case "$OPTION" in
|
||||
# TODO add D and S for destion and source path
|
||||
s)
|
||||
usesudo=sudo
|
||||
usesudo="sudo -E"
|
||||
;;
|
||||
c)
|
||||
# clean out unneeded folders like cache, trash, log
|
||||
|
@ -91,7 +91,7 @@ EOF
|
|||
args+=("--exclude-from=$COPY_MODULE_PATH/cache-trash-log.exc")
|
||||
Mirror=true
|
||||
mirror=true
|
||||
usesudo=sudo
|
||||
usesudo="sudo -E"
|
||||
;;
|
||||
p)
|
||||
args+=("--mkpath")
|
||||
|
@ -155,9 +155,50 @@ EOF
|
|||
DPATH=$DEST
|
||||
fi
|
||||
[[ $DHOST && $SHOST ]] && echo this script can not process remote host to remote host transfer && return 5
|
||||
|
||||
[[ ! $SHOST ]] && SPATH=$(realpath $SPATH)
|
||||
[[ ! $DHOST ]] && DPATH=$(realpath $DPATH)
|
||||
|
||||
# additional argument processing
|
||||
debug $( ( IFS=$','; echo all remaining arguments: "$*" ) )
|
||||
value="++"
|
||||
sci=$(( $(printf "%s\n" "$@" | sed -n '/^'$value'$/{=;q}') - 1 ))
|
||||
value="--"
|
||||
si=$(( $(printf "%s\n" "$@" | sed -n '/^'$value'$/{=;q}') - 1 ))
|
||||
debug $sci $si
|
||||
|
||||
local sca=()
|
||||
local sa=()
|
||||
if [[ $sci -ge 0 ]]; then
|
||||
args+=("${@:1:$sci}")
|
||||
if [[ $si -ge 0 ]]; then
|
||||
debug both ssh args
|
||||
sca=("${@:$sci+2:$#-$si+1}")
|
||||
sa=("${@:$si+1:$#}")
|
||||
else
|
||||
debug only script args
|
||||
sca=("${@:$sci+2:$#}")
|
||||
fi
|
||||
else
|
||||
if [[ $si -ge 0 ]]; then
|
||||
debug only ssh run args
|
||||
args+=("${@:1:$si}")
|
||||
sa=("${@:$si+1:$#}")
|
||||
else
|
||||
debug in args only
|
||||
args+=("${@:1:$#+1}")
|
||||
fi
|
||||
fi
|
||||
|
||||
debug args: up before ssh: ${args[*]}
|
||||
|
||||
# is source or destination is remote, create -e ssh sync option
|
||||
if [[ $DHOST || $SHOST ]]; then
|
||||
# echo remote copy, loading ssh
|
||||
debug remote copy, loading ssh
|
||||
debug ssh script args: ${sca[*]}
|
||||
debug ssh run args: ${sa[*]}
|
||||
debug remote host: ${DHOST:-$SHOST}
|
||||
|
||||
if ! module_load ssh &>/dev/null; then
|
||||
echo unable to load ssh module
|
||||
echo likely the uci network repo has not been installed
|
||||
|
@ -169,34 +210,23 @@ EOF
|
|||
>&2 echo fatal: the host ${DHOST:-$SHOST} is not valid, aborting remote copy
|
||||
return 1
|
||||
fi
|
||||
# else
|
||||
# echo local rsync copy
|
||||
|
||||
local sshcmd
|
||||
# sshcmd="ssh -l "${ssshargs[*]}" "${sshargs[*]}""
|
||||
# echo $sshcmd
|
||||
# if ! sshcmd=$(ssh -l "${ssshargs[*]}" ${DHOST:-$SHOST}); then
|
||||
# double quotes on array expansion not good
|
||||
if ! sshcmd=$(ssh -l ${sca[*]} ${DHOST:-$SHOST} ${sa[*]}); then
|
||||
echo failed to build ssh command for rsync, aborting
|
||||
debug sshcmd: ${sshcmd}
|
||||
return 5
|
||||
fi
|
||||
debug sshcmd: ${sshcmd}
|
||||
args+=("-e '$sshcmd'")
|
||||
debug args: inclcuding ssh: ${args[*]}
|
||||
fi
|
||||
|
||||
[[ ! $SHOST ]] && SPATH=$(realpath $SPATH)
|
||||
[[ ! $DHOST ]] && DPATH=$(realpath $DPATH)
|
||||
|
||||
# BASH_DEBUG="stdout"
|
||||
debug $( ( IFS=$','; echo all remaining arguments: "$*" ) )
|
||||
for ((d=1; d<$#+1; ++d)); do
|
||||
echo in loop $d, ${!d}
|
||||
[[ ${!d} == "--" ]] && sargs=true && break
|
||||
done
|
||||
|
||||
if [[ $sargs ]]; then # if there are extra ssh arguments
|
||||
sshargs=("${@:$d+1:$#}")
|
||||
debug $( ( IFS=$','; echo "ssh arguments: ${sshargs[*]}" ) )
|
||||
[[ $DHOST || $SHOST ]] && args+=( "$(remove_end_spaces "-e '$(ssh -l "${sshargs[*]}")'")")
|
||||
fi
|
||||
|
||||
# remove --
|
||||
# args=+("${@:1:$d-1}")
|
||||
# debug $( ( IFS=$','; echo remaining arguments to parse: "$*" ) )
|
||||
# else
|
||||
# echo again: ${args[*]}
|
||||
# args=("${@:1}")
|
||||
|
||||
# assemble arguments from options
|
||||
# assemble remaining arguments from options
|
||||
[[ ! $exec ]] && args+=(--dry-run -v)
|
||||
[[ ! $quiet ]] && args+=(--info=progress2 $verbose)
|
||||
[[ $mirror ]] && args+=(-a --numeric-ids --delete --force)
|
||||
|
@ -237,6 +267,9 @@ EOF
|
|||
|
||||
# alias mirror="copy -i -a -M"
|
||||
|
||||
|
||||
# custom copy commands as functions
|
||||
|
||||
mirror_shell () {
|
||||
|
||||
local dir; local dest
|
||||
|
|
Loading…
Reference in New Issue