fix: deploy-to uses scp -r for directories (fixes .bashrc.d upload)
This commit is contained in:
@@ -944,11 +944,17 @@ cmd_deploy_to() {
|
|||||||
|
|
||||||
local backed_up=0
|
local backed_up=0
|
||||||
for rel in "${remote_paths[@]}"; do
|
for rel in "${remote_paths[@]}"; do
|
||||||
# Check if the file actually exists on the remote before fetching
|
# Check if the file/dir actually exists on the remote before fetching
|
||||||
if ssh "$target" "[ -f ~/$rel ]" 2>/dev/null; then
|
if ssh "$target" "[ -e ~/$rel ]" 2>/dev/null; then
|
||||||
local local_dest="$backup_base/$rel"
|
local local_dest="$backup_base/$rel"
|
||||||
mkdir -p "$(dirname "$local_dest")"
|
mkdir -p "$(dirname "$local_dest")"
|
||||||
if scp -q "$target:~/$rel" "$local_dest" 2>/dev/null; then
|
# Use -r for directories, plain scp for files
|
||||||
|
if ssh "$target" "[ -d ~/$rel ]" 2>/dev/null; then
|
||||||
|
mkdir -p "$local_dest"
|
||||||
|
if scp -rq "$target:~/$rel/." "$local_dest/" 2>/dev/null; then
|
||||||
|
(( backed_up++ )) || true
|
||||||
|
fi
|
||||||
|
elif scp -q "$target:~/$rel" "$local_dest" 2>/dev/null; then
|
||||||
(( backed_up++ )) || true
|
(( backed_up++ )) || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -1018,12 +1024,23 @@ cmd_deploy_to() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if $dry_run; then
|
if $dry_run; then
|
||||||
echo " [dry-run] ~/$rel"
|
echo " [dry-run] ~/$rel$([ -d "$src" ] && echo '/')"
|
||||||
else
|
else
|
||||||
# Ensure parent directory exists on remote
|
|
||||||
local parent; parent="$(dirname "$rel")"
|
local parent; parent="$(dirname "$rel")"
|
||||||
|
if [ -d "$src" ]; then
|
||||||
|
# For directories: remove stale dest first (avoids double-nesting on re-run)
|
||||||
|
# then scp -r into the parent so the dir name is preserved correctly.
|
||||||
|
ssh "$target" "rm -rf ~/$rel"
|
||||||
|
if [[ "$parent" == "." ]]; then
|
||||||
|
scp -rq "$src" "$target:~/"
|
||||||
|
else
|
||||||
|
ssh "$target" "mkdir -p ~/$parent"
|
||||||
|
scp -rq "$src" "$target:~/$parent/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
[[ "$parent" != "." ]] && ssh "$target" "mkdir -p ~/$parent"
|
[[ "$parent" != "." ]] && ssh "$target" "mkdir -p ~/$parent"
|
||||||
scp -q "$src" "$target:~/$rel"
|
scp -q "$src" "$target:~/$rel"
|
||||||
|
fi
|
||||||
success "Deployed: ~/$rel"
|
success "Deployed: ~/$rel"
|
||||||
(( deployed++ )) || true
|
(( deployed++ )) || true
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user