Я пытаюсь переместить несколько файлов на FTP-сервере в другой каталог на одном сервере. До сих пор я написал скрипт bash, который будет входить в систему и получать любые новые файлы в удаленном каталоге, но команда ftp не поддерживает команду 'mv'. По сути, скрипт будет загружать новый файл (ы) и затем после загрузки перемещать файл (ы) в другой каталог на том же сервере. Обратите внимание, что имена файлов будут отличаться каждый раз, поэтому здесь важно использовать подстановочные знаки.

Прежде чем ответить, пожалуйста, обратите внимание, что это нужно автоматизировать, поэтому использование графического интерфейса пользователя, такого как Filezilla, не поможет мне, поскольку мне придется входить на различные FTP-сайты и перемещать файлы вручную, также имейте в виду, что я не могу выполнить ssh на любой из серверов, так как они управляются другой компанией, и доступ по FTP - это все, что я могу получить. И последнее, я не буду знать, какие имена файлов, поэтому было бы полезно использовать подстановочный знак.

Любая помощь или руководство действительно приветствуются.

Спасибо!

2
Danny 1 Апр 2017 в 00:28

2 ответа

Лучший ответ

Возможно, команда переименовать в ftp подойдет вам?

rename [from [to]]
       Rename the file from on the remote machine, to the file to.

Я сделал bash со старым файлом, который сидел на сервере, и он, казалось, делал то, что вы хотите:

ftp> ls tmp/test*
229 Entering Extended Passive Mode (|||55572|)
150 Accepted data connection
-rw-r--r--    1 sinasohn   sinasohn           21 Mar 31 16:37 tmp/testfile01
226-Options: -a -l 
226 1 matches total

ftp> ls tmp2/test*
229 Entering Extended Passive Mode (|||64715|)
150 Accepted data connection
226-Options: -a -l 
226 0 matches total

ftp> rename tmp/testfile01 tmp2/testfile01
350 RNFR accepted - file exists, ready for destination
250 File successfully renamed or moved

ftp> ls tmp/test*
229 Entering Extended Passive Mode (|||56698|)
150 Accepted data connection
226-Options: -a -l 
226 0 matches total

ftp> ls tmp2/test*
229 Entering Extended Passive Mode (|||50239|)
150 Accepted data connection
-rw-r--r--    1 sinasohn   sinasohn           21 Mar 31 16:37 tmp2/testfile01
226-Options: -a -l 
226 1 matches total
ftp> 

Я поместил пустые строки между командами здесь для ясности.

Надеюсь это поможет!

2
Roger Sinasohn 31 Мар 2017 в 21:41

Полный скрипт для перемещения более одного файла
1. получить список файлов с ftp сервера с помощью команды mls
2. создать список файлов
2.1 получить файл
2.2 переименовать (переместить файл)
3. выполнить команду ftp с помощью файла списка

#!/bin/sh
clear
# change local directory
cd [local-directory]

#collect file names
ftp -ni ftp.abccompany.com <<EOF
user [user] [password]
cd /OUT
mls abc*.* list.txt 
quit
EOF

# create ftp action list
echo >>todo.lst user [user] [password]
while read N
do
    echo >>todo.lst cd /OUT
    echo >>todo.lst get $N
    echo >>todo.lst rename $N ARCHIVE/$N
done <list.txt

echo >>todo.lst quit

# ftp transfer process
ftp -nv ftp.abccompany.com <todo.lst

# cleanup
rm todo.lst
0
chunhunghan 13 Июн 2019 в 05:17