파일을 업로드 하는데 사용하고 싶은데 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
때로는 다른 놀라운 행동이 있습니다. 기본적으로 복사하려는 내용을 파악하도록 요청하는 것이며 추측이 가정과 일치하지 않을 수 있습니다. 한번 해보고 확인해 보세요. 예상대로 작동하지 않고 이유를 이해할 수 없는 경우 로컬 및 원격 디렉터리 설정에 대한 자세한 내용을 게시하고 시도한 명령을 제공하십시오.
각주:
rsync
2.6.0(2004년 1월 1일) 이전에는 이 플래그 가 기본적으로 더 이상 사용되지 않으므로-e ssh
이와 같이 작동해야 했습니다.scp
RSH 프로토콜.scp
일부 로고를 공유rsync
하지만 약간만 겹치는 경우도 있습니다.SSH
전송 프로토콜 로 사용되는 경우에는rsync
동일한 기본값이 사용됩니다. 따라서 와 마찬가지로scp
기본적으로 로컬 사용자와 이름이 같은 사용자가 원격 시스템에 있다고 가정합니다.
답변2
파일 세트를 복사하는 경우에는 그렇지 않습니다. 디렉토리와 그 아래의 모든 항목을 복사하려면 그렇습니다. 다음 명령을 내리세요:
$ scp -pr /source/directory user@host:the/target/directory
에 존재하지 않으면 directory
생성됩니다. 하지만 그렇지 않은 경우 문제가 발생할 수 있습니다. 이 상황의 정확한 결과는 기억나지 않지만 예상되는 실패에 대비하세요.~/the/target
host
~the/target
scp
답변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는 트리 순회에서 발견된 기호 링크를 따릅니다.
....