scp를 사용하여 여러 파일을 서버에 업로드하고 디렉터리 구조를 보존하는 방법은 무엇입니까?

scp를 사용하여 여러 파일을 서버에 업로드하고 디렉터리 구조를 보존하는 방법은 무엇입니까?

로컬 파일이 있습니다.

/doc/dir-monkey/monkey.txt
/doc/dir-monkey/monkey.xml

/doc/dir-dog/dog.txt
/doc/dir-dog/dog.xml

/doc/dir-cat/cat.txt
/doc/dir-cat/cat.xml

이제 scp를 통해 원격 서버에 업로드하고 싶습니다.

디렉토리를 동일한 방식으로 유지하고 필요한 경우 이전 파일을 덮어쓰고 싶습니다. 한 번에 하나의 파일만 업로드할 수 있다는 것을 알고 있으며, 이전에 파일을 압축한 다음 원격으로 압축을 푸는 방법에 대한 몇 가지 요령을 발견했습니다. 이에 대한 자세한 지침이 있습니까?

현재 MacOSX 10.10을 사용하고 있으며 원격 서버는 다음과 같습니다.

Distributor ID: Debian
Description:    Debian GNU/Linux 7.5 (wheezy)
Release:    7.5
Codename:   wheezy

답변1

사용 가능한 매개변수와 옵션이 다양하므로 배포판 매뉴얼을 참조하세요. 사용 man scp.

OSX에서 SCP를 사용한 재귀 복사의 경우 다음이 작동합니다.

scp -r /local/directory [email protected]:/remote/directory

답변2

언급했듯이 scp -r localDir user@server:remoteDir은 재귀 복사를 수행해야 합니다. 파일의 타임스탬프가 걱정되는 경우 -p 플래그를 추가하면 로컬 서버에도 보관됩니다(그렇지 않으면 복사 시간으로 변경됩니다).
이는 소량의 데이터에 적합합니다. 많은 수(많은 수의 파일)를 사용하여 정기적으로 이 작업을 수행해야 하고 변경된 내용만 업데이트하려는 경우 rsync를 사용하는 것이 좋습니다.

다음과 같이 작동합니다.

rsync -avz locaDir user@remoteServer:remoteDir

그러나 osx 및 ubuntu에서는 rsync가 필요합니다(가능합니다;)).

답변3

이것이 구조의 전부인지 아니면 단지 하나의 구성요소인지는 알 수 없습니다. 그게 다라면 비슷한 일을 할 수 있습니다 scp -r /doc remote:/doc_copy.

이것이 단지 하위 집합이라면 scp에서 모든 작업을 수행하는 것이 훨씬 더 어려울 것입니다. 일부 옵션은 한 번에 하나씩 scp를 사용하거나 유사한 것을 사용하는 것 rsync(보다 표현력이 풍부한 포함/제외 인터페이스 사용)일 수 있습니다.

관련 정보