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