SFTP mget 및 get 명령은 여러 폴더 또는 파일을 하나의 서버 디렉토리에 복사합니다.

SFTP mget 및 get 명령은 여러 폴더 또는 파일을 하나의 서버 디렉토리에 복사합니다.

하나의 명령을 사용하여 동일한 디렉터리의 여러 폴더를 복사해야 합니다. 그래서 처음에 이걸 했어요

sftp> mget -r folder1 folder2

이 명령은 folder1대상 서버에 복사되지만 이름은 folder2.

아마도 다음을 수행해야 할 것입니다. 그러나 나는 시도하지 않았습니다.

sftp> get -r folder1 && sleep 5 && get -r folder2

나는 이것을 시도하지 않았지만 효과가 있을 것이라고 생각합니다.

더 나은 대안이 있습니까?

답변1

mgetsftp의 하위 명령은 다음과 같습니다.별명get:

static const struct CMD cmds[] = {
    { "bye",    I_QUIT,     NOARGS  },
    ...
    { "get",    I_GET,      REMOTE  },
    { "mget",   I_GET,      REMOTE  },
    ...
};

이것get하위 명령구문은 다음과 같습니다.

 get [-afPpr] remote-path [local-path]

get하나 이상의 인수를 제공하면 mget두 번째 인수를 첫 번째 인수의 이름 바꾸기 대상으로 처리합니다. 따라서 한 번에 여러 디렉터리를 검색할 수 없으며 개별적으로 가져와야 합니다.

mget -r folder1 
mget -r folder2

sftp 구문은 쉘 스타일 명령 연결도 허용하지 않으므로 다음과 같은 명령을 사용할 수 없습니다 get -r folder1 && .... 또한 sleep다른 목적(로컬 프로세스 모니터링, 네트워크를 통한 몇 초 절약 등)으로 지연이 필요하지 않는 한 get 명령 사이를 시도할 필요가 없습니다 .

대안으로 다음을 sftp고려하십시오 scp.

scp -r user@host:folder1 user@host:folder2 /local/directory

...재귀적으로 복사됩니다.외딴 folder1그리고 folder2디렉토리현지의 /local/directory.

답변2

폴더가 폴더1과 폴더2인 경우 하나의 명령으로 가져올 수 있습니다.

get -r folder[1-2]

get [-afPpr] 원격 경로 [로컬 경로]는
원격 경로를 검색하여 로컬 컴퓨터에 저장합니다. 로컬 경로 이름을 지정하지 않으면 해당 이름은 원격 컴퓨터의 이름과 동일합니다. 원격 경로에는 다음이 포함될 수 있습니다.글로벌(7)문자이며 여러 파일과 일치할 수 있습니다. 그렇다면 local-path가 지정되고 local-path는 디렉토리를 지정해야 합니다.

관련 정보