퍼티를 사용하여 서버에 로그인했습니다. 거기에서 FTP를 사용하여 다른 서버에 연결하고 있습니다. mput을 사용하여 첫 번째 서버에서 두 번째 서버로 여러 폴더를 복사하고 싶습니다.
처럼:
ftp> mput folder1 folder2 folder3
그러나 “폴더 1 : 일반 파일이 아닙니다.”등이 표시됩니다. 이러한 각 폴더에는 하위 폴더, 파일 (일부 이진 파일, 일부는 아님)이 있습니다.
재료를 압축 한 다음 전송하지 않고 원하는 것을 어떻게 달성 할 수 있습니까?
답변
커맨드 라인 FTP는 매우 원시적입니다.
원격 사이트를 향해 파일 / 폴더를 재귀 적으로 보낼 수 없습니다.
원격에서 로컬과 동일한 디렉토리 구조를 다시 작성하려면 mkdir
각 경로 를 수동으로 작성 mput *
하고 해당 디렉토리의 모든 항목을 원격으로 전송 하는 데 사용해야 합니다.
이를 쉽게하기위한 두 가지 옵션 :
-
기본 FTP 명령 사용 중지 (ncftp가 좋은 대안입니다)
-
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 *을 추가하는 것을 잊지 마십시오.