원격 디렉터리 모음에서 선택적으로 복사

원격 디렉터리 모음에서 선택적으로 복사

다음과 같이 번호가 매겨진 디렉토리가 많은 원격 시스템이 있습니다.

dir1 dir2 dir3 ... dir40

각각에는 번호가 매겨진 여러 개의 파일이 포함되어 있습니다.

file1 file2 file3 ... file2530

각 디렉토리에서 선택한 범위의 파일만 복사하고 싶습니다. 파일 이름은 각 디렉터리에서 동일하므로 로컬 컴퓨터에서 디렉터리 계층 구조를 다시 만들고 싶습니다. 하지만 내가 원하지 않기 때문에모든scp -r파일을 사용하면 디렉토리의 모든 파일을 복사 할 수는 없습니다 .

원격 시스템에서는 SSH 키를 사용하여 자동 연결을 설정할 수 없으므로 원격 복사 명령을 반복적으로 호출하지 않는 방법을 선호합니다. 파일도 크기 때문에 전체를 복사하고 원하지 않는 파일을 삭제하고 rm확장을 지원하고 싶지 않습니다.

디렉터리 구조를 유지하면서 해당 디렉터리의 모든 파일을 복사하지 않고 원격 시스템에서 해당 파일의 상위 디렉터리와 함께 파일 세트를 복사하려면 어떻게 해야 합니까?

답변1

rsync원격으로 단 하나의 SSH를 수행하고 전체 파일 목록이나 복사하거나 복사하지 않을 파일의 glob 패턴 목록을 제공하는 를 사용할 수 있습니다 . 예를 들어,

rsync -navR --exclude='*-[4-9]?.out' --exclude='*-3[3-9].out' --exclude='*-???*.out' myremote:'dir*' mylocaldir

file-40.out이는 40에서 99까지, file-33.out39 이상에서 2개의 문자로 구성된 파일 이름을 제외합니다 file-100.out. -n전송될 이름 목록을 수집하려면 표시된 옵션 과 함께 명령을 실행하고 , 괜찮다면 옵션을 제거하여 실제로 복사를 수행하십시오.

참고 로 glob 패턴에서는 rsync중괄호를 지원하지 않습니다 . {}복사할 파일을 지정하는 다른 방법은 제외 패턴이 얼마나 특이한지에 따라 다르지만, 가장 확실한 방법은 -n제외 패턴을 사용하지 않고 전체 이름 목록을 가져온 다음 이 목록을 편집하여 --files-from파일 목록으로 제공하는 것입니다. 또한 dir*원격 대상에서 제거해야 합니다 .

rsync -av --files-from=list  myremote: mylocaldir

관련 정보