sftp : 폴더에 포함 된 모든 파일, 디렉토리 및 하위 디렉토리 업로드


27

머신 AI에는 폴더가 있습니다.

/home/a/

머신 BI에는 폴더가 있습니다.

/home/b/

sftp로 / home / b에있는 / home / a의 모든 파일, 디렉토리 및 하위 디렉토리를 전송하고 싶습니다. AI 머신에서 다음 명령을 시도했습니다.

sftp fibon82@machineB.com
put /home/a/* /home/b/

그러나 작동하지 않습니다. "비정규 파일 / home / a / a1 건너 뛰기"오류 메시지가 표시됩니다. [a1은 a의 하위 디렉토리입니다]
put 명령어는 어떻게 수정할 수 있습니까?

감사! :)

편집하다:

scp를 사용하여 해결했습니다.

scp -r /home/a/ fibon82@machineB.com:/home/b/

2
put -r일했을 것입니다.
WakiMiko

1
"put command"에 대해 -r 옵션을 사용할 수 있다는 것을 어떻게 알 수 있습니까? 여기를 보면 -P 플래그 만 설명되어 있습니다 ... 매뉴얼 에서 동일합니다. 감사합니다! :)
fibon82

대신 답변으로 게시해야합니다.
NN

예. 답변을 사용하여 질문을 편집하는 대신 자신의 질문에 대답하고 수락해야합니다.

@ fibon82 OpenSSH에 대한 최신 매뉴얼 sftpOpenSSH 프로젝트를 참조하십시오 .
Martin Prikryl

답변:


21

sftp와 완전히 동일하지는 않지만 rsync 는 scp 및 sftp에 대한 강력한 대안입니다. 특히 변경되지 않은 파일을 복사하지 않기 때문에 특히 시스템 A에서 시스템 B로 사본을 업데이트 할 때; 또한 컴퓨터 A에서 삭제 된 컴퓨터 B에서 파일을 제거 할 수도 있습니다 (물론 지시가있을 때만).

귀하의 경우 구문은

rsync -zrp /home/a/ user@remote.host.com:/home/b/

-r옵션은 파일을 재귀 적으로 복사 -z하고, 전송하는 동안 압축을 활성화 하며, 복사 할 -p때 파일 권한 (파일 작성, 편집 등)을 유지합니다. 이는 scp가 AFAIK를 수행하지 않는 것입니다. 더 많은 옵션이 가능합니다. 평소와 같이 man페이지를 읽으십시오 .


아 감사합니다! :) 내가 배운 새로운 것!
fibon82

@ fibon82 : 천만에요 :)
Karolos

1
난 당신을 사랑합니다, 당신의 코드를 사용하여 1 분 안에 400MB의 데이터를 동기화했습니다. 나는 무슨 일이 일어나고 있는지 알고 (어떤 속도 :)에서)하지 않고 당신은 또한 그렇지 않으면 당신은 아무것도 쳐다보고있을 것이다 --progress 사용해야합니다 추가 할
산드로 Antonucci

1
슬프게도 -프로토콜을 rsync말하지 않습니다 sftp. 그래서 당신은 설정 한 경우 sftp사용 -chroot을 ssh에서의 빌드를internal-sftp 다음 rsync실패합니다.
티노

17

에서 sftp이 명령을 반복적으로 원격 현재 디렉토리에 현재 디렉토리의 내용을 업로드 :

 put -r .

참조하십시오 man sftp.


-r스위치가 있기 때문에 지원 OpenSSH를 5.4 만.
Martin Prikryl

1
점을 유의 -r스위치는 클라이언트 측에서만 (의 일부 sftp커맨드). 따라서 서버 (여기 : 수신) 측에는 OpenSSH 5.4가 필요하지 않으며 클라이언트 만 지원해야합니다.
티노

9

scp(보안 사본)은 사실상 보안 터널을 통해 파일을 전송하기위한 Linux입니다. 귀하의 경우 재귀 스위치를 사용하려고합니다 (예 :

scp -r /home/a/ user@remote.host.com:/home/b/

5
sftp와 scp는 실제로 ssh를 기반으로하는 다른 프로토콜입니다.
paradroid

1
예, 서버에서 sftp 프로토콜 만 허용하면이 답변이 작동하지 않습니다.
рüффп

4

사용해보십시오

put -r /home/a/ /home/b/

추가 정보를 원하시면 체크 아웃 :


1
-r스위치가 있기 때문에 지원 OpenSSH를 5.4 만.
Martin Prikryl

점을 유의 -r스위치는 클라이언트 측에서만 (의 일부 sftp커맨드). 따라서 서버 (여기 : 수신) 측에는 OpenSSH 5.4가 필요하지 않으며 클라이언트 만 지원해야합니다. 그리고 : 태그 가 붙은 질문에 대한 답변으로 ( 지원되지 않을 수도 있음) 얻는 것이 약간 혼란 스럽기 때문에 이것은 받아 들여진 대답이어야합니다 . rsyncsftp
티노

0

실제로, put -r이 작동해야합니다. 그러나 데스티 네이션 폴더는 원격 호스트에 있어야합니다.

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

언급 한 내용을 뒷받침하는 참조 및 증거를 추가하고이 답변이 게시물의 기존 답변 중 하나에 아직 답변되지 않았 음을 확인 했습니까? 댓글 작성 을 시작하는 방법을 이해하려면 "댓글을 달려면 50 개의 평판이 필요한 이유"를 읽으십시오 .
Pimp Juice IT

-1

내 경우 rsync에는 불가능했기 때문에 다음을 사용했습니다.

mput -rp /home/a/ /home/b/

mputOpenSSH 에는 명령 이 없습니다 sftp. 어쩌면 당신은 참조 psftp?
Martin Prikryl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.