bash 스크립트를 통해 대소 문자를 알 수없는 파일을 scp로 복사하는 방법

jc__

NTFS 파일 시스템을 사용하는 많은 컴퓨터의 백업이 포함 된 디렉토리가 있습니다.

/backup/REP1/database
/backup/REP2/database

이제 백업 파일 서버에서 데이터베이스 서버로 scp하고 싶습니다. 둘 다 Ubuntu 14를 실행 중입니다.

백업 디렉터리 안에는 대소 문자가 모두 같지는 않지만 이름이 같은 Visual FoxPro 파일이 있습니다. scp를 원하지 않는 다른 파일이 백업 디렉토리에 있습니다.

/backup/REP1/database/usersupport.DBF
/backup/REP1/database/System.dbf

/backup/REP2/database/UserSupport.dbf
/backup/REP2/database/system.dbf

내 bash 스크립트에서 2 개의 루프를 사용하여 원격 경로와 파일 이름을 만듭니다.

computer_list=(REP1 REP2 REP3 REP4 REP5 REP6 REP7 REP8 REP9 REP10 REP11 REP12 REP13 REP14 REP15 REP16)
file_list=(usersupport.cdx usersupport.dbf usersupport.fpt system.dbf)

  for computer_name in ${computer_list[@]}; do
        ## delete working dir
        delete_working_dir
        for file_name in ${file_list[@]}; do
            remote_file=${remote_path}${computer_name}/${dow}/CustomerData/system/${file_name}
            local_file=${working_directory}${file_name}
            #echo $remote_file
            echo $local_file
            # scp -i $ID $USER@$HOST:$remote_file $local_file > /dev/null 2>&1
            scp -i $ID $USER@$HOST:$remote_file $local_file
            # change databse file permissions
            chmod 0777 ${local_file}
        done
        # process mysql
        process_mysql
        ## delete working dir
        delete_working_dir

done

대소 문자가 같지 않으면 scp 명령은 소스 파일을 복사하지 않습니다.

대소 문자에 관계없이 소스 파일을 얻는 정확하고 쉬운 방법은 무엇입니까?

나는 시도 shopt -s nocasematch했지만 가지 않았다 .

원격 파일 이름에 대체를 사용할 수 있습니까? [:lower]

