用于在sftp中创建目录和子目录的脚本

问题描述 投票:1回答:2

我正在运行Bash脚本以将文件上传到sftp位置。但是,在上传文件之前,我需要检查sftp目录和子目录是否存在。如果存在,则上载一个文件,如果不存在,则创建目录和子目录,然后上载该文件。我该如何实现?

mkdir -p在sftp中不起作用。不幸的是ssh访问被禁用。我已经试过了:

for i in `ls -1t | head -1`
do
        echo $i
        zip -r $i_file.zip $i
        sleep 2
        sshpass -p "passowrd" sftp -oPort=22 username@sftpserver <<< $'cd /file \n mkdir file1/file2/file3 \n cd /file1/file2/file3 \n put '$I_file.zip''
done
bash shell sftp
2个回答
0
投票

首先,检查目录是否存在(如果不尝试的话,我不使用sftp客户端播放该目录,因为我也是新手,但可以尝试一下。)我很想听听您的反馈或其他任何人的反馈。

#!/bin/bash
path="$1"
if [ ! -d "$path" ]
then
    IFS='/' # space is set as delimiter
    read -ra ADDR <<< "$path" # str is read into an array as tokens separated by IFS'
    cdir="$PWD"
    for i in "${ADDR[@]}"; do # access each element of array
        cdir+="/$i"
        mkdir "$cdir"
    done
fi

0
投票

我已经尝试过:

for i in `ls -1t | head -1`
do
        echo $i
        zip -r $i_file.zip $i
        sleep 2
        sshpass -p "passowrd" sftp -oPort=22 username@sftpserver <<< $'cd /file \n mkdir file1/file2/file3 \n cd /file1/file2/file3 \n put '$I_file.zip''
done
  • [$i_file.zip-如果要将标识符字符附加到变量扩展中,则必须包含名称:${i}_file.zip
  • cd /file \n mkdir file1/file2/file3 \n cd /file1/file2/file3 \n-您更改为/ file,(尝试)创建/ file / file1 / file2 / file3,然后尝试更改为/ file1 / file2 / file3。也许您的意思是cd /file1 \n mkdir file2 \n mkdir file2/file3 \n cd file2/file3 \n
  • [$I_file.zip-您使用大写字母I,而不是大括号i
© www.soinside.com 2019 - 2024. All rights reserved.