Blog >> Linux >> Whitepapers.
rsync 활용
rsync를 이용한 conf 파일 복사 백업 동기화가 필요해 졌다.
- 단일 rsync 명령어로 여러 디렉터리 동기화
rsync의 –relative (-R) 옵션을 사용하면 원본 경로의 구조(/etc/…)를 유지하면서 한 번에 여러 디렉터리를 동기화할 수 있다.
경로 중간의 ./ 표기: –relative 사용 시 기준점 – /etc/./nginx로 지정하면 백업 경로(/home/phobe/etc/) 아래에 etc 없이 바로 nginx, httpd, ssh 디렉터리가 생성.
–chown=phobe:phobe 옵션으로 사용자 퍼미션으로 복사.
경로 중간의./는 띄어쓰기 없이/etc/./my.cnf.d처럼 한 단어로 붙여 써야 한다.
동기화할 디렉터리가 여러 개라면 띄어쓰기로 각각의 전체 경로를 구분해서 적어준다.
rsync -avhn --delete --chown=phobe:phobe -R /etc/./nginx /etc/./httpd /etc/./ssh /home/phobe/etc/
# 사전 점검 (Dry Run) : -n (--dry-run) 플래그를 넣어 삭제/변경될 대상을 미리 확인
sudo rsync -avhn --delete --chown=phobe:phobe -R /etc/./nginx /etc/./httpd /etc/./ssh /home/phobe/etc/- 목록 파일(List)을 사용한 동기화 (권장)
관리해야 할 설정 디렉터리가 많거나 정기적으로 cron 백업을 돌릴 경우 목록 파일(–files-from)을 활용하는 방식이 깔끔합니다.
동기화할 디렉터리 목록 파일 생성 (/home/phobe/backup_dirs.txt)
Plaintext
nginx
httpd
ssh
pam.d
# rsync 실행 명령어
rsync -avh --delete --chown=phobe:phobe -R --files-from=/home/phobe/backup_dirs.txt /etc/ /home/phobe/etc/-a (archive), “심볼릭 링크, 권한(Permissions), 소유권(Ownership), 타임스탬프 등 메타데이터를 유지하며 재귀적(하위 폴더 포함)으로 복사”
-v (verbose), 진행 중인 파일 작업 내역을 화면에 상세 출력
-h (human-readable), “파일 크기를 K, M, G 등 읽기 편한 단위로 출력”
–delete, 원본에서 삭제된 파일은 대상(백업본)에서도 삭제하여 완전한 동기화 상태 유지
-R (–relative), 입력된 상대 경로 구조를 그대로 유지
심볼릭 링크는 링크 자체를 파일로 유지할지, 아니면 링크가 가리키는 실제 원본 데이터를 가져와서 일반 파일로 저장할 지에 따라 처리 방식이 완전히 달라진다.
현재 사용 중인 -a 옵션에는 -l(–links)이 기본 포함되어 있어, 별도 설정을 하지 않으면 심볼릭 링크라는 연결 정보 자체만 복사 된다.
| 상황 | 추천 옵션 | 동작 방식 |
| 설정 백업 보존 (링크 유지) | 기본값 유지 (-l) | 심볼릭 링크 구조를 그대로 복제 (링크가 가리키는 대상이 백업 폴더 외부에 있으면 링크가 깨질 수 있음) |
| 완전한 파일 실물 보관 | -L (--copy-links) | 링크를 따라가서 실제 원본 파일/폴더 내용을 일반 파일로 변환하여 복사 |
| 외부로 튀는 링크만 실물 복사 | --copy-unsafe-links | 백업 폴더 외부(예: /usr, /var)를 가리키는 위험한 링크만 실물로 복사하고, 내부 링크는 유지 |
# 링크가 가리키는 실제 파일 내용까지 복사할 때 (-L)
sudo rsync -avhL --delete --chown=phobe:phobe -R /etc/./nginx /home/phobe/etc/
# 안전한 링크만 유지하고 외부 링크만 실물 복사할 때 (--copy-unsafe-links)
sudo rsync -avh --copy-unsafe-links --delete --chown=phobe:phobe -R /etc/./nginx /home/phobe/etc/
# 끊어진 링크(Broken Link) 무시하기 (--keep-dirlinks)
sudo rsync -avh --keep-dirlinks --delete --chown=phobe:phobe -R /etc/./nginx /home/phobe/etc/- 포스트 위치:
- Linux
- Whitepapers
<< 이전 페이지