사용자 는 이것을 사용하므로 scp -B -p ${Auser}@${aSrcHOST}:${aSrcDIR}/*.[Oo][Kk] $aTgtDIR대체가 작동 할 것이라고 생각합니다. 구문을 잘 모르겠습니다.

제프 샬러

내가 접근하는 방법은 다음과 같습니다.

  1. 요구 사항에 따라 파일 이름에 대한 glob을 생성하는 함수를 만듭니다 (모든 문자가 대문자 또는 소문자로 표시 될 수 있음).

  2. scpglob을 원격 파일 이름으로 사용하고 이미 소문자로 된 파일 이름을 로컬 파일 이름으로 사용 하도록 루프를 수정합니다 .

이것은 당신이 현재하는 것과 같이 파일 당, 컴퓨터 당 동일한 하나의 scp 연결을 생성 할 것입니다. 그러나 globbing은 그것이 어떻게 "케이스"되든 상관없이 원격 파일을 선택할 것입니다.

다음은 (bash 관련) 함수입니다.

function ul {
  # for each character in $1, convert it to upper and lower case, then
  # enclose it in [ ]
  out=
  for (( i=0; i< ${#1}; i++ ))
  do
    c=${1:$i:1}
    if [[ "$c" =~ ^[[:alpha:]]$ ]]
    then
      uc=${c^}
      lc=${c,}
      out="${out}[${uc}${lc}]"
    else
      out="${out}${c}"
    fi
  done
  printf "%s" "$out"
}

그래서 당신은 그것을 동일한 스크립트에 넣거나 소싱되는 공통 영역에 넣습니다.

사용법을 설명하려면 :

$ g=$(ul system.dbf)
$ echo "$g"
[Ss][Yy][Ss][Tt][Ee][Mm].[Dd][Bb][Ff]

2 단계에서 내부 루프를 수정 한 방법은 다음과 같습니다.

    for file_name in ${file_list[@]}; do
        g=$(ul "$file_name")
        remote_file=${remote_path}${computer_name}/${dow}/CustomerData/system/${g}
        local_file=${working_directory}${file_name}
        echo $local_file
        scp -i $ID $USER@$HOST:$remote_file $local_file
        chmod 0777 ${local_file}
    done

나는 추가 g=할당뿐만 아니라 (줄의 끝) remote_file을 지정합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

bash 스크립트를 통해 비밀번호로 저장소를 복제하는 방법

분류에서Dev

자바 스크립트에 대한 문자열을 통해 스트라이크를 수행하는 방법

분류에서Dev

특정 파일을 제외한 모든 파일을 삭제하는 방법 (디렉토리의 많은 폴더에 대해)? bash 스크립트를 통해

분류에서Dev

Bash 스크립트를 통해 해시되는 특정 파일을 제외하는 방법

분류에서Dev

자바 스크립트를 통해 한 파일에서 다른 파일로 PHP 값을 전달하는 방법

분류에서Dev

Dockerfile을 통해 bash 스크립트에 인수를 전달하는 방법

분류에서Dev

절대 경로를 통해 bash 스크립트를 실행하는 방법은 무엇입니까?

분류에서Dev

여러 SSH를 통해 로컬 bash 스크립트를 실행하는 방법

분류에서Dev

bash 설치 스크립트를 루트로 실행-일반 사용자의 파일을 처리하는 방법?

분류에서Dev

대소 문자를 구분하지 않는 방식으로 파일을 HDFS에 복사하는 방법

분류에서Dev

bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

분류에서Dev

bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

분류에서Dev

bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

분류에서Dev

쉘 스크립트를 통해 파일에서 문자열을 제거하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트를 통해 파일이 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

Cloudformation : Cloudformation 스크립트를 통해 문자열을 UserData로 전달하는 방법은 무엇입니까?

분류에서Dev

'scp'를 사용하여 게이트웨이를 통해 내 파일을 대상 위치로 직접 보내는 방법은 무엇입니까?

분류에서Dev

스크립트 파일을 통해 디렉토리를 변경하는 방법

분류에서Dev

알려진 Delimeter를 사용하여 알 수없는 출력을 구문 분석하는 Linux Bash 스크립트

분류에서Dev

`.`을 통해서도 sh 스크립트의 자체 경로를 얻는 방법

분류에서Dev

Bash 스크립트 인수를 통해 "일대일"반복 수행

분류에서Dev

알림을 보내는 bash 스크립트에 대한 감시 프로세스를 시작하는 방법은 무엇입니까? (우분투 13.04)

분류에서Dev

Oracle에서 스크립트를 통해 새 테이블을 만들 때 열 이름을 대문자로 변경하는 방법은 무엇입니까?

분류에서Dev

임의의 16 진수 색상을 위해 자바 스크립트 코드를 bash로 변환하는 방법

분류에서Dev

bteq 스크립트를 통해 teradata의 blob 열을 CSV 파일로 내보내는 방법이 있습니까?

분류에서Dev

PowerPoint PPTM에서 VBA 스크립트를 통해 CSV 파일을 여는 방법

분류에서Dev

원격 서버에 파일을 scp하는 동안 시간 초과를 추가하는 방법 및 예상 스크립트를 통해 sudo에 대한 권한이없는 경우

분류에서Dev

변수를 통해 bash 스크립트에서 날짜 명령으로 작업하는 방법

분류에서Dev

scp 또는 sftp를 통해 원격 파일을 stdout으로 파이프하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    bash 스크립트를 통해 비밀번호로 저장소를 복제하는 방법

  2. 2

    자바 스크립트에 대한 문자열을 통해 스트라이크를 수행하는 방법

  3. 3

    특정 파일을 제외한 모든 파일을 삭제하는 방법 (디렉토리의 많은 폴더에 대해)? bash 스크립트를 통해

  4. 4

    Bash 스크립트를 통해 해시되는 특정 파일을 제외하는 방법

  5. 5

    자바 스크립트를 통해 한 파일에서 다른 파일로 PHP 값을 전달하는 방법

  6. 6

    Dockerfile을 통해 bash 스크립트에 인수를 전달하는 방법

  7. 7

    절대 경로를 통해 bash 스크립트를 실행하는 방법은 무엇입니까?

  8. 8

    여러 SSH를 통해 로컬 bash 스크립트를 실행하는 방법

  9. 9

    bash 설치 스크립트를 루트로 실행-일반 사용자의 파일을 처리하는 방법?

  10. 10

    대소 문자를 구분하지 않는 방식으로 파일을 HDFS에 복사하는 방법

  11. 11

    bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

  12. 12

    bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

  13. 13

    bash 스크립트를 통해 사용자 계정을 추가하는 올바른 방법

  14. 14

    쉘 스크립트를 통해 파일에서 문자열을 제거하는 방법은 무엇입니까?

  15. 15

    bash 스크립트를 통해 파일이 있는지 확인하는 방법은 무엇입니까?

  16. 16

    Cloudformation : Cloudformation 스크립트를 통해 문자열을 UserData로 전달하는 방법은 무엇입니까?

  17. 17

    'scp'를 사용하여 게이트웨이를 통해 내 파일을 대상 위치로 직접 보내는 방법은 무엇입니까?

  18. 18

    스크립트 파일을 통해 디렉토리를 변경하는 방법

  19. 19

    알려진 Delimeter를 사용하여 알 수없는 출력을 구문 분석하는 Linux Bash 스크립트

  20. 20

    `.`을 통해서도 sh 스크립트의 자체 경로를 얻는 방법

  21. 21

    Bash 스크립트 인수를 통해 "일대일"반복 수행

  22. 22

    알림을 보내는 bash 스크립트에 대한 감시 프로세스를 시작하는 방법은 무엇입니까? (우분투 13.04)

  23. 23

    Oracle에서 스크립트를 통해 새 테이블을 만들 때 열 이름을 대문자로 변경하는 방법은 무엇입니까?

  24. 24

    임의의 16 진수 색상을 위해 자바 스크립트 코드를 bash로 변환하는 방법

  25. 25

    bteq 스크립트를 통해 teradata의 blob 열을 CSV 파일로 내보내는 방법이 있습니까?

  26. 26

    PowerPoint PPTM에서 VBA 스크립트를 통해 CSV 파일을 여는 방법

  27. 27

    원격 서버에 파일을 scp하는 동안 시간 초과를 추가하는 방법 및 예상 스크립트를 통해 sudo에 대한 권한이없는 경우

  28. 28

    변수를 통해 bash 스크립트에서 날짜 명령으로 작업하는 방법

  29. 29

    scp 또는 sftp를 통해 원격 파일을 stdout으로 파이프하는 방법은 무엇입니까?

뜨겁다태그

보관