Openwrt : /overlay 자동 보관 스크립트?

Extroot 를 사용한 경우, /overlay 만 외부에 보관한다면 그 저장매체에 문제가 생긴다하더라도 큰 어려움없이 원상 복구가 가능하다.

내가 생각한 방식은, ‘cron(crontab) 사용, Nfs 서버에 해당 내용을 복사’ 였는데, 여기서 한가지 문제가 생겼다.

  • ping 으로 서버가 켜져있는지 확인한 후, 켜져있지 않다면 wake on lan 으로 먼저 켠다.
  • 잠시 기다린 후(서버가 켜지고 제대로 작동할 때까지), nfs 디렉토리를 마운트 한 뒤 파일을 복사한다.

이렇게 간단한 작업이었는데, ‘복사’ 부분에서 문제가 생겼다. /overlay 전체를 복사하려 했으므로 관리자 권한은 필수였다. 그런데, root 로는 nfs 디렉토리에 ‘쓰기’가 되지 않는다. 이건, 서버의 /etc/exports 에서 설정한 ‘root squash‘ 때문이다.

root 가 root 로 작동하기 원한다면, ‘no root squash’ 로 서버 설정을 바꿔주면 된다.
그게 어렵다면, sudo --user 로 일반 사용자로 바꾼 후에 복사를 해줘야 한다.

먼저 tar 로 묶고, 나중에 복사한다.

tar --exclude="/overlay/temp" --exclude="/overlay/lost+found" -cvp --file /overlay/temp/overlay_backup_${CURR_DATE}.tar /overlay

sudo --user=#1000 rsync /overlay/temp/overlay_backup_${CURR_DATE}.tar /nfs-directory

여기서 신경쓴 부분 하나. sudo --user=userid 형식이 아니고 UID 를 썼다. 다른 곳(어디???)에서도 잘 쓸 수 있도록 사용자명을 쓰지 않고 번호(UID)를 사용했다.
번호를 사용하려면, –user=#번호 형식을 써야한다고 한다.

ssh 와 rsync 를 조합해도 같은 효과를 낼 수는 있는데, 그러면 pass phrase 문제가 생긴다. 이를 해결하려면 또 복잡한 작업을 해야하므로, 그냥 간단한 방법을 택했다.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.