내 목표는 다음에서 모든 파일 만 복사하는 것입니다. ~ / 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 -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/ … ).
답변
다음 단계를 따르세요.
-
디렉터리 복사
local_dir
:scp -r ~/local_dir [email protected] /var/www/html/target_dir
-
local_dir
local_dir
디렉토리 자체가 아닌 div> :scp -r ~/local_dir/* [email protected] /var/www/html/target_dir
-
다음을 사용하지 마십시오.
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
scp * [email protected]:/var/www/html/target_dir
이 원하는 작업을 수행하지 않습니까? 그렇다면 iv id = “e8ef1b4e01″에서 수행하려는 작업에 대한 자세한 내용을 수정 하세요. ' >