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

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

다음과 같이 큰 번호의 디렉토리가 있는 원격 컴퓨터가 있습니다.

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.out40부터 99까지, file-33.out39 이상까지 2글자 와 같은 파일 이름은 제외됩니다 file-100.out. -n전송될 이름 목록을 수집하려면 표시된 옵션과 함께 명령을 실행하십시오. 가능하면 실제로 복사를 수행하려면 옵션을 제거하십시오.

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

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

관련 정보