
scp
원격 서버에서 로컬 컴퓨터로 약 115,000개의 json 파일이 포함된 큰 폴더를 가져오고 싶습니다 .
다음과 같은 것을 사용한다고 가정해 보겠습니다.
scp username@remote:/remote_path/*.json /local_path/
그러나 이 작업을 수행하려고 하면 다음과 같은 응답을 받습니다.
argument list too long
그럼 파일을 어떻게 전송하나요?
답변1
개별 파일 대신 전체 디렉토리를 전송하는 것을 고려하십시오.
scp -r username@remote:/remote_path /local_path/
전송량이 너무 많아 .json
이름이 단일 디렉터리로 끝나는 파일만 전송하려는 경우에는 다음을 고려해 볼 수 있습니다 rsync
(전송되는 항목을 필터링하는 데 더 나은 기능이 있음).
rsync -av --include='*.json' --exclude='*' username@remote:/remote_path/ /local_path/
다른 이름은 무시하고 이름이 로 끝나는 파일만 복사합니다 .json
. 여기에는 종료 소스가 필요합니다 /
.
이 옵션을 사용하면 자세한 작업 대신 -a
파일 메타데이터(기본적으로 타임스탬프)도 전송하고 하위 디렉터리로 재귀하게 됩니다 (그러나 위의 제한 사항 rsync
이 적용됨 ).--exclude
-v
tar
세 번째 옵션은 원격 디렉터리 또는 최소한 전송하려는 파일의 아카이브를 만든 다음 scp
해당 아카이브를 로컬 시스템으로 전송하는 것입니다. 실제로 이 작업은 ssh
시뮬레이션을 통해 한 번에 수행할 수 있습니다 scp -r
.
ssh username@remote 'tar -c -f - -C /remote_path .' | tar -x -f - -C /local_path