FTP 서버에서 파일을 이동하는 스크립트 작성

FTP 서버에서 파일을 이동하는 스크립트 작성

FTP 서버의 여러 파일을 다른 디렉터리로 이동하려고 합니다. 지금까지 로그인하여 원격 디렉토리의 새 파일을 검색하는 bash 스크립트를 작성했지만 "mv" 명령은 ftp 명령에서 지원되지 않습니다. 기본적으로 스크립트는 새 파일을 다운로드한 다음 다운로드 후 파일을 동일한 서버의 다른 디렉터리로 이동합니다.

답변하기 전에 이 작업은 자동화되어야 한다는 점을 참고하시기 바랍니다. 따라서 Filezilla와 같은 GUI를 사용하는 것은 다양한 FTP 사이트에 로그인하고 파일을 수동으로 이동해야 하기 때문에 도움이 되지 않습니다. 또한 SSH를 사용할 수 없다는 점을 명심하세요. 다른 회사에서 관리하고 있고 내가 얻을 수 있는 것은 FTP 액세스뿐이기 때문입니다. 마지막으로 파일 이름이 무엇인지 모르기 때문에 와일드카드를 사용합니다.

답변1

스크립트를 이용하여 로그인에 성공하신 것으로 보이므로, 스크립트를 이용하여 로그인 후 명령어는 다음과 같습니다.

  • 상식과는 반대로이름을 바꿔라이 명령은 파일을 이동합니다

    /path/to/file/to/move /path/to/files/destination/ 이름 바꾸기

  • mp4와 같은 와일드카드와 함께 사용해야 합니다.

    /path/to/files/*.mp4 /path/to/destination/ 이름 바꾸기

이것이 당신이 찾고 있는 것이기를 바랍니다!

원천:https://stackoverflow.com/questions/9461844/how-to-move-files-using-ftp-commands

답변2

FTP에는 mv 명령이 없습니다. 이름 바꾸기 명령을 사용해야 합니다.

할 일 파일을 생성하고
여러 파일을 이동하는 완전한 스크립트로 각 파일의 이름을 하나씩 변경(이동)하는 개념입니다.
1. mls 명령을 사용하여 ftp 서버에서 파일 목록 가져오기
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 #for demo you can do more actions on text file
    #echo >>todo.lst get $N  #for demo you can do more actions on text file
    echo >>todo.lst rename $N ARCHIVE/$N #did not change file name, move directory only
done <list.txt

echo >>todo.lst quit

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

# cleanup
rm todo.lst

관련 정보