반응형
Rsync를 사용한 자동백업
Rsync를 사용할 때 과거변동 기록을 보관하고 새로 파일을 동기화 할 수 있다.
하지만 파일이 많을 경우 전체파일을 전부 Rsync 하는것보다 변동된 파일이 있는것을 먼저 확인하고
Rsync를 하는것이 더욱 효율적이다.
이를 위해 diff로 Rsync를 하기전 두파일의 차이점을 먼저 파악하고 Rsync를 사용하여 동기화 해준다.
파일의 차이점이 발생할 경우 수
- 전제조건 1 : 디렉토리와 디렉토리을 비교한다
- 전제조건 2 : 디렉토리안에는 디렉토리, 일반파일이 존재한다.
- 전제조건 3 : 동기화할 필요가 없는 디렉토리/파일은 동기화하지 않는다.
스크립트 구성을 위한 명령어
source_path : 원본경로
des_path : 동기화할 경로
- 전체 파일의 수정/추가 사항이 있는지 확인하기
diff -r source_path des_path -q -x "*.*.*"
명령어 해석 : -r 하위 디렉토리까지 파악하겠다는 옵션, -q 간단하게 출력, -x ""사이 정규식의 포함되는 파일은 제외하는 옵션. -x를 쓰는 이유는 Rsync의 백업 옵션을 사용할 때 백업파일은 diff 대상에서 제외하기 위하여 사용하는 옵션.
- 수정파일 확인하기
diff -r source_path des_path -q | grep "Files"
명령어 해석 : grep Files 를 걸어놓은 이유는 수정된 파일이 검출될 경우 diff 에서는 "Files 원복 백업 differ" 형태로 출력.
새로 만들어진 폴더 확인
diff -r source_path des_path -q | grep -v "des_path:" | cut -d ":" -f 1 | cut -d " " -f 3 #디렉토리 확인 diff -r source_path des_path -q | grep -v "des_path:" | cut -d " " -f 4 #파일 확인
```
명령어 해석 : 새로 만들어진 폴더를 확인할 경우 디렉토리와 파일을 구분하여 저장해야함. 이유는 새로운 디렉토리에 depth를 모르기때문에 따로따로 분류에서 이어붙여어야함. grep -v의 경우 백업경로의 결과는 제외하는 옵션이다. 이유는 원본에서의 새로만들어진 파일만 백업으로 저장하면되고 백업에서 만들어진 파일의 경우 원본으로 이중저장되면 안되기 때문이다.
위 사항들을 이용해 자동화 쉘스크립트를 만들어보자
반응형
'리눅스' 카테고리의 다른 글
[리눅스] DRBD 구성하기 - 1 (0) | 2023.08.09 |
---|---|
[Rsync 자동화] 파일 백업 자동화 - 2 (0) | 2023.08.04 |
[리눅스] diff 파일비교 명령어 (0) | 2023.08.03 |
[Rsync] 리눅스 파일 전송 및 동기화 (0) | 2023.08.02 |
[bash] ssh pem을 이용한 파일 업로드 및 파일 권한 설정 (0) | 2023.08.01 |