scp를 사용하여 디렉토리에서 원격 디렉토리로 모든 파일을 복사하는 방법은 무엇입니까?

내 목표는 다음에서 모든 파일 만 복사하는 것입니다. ~ / local_dir [email protected] / var / www / html / target_dir scp 를 사용하고 local_dir에 local_dir 카테고리를 생성하지 않습니다.

/var/www/html/target_dir/files.. 

아님

/var/www/html/target_dir/local_dir/files.. -r 매개 변수 사용시

댓글

  • scp * [email protected]:/var/www/html/target_dir이 원하는 작업을 수행하지 않습니까? 그렇다면 iv id = “e8ef1b4e01″에서 수행하려는 작업에 대한 자세한 내용을 수정 하세요. ' >

지금까지 시도했습니다.

  • / 추가. 더 이상 작동하지 않습니다. 추가 정보
  • 답변

    scp -r 인수가 있습니다. 따라서 다음을 사용해보십시오.

    $ scp -r ~/local_dir [email protected]:/var/www/html/target_dir 

    -r 인수는 cp의 -r 인수와 동일하게 작동하며 전체 폴더와 모든 파일 및 하위 디렉터리를 전송합니다. 내부.

    댓글

    • 명령이 / var / www / html / target_dir에 local_dir 디렉토리를 생성했습니다. 제 목표는 파일 만 복사하는 것입니다.
    • 죄송합니다. 그런 다음 명령을 반복하되 다음과 같이하십시오. $ scp -r ~/local_dir [email protected]:/var/www/html/ 그런 다음 필요한 경우 새 디렉토리 이름을 바꿉니다.
    • 또는 $ scp -r ~/local_dir/* [email protected]:/var/www/html/target_dir 보트에 떠 있습니다.
    • 와일드 카드 *를 점 .으로 변경하면 ' 디렉토리 자체를 복사하지 않고 디렉토리 내용 (도트 파일 포함)을 복사합니다. scp -pr ~/local_dir/. [email protected]:/path/to/target_dir
    • 안타깝게도 . 사용은 잘못 구현 된 scp " bugfix " (< superuser.com/questions/1403473/scp-error-unexpected-filename/ … ). rsync는 작동하는 대안입니다.

    답변

    목표는 local_dir의 모든 파일을 * 와일드 카드로 전송하는 것입니다.

    $ scp ~/local_dir/* [email protected]:/var/www/html/target_dir 

    -r 옵션은 “재귀 적”을 의미하므로 “전체 디렉토리 또는 여러 디렉토리를 전송하려고 할 때 작성해야합니다.

    From man scp :

    -r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal. 

    따라서 , 마지막 예제는 파일 만 전송하지만 -r 옵션을 설정하면 파일과 디렉토리가 전송됩니다.

    댓글

    • 1+ 정답을 얻으려면 수락 된 답변의 댓글을 읽어야하지만이 댓글은 직접 설명합니다.

    답변

    다음에 /. 추가 소스 디렉토리는 디렉토리 자체 대신 내용을 전송합니다. 와일드 카드 솔루션과 달리 여기에는 숨겨진 파일도 포함됩니다.

    $ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir 

    이 솔루션에 대한 크레딧은 roaima에 있지만 다음과 같이 게시해야한다고 생각했습니다. 댓글뿐 아니라 실제 답변입니다.

    댓글

    • 안타깝게도이 솔루션은 제대로 구현되지 않은 " bugfix " (< superuser.com/questions/1403473/scp-error-unexpected-filename/ … ).

    답변

    다음 단계를 따르세요.

    1. 디렉터리 복사 local_dir :

      scp -r ~/local_dir [email protected] /var/www/html/target_dir 
    2. local_dir local_dir 디렉토리 자체가 아닌 div> :

      scp -r ~/local_dir/* [email protected] /var/www/html/target_dir 
    3. 다음을 사용하지 마십시오. scp -r ~/local_dir/. [email protected] /var/www/html/target_dir 오류가 발생합니다 (방금 테스트하고 다음 오류를 수신함).

      scp: error: unexpected filename: . 

    댓글

    • 또한 예기치 않은 파일 이름 오류가 발생합니다. 그러나 와일드 카드를 사용하는 것은 작동하지 않습니다. 이는 디렉토리에 와일드 카드가 확장 될 때 명령에 대한 문자 제한을 초과하는 파일이 너무 많기 때문입니다. macOS
    • @RichardKiefer :?와 같은 와일드 카드를 사용할 수 있습니다. *를 사용하여 검색 결과를 더 분리 한 다음 scp에 전달합니다. 이 링크를 시도해보십시오. 도움이 될 수 있습니다. 와일드 카드
    • Syed에게 감사합니다.하지만 제 요점은 실제로 폴더의 모든 요소를 타겟팅하고 싶다는 것입니다. , 필터링하지 않습니다. 그리고 내 디렉토리에 너무 많으면 와일드 카드가 작동하지 않습니다.
    • @RichardKiefer : Richard에게 사과드립니다. 모든 파일을 복사하려면 작은 bash 스크립트를 사용할 수 있습니다. 사용 : ls -l | awk '{print $9}' 모든 출력 (모든 파일 이름)을 txt 파일로 리디렉션합니다. 한 번에 한 줄씩 txt 파일을 읽고 해당 입력을 scp와 함께 사용하여 파일을 복사합니다. input=/home/user/filename.txt while IFS= read -r line

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다