Как мне получить файлы с SFTP-сервера и переместить их в другую папку в скрипте bash? - PullRequest
0 голосов
/ 17 декабря 2018

Как мне получить файлы с SFTP-сервера и переместить их в другую папку в bash-скрипте Ubuntu?

#!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

Я знаю, что это неправильно, но я старался изо всех сил, и если кто-то может помочья буду признателен за это.Заранее спасибо.

1 Ответ

0 голосов
/ 17 декабря 2018

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
...