如何从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
我知道这是不对的,但是我已经尽力了,如果有人可以帮助我,我将不胜感激。预先感谢。
答案 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