Скрипт оболочки для перемещения файлов на удаленный SFTP-сервер - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь переместить файлы из одного каталога в другой каталог на удаленном SFTP-сервере через сценарий оболочки после локальной загрузки файлов.Я понимаю, что нет функции подстановки файлов перемещения, поэтому мне кажется, что я могу переименовать файлы по отдельности.

Может кто-нибудь помочь мне с кодом ниже, если есть лучший способ написания этого кода.

Все, что я пытаюсь сделать, это переместить файлы в архивную папку на SFTP-сервере, как только файлы будут загружены в мой локальный каталог.

Я знаю, что есть другие способы сделать это с помощью python /Perl-скрипты, но я ограничен в использовании сценариев Shell на Linux.

#!/usr/bin/ksh


#LOGGING
LOGFILE="/tmp/test.log"

#SFTP INFO
FTP_SERVER="test.rebex.net"
FTP_USER="demo"
FTP_PWD="password"
FTP_PORT=22
FTP_PICKUP_DIR="/"
LOCAL_DIR="/"


#-------DOWNLOAD FILES
expect <<END #> $LOGFILE
 send "$(date)\r";
 spawn sftp $FTP_USER@$FTP_SERVER 
 expect "*password: " 
 send "$FTP_PWD\r"; 
 expect "sftp> "
 send "mget *.ext\r"  
 expect "sftp>"
 send "exit\r"
END


#--------- MOVE FILES TO ARCHIVE ON SERVER
cd /home/ravi/Files

for fl in *.ext
do

expect <<END #> $LOGFILE
 send "$(date)\r";
 spawn sftp $FTP_USER@$FTP_SERVER 
 expect "*password: " 
 send "$FTP_PWD\r"; 
 expect "sftp> "
 send "rename $fl /ARCHIVE/$fl\r"  
 expect "sftp>"
 send "exit\r"
END

done 
#For Loop End

1 Ответ

0 голосов
/ 27 января 2019

Вы можете использовать lftp с опцией mmv

mmv [-O directory] file(s) directory

  Move  specified  files  to a target directory. The target directory can be specified after -O
  option or as the last argument.

       -O <dir>   specifies the target directory where files should be placed

Ссылка

Пример использования

lftp -u $FTP_USER,$FTP_PWD sftp://$FTP_SERVER:22 <<EOF
   mmv dir/to/path /dir/to/renamed/path
   EOF
...