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



我正在运行一个 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

首先,检查目录是否存在,如果没有尝试这个,我不知道它会如何使用 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

我试过这个:

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${i}_file.zip

相关内容

最新更新