
머신 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
답변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