scp를 사용하여 특정 확장자를 가진 파일 복사

scp를 사용하여 특정 확장자를 가진 파일 복사

파일을 .jpg복사 하고 싶은데 복사한 폴더에 확장자가 다른 파일이 있습니다. 나는 다음을 수행하고 있습니다 :.pngscp

scp [email protected]:/folder/*.{jpg,png} .

각 확장 프로그램 유형에 대해 비밀번호를 입력하라는 요청을 받았습니다. 비밀번호를 한 번만 입력할 수 있는 방법이 있나요?

답변1

다음으로 바꾸십시오.

scp [email protected]:'/folder/*.{jpg,png}' .

작은따옴표 쌍을 참고하세요. 귀하의 경우 로컬 셸은 표현식을 평가하여 실제로 다음과 같이 변환합니다.

scp [email protected]:/folder/*.jpg [email protected]:/folder/*.png .

그래서 두 개의 비밀번호를 물었습니다. 이 솔루션에서는 한 쌍의 작은따옴표가 로컬 셸의 평가로부터 보호하므로 (원격) scp가 호출한 원격 셸이 표현식을 평가합니다.

답변2

서버 간 복사 작업에는 rsync를 사용하는 것이 가장 좋습니다.

 rsync -avzh user@remoteip:/path/*.jpg [email protected]:/path/*.png localserverpath

rsync를 사용하면 비밀번호를 한 번만 묻습니다.

또한 rsync에서는 파일을 전송할 때 대상 위치에 파일이 있는지 확인하고 원본 위치와 대상 위치의 내용이 동일한지 확인합니다.

파일이 대상 위치에도 존재하고 내용이 동일한 경우 파일은 복사되지 않습니다. 대상 위치에 존재하지 않는 파일만 복사하므로 처리 시간이 단축됩니다.

rsync는 증분 백업 도구로 자주 사용됩니다.

답변3

댓글의 누군가가 모든 하위 디렉터리에서 파일을 가져오는 방법을 물었고 AB는 이에 대한 명확한 해결책을 제공하기 위해 ssh + tar를 사용할 것을 제안했습니다.할 수 있다사용(zip 교체):

ssh user@ip_address 'cd /path/to/folder/; zip all_files.zip $(find . -name "*.png" -or -name "*.jpg")'; scp user@ip_address:/path/to/folder/all_files.zip .

참고: cd이는 압축을 풀 때 루트 디렉터리의 전체 경로가 포함된 zip 파일을 얻지 못하도록 하기 위한 것입니다.

관련 정보