디렉토리가 존재하지 않으면 scp가 디렉토리를 생성할 수 있습니까?

디렉토리가 존재하지 않으면 scp가 디렉토리를 생성할 수 있습니까?

파일을 업로드 하는데 사용하고 싶은데 scp대상 디렉토리가 존재하지 않는 경우가 있습니다.

폴더가 자동으로 생성될 수 있나요? 그렇다면 어떻게 해야 할까요? 그렇지 않다면 어떤 대안을 시도해 볼 수 있나요?

답변1

그건 많은 것 중 하나야rsync할수있다.

rsync지난 몇 년 동안 출시된 버전을 사용하는 경우 기본 명령 구문은 다음과 유사합니다 scp

$ rsync -r local-dir remote-machine:path

그러면 local-source내용이 $HOME/path/local-dir원격 시스템에 복사되어 필요한 디렉터리가 생성됩니다.

rsync실제로 이것이 귀하의 특정 상황에 적용되는지 여부에 영향을 미칠 수 있는 몇 가지 제한 사항이 있습니다. 예를 들어 누락된 원격 디렉터리의 여러 수준을 생성하지 않고 원격에 최대 하나의 누락된 수준만 생성합니다. rsync명령 앞에 다음과 같은 내용을 추가하면 이 문제를 쉽게 해결할 수 있습니다 .

$ ssh remote-host 'mkdir -p foo/bar/qux'

$HOME/foo/bar/qux트리가 존재하지 않으면 트리가 생성됩니다. 불평하지도 않고 나쁜 일을 하지도 않을 것입니다.하다이미 존재 함.

rsync때로는 다른 놀라운 행동이 있습니다. 기본적으로 복사하려는 내용을 파악하도록 요청하는 것이며 추측이 가정과 일치하지 않을 수 있습니다. 한번 해보고 확인해 보세요. 예상대로 작동하지 않고 이유를 이해할 수 없는 경우 로컬 및 원격 디렉터리 설정에 대한 자세한 내용을 게시하고 시도한 명령을 제공하십시오.


각주:

  1. rsync2.6.0(2004년 1월 1일) 이전에는 이 플래그 가 기본적으로 더 이상 사용되지 않으므로 -e ssh이와 같이 작동해야 했습니다.scpRSH 프로토콜.

  2. scp일부 로고를 공유 rsync하지만 약간만 겹치는 경우도 있습니다.

  3. SSH전송 프로토콜 로 사용되는 경우에는 rsync동일한 기본값이 사용됩니다. 따라서 와 마찬가지로 scp기본적으로 로컬 사용자와 이름이 같은 사용자가 원격 시스템에 있다고 가정합니다.

답변2

파일 세트를 복사하는 경우에는 그렇지 않습니다. 디렉토리와 그 아래의 모든 항목을 복사하려면 그렇습니다. 다음 명령을 내리세요:

$ scp -pr /source/directory user@host:the/target/directory

에 존재하지 않으면 directory생성됩니다. 하지만 그렇지 않은 경우 문제가 발생할 수 있습니다. 이 상황의 정확한 결과는 기억나지 않지만 예상되는 실패에 대비하세요.~/the/targethost~the/targetscp

답변3

내가 아는 한, scp그것은 스스로 그렇게 하지 않습니다. 그러나 ssh대상 컴퓨터에 디렉터리를 만든 다음 복사하면 됩니다. 그것은 다음과 같습니다:

ssh user@host "mkdir -p /target/path/" &&
    scp /path/to/source user@host:/target/path/

전체 디렉토리를 복사하는 경우 위의 작업이 필요하지 않습니다. 예를 들어 디렉터리를 ~/foo원격 호스트에 복사하려면 -r(재귀) 플래그를 사용할 수 있습니다.

scp -r ~/foo/ user@host:~/

~/foo그러면 원격 호스트에 대상 디렉터리가 생성됩니다. 그러나 상위 디렉터리를 생성할 수는 없습니다. scp ~/foo user@host:~/bar/foo대상 디렉터리가 없으면 실패합니다 bar. 그럼에도 불구하고 -r단일 파일을 복사하는 경우 이 플래그는 대상 디렉터리를 만드는 데 도움이 되지 않습니다.

답변4

그래 넌 할수있어. scp의 매뉴얼 페이지에 따르면:

manscp

-r 전체 디렉토리를 반복적으로 복사합니다. scp는 트리 순회에서 발견된 기호 링크를 따릅니다.

....

관련 정보