전송에 필요한 파일을 검색할 위치를 알 수 있도록 소스 디렉터리를 포함하도록 아래 스크립트를 어떻게 수정할 수 있습니까?
일주일에 한 번 자동으로 파일을 원격 서버로 전송하는 bash 스크립트가 있습니다.
스크립트는 다음과 같습니다.
#!/bin/bash
HOST=sftp.mydomain.com
USER=user
PASS=pass
ftp -inv $HOST << EOF
$USER $PASS
cd /d D:\destination\directory
put file1.gz
put file2.gz
put file3.gz
bye
EOF
파일 1~3은 모두 source/ 디렉터리에 있으므로 source/ 디렉터리의 모든 파일을 위에서 지정한 대상 경로로 전송하고 싶습니다.
그러나 스크립트가 원본 가상 머신에서 실행되고 있기 때문에 스크립트가 모든 폴더에서 간단히 추출할 수 있으므로 디렉터리를 지정할 필요가 없다고 생각합니다(초보 오류를 이해합니다).
또는: 단순히 폴더의 전체 내용을 나열하는 대신 전체 디렉토리에 대해 ftp를 사용하는 더 쉬운 방법이 있습니까?
답변1
프로세스가 ftp
소스로 간주하는 디렉터리를 변경하려면 cd
사전 디렉터리이거나 lcd
그 안에 있는 디렉터리일 수 있습니다.
1.
cd /source/directory
ftp ...
2.
ftp ...
lcd /source/directory
...
lcd
(에서 man ftp
)local change directory
의 약어입니다.
로컬 컴퓨터의 작업 디렉터리를 변경합니다.
여기서 "로컬"은 실행 중인 시스템을 나타냅니다 ftp
.
현재 로컬 디렉토리의 모든 파일을 ftp의 현재 원격 디렉토리에 넣으려면 다음을 사용하십시오.
prompt
mput *
FTP 명령은 또는 prompt
같은 "다중" 작업 중에 대화형 프롬프트를 비활성화합니다 . 에서 인용mget
mput
FTP 매뉴얼 페이지(또는 지역을 확인하세요 man ftp
):
여러 파일을 전송하는 동안 대화형 프롬프트가 나타나 사용자가 파일을 선택적으로 검색하거나 저장할 수 있습니다.