편집하다:

편집하다:

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

/home/a/

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

/home/b/

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

sftp [email protected]
put /home/a/* /home/b/

하지만 작동하지 않습니다. 오류 메시지가 나타납니다: "비정규 파일 /home/a/a1 건너뛰기"... [a1은 a의 하위 디렉터리입니다.]
put 명령어를 어떻게 수정할 수 있나요?

감사해요! :)

편집하다:

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

scp -r /home/a/ [email protected]:/home/b/

답변1

엄밀히 말하면 sftp와 동일하지는 않지만재동기화scp 및 sftp에 대한 매우 강력한 대안입니다. 특히 변경되지 않은 파일을 복사하지 않기 때문에 머신 A에서 머신 B로 복사본을 업데이트할 때 더욱 그렇습니다. 또한 컴퓨터 A에서 삭제된 파일을 컴퓨터 B에서 제거할 수도 있습니다(물론 지시를 받은 경우에만).

귀하의 경우 구문은 다음과 같습니다.

rsync -zrp /home/a/ [email protected]:/home/b/

-r옵션은 파일을 재귀적으로 복사하기 위한 것이며, -z전송 중에 압축을 활성화하고 -p복사 시 파일 권한(파일 생성, 편집 등)을 유지합니다. 이는 scp가 AFAIK를 수행하지 않는 것입니다. 더 많은 옵션이 가능합니다. 평소처럼 man페이지를 읽어보세요.

답변2

이 명령 에서는 sftp현재 디렉터리의 콘텐츠를 원격 현재 디렉터리에 재귀적으로 업로드합니다.

 put -r .

보다man sftp.

답변3

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

scp -r /home/a/ [email protected]:/home/b/

답변4

실제로 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

관련 정보