如何从SFTP服务器获取文件并将其移动到bash脚本中的另一个文件夹?

时间:2018-12-17 09:34:51

标签: linux bash shell ubuntu sftp

如何从SFTP服务器获取文件并将其移动到Ubuntu bash脚本中的另一个文件夹?

#!bin/sh
FOLDER=/home/SFTP/Folder1/    

sftp SFTP@ip_address    
cd /home/FSTP/Folder1/    
for file in "$FOLDER"*
<<EOF
cd /home/local/Folder1
get $file
EOF
mv $file /home/SFTP/Done
done

我知道这是不对的,但是我已经尽力了,如果有人可以帮助我,我将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:1)

OpenSSH sftp并不是执行此类任务的强大客户端。您将不得不运行两次。首先收集文件列表,使用该列表生成命令列表,然后在第二次运行中执行命令。

类似这样的东西:

files=`sftp -b - user@example.com <<EOF
cd /source/folder
ls
EOF`
files=`echo $files|sed "s/.*sftp> ls//"` 

(
  echo cd /source/folder
  for file in $files; do
    echo get $file
    echo rename $file /backup/folder/$file
  done
) | sftp -b - user@example.com

在对生产文件运行脚本之前,我建议您首先将生成的命令列表输出到文件中,以检查结果是否符合预期。

只需将最后一行替换为:

) > commands.txt

答案 1 :(得分:0)

也许使用SFTP内部命令。

sftp get -r $remote_path $local_path 

使用-f选项将文件刷新到磁盘

sftp get -rf $remote_path $local_path