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


18

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

처럼:

ftp> mput folder1 folder2 folder3

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

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

답변:


19

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

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

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

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

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

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


1
tar-> put-> untar
dave의 경우

1
-1 질문에 "물건을 압축 한 다음 전송하지 않고 원하는 것을 어떻게 달성 할 수 있습니까?"
Steen Schütt

11

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

소원, Fabian


그것이 내가 최근에 RHEL 5 박스에서 한 것입니다. EPEL 패키지에서 실행 파일 이름은 ncftpput입니다.
Suppressingfire

서버 구성에서 아무것도 변경할 수 없습니다. 난 그냥 사용자입니다 ...

클라이언트에 따라 다릅니다. 서버에 없습니다.
halfdan 2009

나는 이런 식으로하는 것을 선호합니다. 감사합니다.
Mojtaba Rezaeian

11

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 {} \;

작동하는 것 같습니다.


0

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


간단한 ftp 액세스에 대한 질문입니다. scp / sftp가 아닙니다!
Mojtaba Rezaeian

-1

업로드하려는 디렉토리로 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 *을 추가하는 것을 잊지 마십시오.


6
PowerShell은 언제 Unix 시스템에서 실행됩니까?
Michael Hampton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.