하나의 명령을 사용하여 동일한 디렉터리의 여러 폴더를 복사해야 합니다. 그래서 처음에 이걸 했어요
sftp> mget -r folder1 folder2
이 명령은 folder1
대상 서버에 복사되지만 이름은 folder2
.
아마도 다음을 수행해야 할 것입니다. 그러나 나는 시도하지 않았습니다.
sftp> get -r folder1 && sleep 5 && get -r folder2
나는 이것을 시도하지 않았지만 효과가 있을 것이라고 생각합니다.
더 나은 대안이 있습니까?
답변1
mget
sftp의 하위 명령은 다음과 같습니다.별명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는 디렉토리를 지정해야 합니다.