파일 이름에 특정 문자열이 포함된 원격 SSH 복사 파일

파일 이름에 특정 문자열이 포함된 원격 SSH 복사 파일

두 개의 원격 서버가 있습니다. 현재 연결되어 있는 것과 여러 파일을 복사하려는 것 ( 10.10.0.13)

다양한 형식의 디렉터리에 일련의 파일을 복사해야 합니다.

/opt/DR/output/1/a/csva1file.csv
/opt/DR/output/1/a/csva2file.csv
/opt/DR/output/1/b/csvb1file.csv
/opt/DR/output/1/b/csvb2file.csv
/opt/DR/output/1/b/csvb3file.csv
/opt/DR/output/1/b/csvb4file.csv
/opt/DR/output/1/c/csvc1file.csv
...
/opt/DR/output/30/a/csva1file.csv

이는 폴더의 경우 output/1에도 마찬가지입니다 output/40. 내부의 모든 폴더는 동일하며 내부의 모든 파일 이름에는 유사한 문자열이 포함되어 있지만 해당 폴더에 따라 약간 다릅니다.

a1모든 디렉터리에 포함된 모든 파일을 원격 서버의 폴더에 복사하고 싶습니다 .

[email protected]:/data/landing/a/a1/

마찬가지로 모든 파일 등에 대해 이 작업을 수행 b1하고 원격 서버의 해당 위치에 c1복사하고 싶습니다.c2

여러 줄의 코드를 작성하지 않고서는 이 작업을 수행할 수 있는 방법을 찾을 수 없는 것 같습니다.

나는 열심히 노력했다

cd /opt/DR/output/1/a/
scp -r -v *a1* [email protected]:/data/landing/a/a1/

*a1*이것은 작동하지만 하나씩 복사할 필요 없이 모든 csv 파일을 복사하고 싶습니다 .

와일드카드를 살펴봤지만 제 경우에는 작동하지 않을 것 같습니다. 나는 또한 paramiko/globPython을 사용하는 것을 고려했지만 작동하도록 할 수 없습니다. 이상적으로는 bash 쉘 스크립트를 사용하여 이를 수행하고 싶지만 Python 스크립트도 작동합니다.

이것이 의미가 있기를 바랍니다. 어떤 도움이라도 대단히 감사하겠습니다. SFTP또는 를 통해 복사 할 수 있습니다 SCP.

답변1

다음은 귀하의 작업에 적합한 간단한 bash 스크립트입니다. 로컬 시스템 디렉터리의 BASE 문자열을 바꾸고 원격 시스템의 SSH_BASE 문자열을 바꾸면 됩니다. 이게 도움이 되길 바란다.2에 중첩됨

 #!/usr/bin/env bash

BASE="/opt/DR/output"
SSH_BASE="/data/landing"
for i in `ls ${BASE}`
do
    if [ -d ${BASE}/${i} ]; then
        for j in `ls ${BASE}/${i}`
        do
            if [ -d ${BASE}/${i}/${j} ]; then 
             ssh [email protected] "mkdir -p ${SSH_BASE}/${i}/${j}"
             scp ${BASE}/${i}/${j}/*.* [email protected]:${SSH_BASE}/${i}/${j}/
            fi      
        done
    fi
done

관련 정보