[server] 유닉스에서 mput을 사용하여 여러 폴더를 다른 서버로 FTP하는 방법은 무엇입니까?

퍼티를 사용하여 서버에 로그인했습니다. 거기에서 FTP를 사용하여 다른 서버에 연결하고 있습니다. mput을 사용하여 첫 번째 서버에서 두 번째 서버로 여러 폴더를 복사하고 싶습니다.

처럼:

ftp> mput folder1 folder2 folder3

그러나 “폴더 1 : 일반 파일이 아닙니다.”등이 표시됩니다. 이러한 각 폴더에는 하위 폴더, 파일 (일부 이진 파일, 일부는 아님)이 있습니다.

재료를 압축 한 다음 전송하지 않고 원하는 것을 어떻게 달성 할 수 있습니까?



답변

커맨드 라인 FTP는 매우 원시적입니다.

원격 사이트를 향해 파일 / 폴더를 재귀 적으로 보낼 수 없습니다.

원격에서 로컬과 동일한 디렉토리 구조를 다시 작성하려면 mkdir각 경로 를 수동으로 작성 mput *하고 해당 디렉토리의 모든 항목을 원격으로 전송 하는 데 사용해야 합니다.

이를 쉽게하기위한 두 가지 옵션 :

  1. 기본 FTP 명령 사용 중지 (ncftp가 좋은 대안입니다)

  2. tar를 사용하여 폴더를 압축 해제하고 파일을 전송 한 다음 반대편에서 추출하십시오.


답변

mput은 재귀를 사용하지 않으므로 일반적인 ftp 프로그램에서는 불가능합니다. ncftp를 사용하고 ‘mput -r folder’를 호출 할 수 있습니다.

소원, Fabian


답변

bash 스크립트를 만들었습니다.

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

그리고 그것을 호출

find . -type d -exec ./recursive-ftp.sh {} \;

작동하는 것 같습니다.


답변

보안 복사 scp에는 유용 ​​할 수있는 -r 재귀 플래그가 있습니다.


답변

업로드하려는 디렉토리로 powershell cd를 열고 다음 명령을 실행하십시오.

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

결과를 ftp 창에 붙여 넣습니다. 즐겨. 또한 기본 디렉토리에서 모든 파일을 전송하기 위해 mput *을 추가하는 것을 잊지 마십시오.


답변