
저는 정말 마음에 들지 않는 다소 투박한 솔루션을 만들었고 이를 개선하고 싶습니다. 문제는 이것이다:
데이터베이스를 유지 관리하는 헤드리스 서버가 있고 /root/.local/somedir
해당 파일을 원격 서버에 저장하고 싶습니다. 내가 가진 가장 큰 문제는 그것이 루트 계정이라는 것입니다.
내 현재 솔루션:
루트 디렉터리에서:
- 각 기간*은 파일을 해시하고 로그에 저장하는 cron 작업을 실행합니다.
- 동일한 cron 작업은
rsync
파일(해시가 변경된 경우)을 동일한 시스템의 사용자 계정으로 보냅니다.
사용자 계정에서:
- 가끔씩 cron 작업을 실행하고
rsync
원격 컴퓨터로 파일을 보냅니다 .
* 테스트 시 시간은 2분 간격으로 설정되어 있으며 이후 매일, 6시간 또는 기타 시간으로 변경됩니다.
루트 예약 작업:
#!/bin/sh
dt=$(date '+%Y-%m-%d %H:%M');
d2=$(date '+%Y-%m-%d-%H-%M');
fn='/root/hash.log'
bk='/root/.local/share/file-to-backup'
b2="file-to-backup.$d2.bk"
hash_last=$(tail -1 hash.log | awk '{split($0,a," "); print a[3]}')
hash_now=$(md5sum $bk | awk '{split($0,a," "); print a[1]}')
if [ "$hash_now" != "$hash_last" ]; then
echo "$dt $hash_now" >> $fn
rsync -og --chown=user:user $bk /home/user/$b2
elif [ "$1" = "force" ]; then
rsync -og --chown=user:user $bk /home/user/$b2
fi
사용자 크론:
(사용자에게 SSH 키 설정이 있음)
#!/bin/bash
rsync --remove-source-files file-to* server:.
내가 보는 문제는 다음과 같습니다.
이것은 효과가 있지만 나에게는 투박한 것 같습니다.
이상적으로는 파일이 실제로 있는 루트 사용자 계정으로 원격 백업을 수행하고 싶습니다.
문제는 루트 계정에 파일이 있고 원격 서버와 비밀번호 없는 동기화를 하고 싶다는 것입니다.생각하다루트 계정에 대한 개인/공개 키를 생성하면 안 됩니다.
이 백업을 어떻게 처리하는 것이 가장 좋은지 잘 모르겠습니다.
답변1
루트 계정에 대한 개인/공개 키를 생성해야 한다고 생각하지 않습니다.
스스로에게 물어보세요. 왜 이것이 루트 계정에 있습니까? 기존 서버의 거의 모든 데몬은 루트가 아닌 사용자로 실행됩니다. 창작에 관심이 있으시다면고객루트 사용자에게 인증서를 제공합니다(이는 인증서를 기본 위치에 저장하더라도 상자에 로그인하도록 허용하는 것과 완전히 다릅니다). 루트로 작업을 실행하는 것에 대해 더 걱정해야 합니다.
그 질문은 건너뛰고(물론 생각해 보시길 권합니다) 곧바로 다음 질문으로 넘어가겠습니다. 정말 그럴 이유가 없습니다.아니요클라이언트 SSH 인증서를 생성하고 파일을 백업 서버에 직접 재동기화합니다 root
. 원하는 이름으로 rsa 키를 저장할 수 있습니다. rsync를 실행할 때 지정할 수 있습니다. 추가 액세스 권한을 부여하지 않습니다.입력하다서버(물론 헤드리스이므로 동의함) 대신 키를 저장하도록 허용합니다.존재하다서버(/root/.ssh가 가장 안전한 장소)는 이 파일을 다음과 같이 복사합니다.루트가 아닌서버가 백업 머신에 있습니다.
이것은 효과가 있지만 나에게는 투박한 것 같습니다.
네, 전적으로 동의합니다. rsync
파일을 동기화해야 하는지 알 수 있으므로 기본적으로 여기서 수행하는 모든 작업에는 해당 파일을 루트가 아닌 위치에 복사할 수 있는 옵션이 제공됩니다. /root
처음부터 언급할 만한 설득력 있는 이유가 없다는 점에 유의하세요 . 일반적으로 디렉터리는 다른 사람이 읽을 수 없으므로 해당 하위 디렉터리에 액세스할 수 없습니다.~해야 한다이는 루트가 아닌 사용자에게도 허용됩니다. 의도한 용도와 일치하는 권한을 가진 다른 디렉토리에 저장하는 것은 어떨까요? 가장 간단한 경우에는 그룹이 파일을 읽을 수 있도록 허용하고 백업 사용자를 해당 그룹에 배치합니다. 또는 루트가 백업을 수행하도록 하십시오. 또는 처음부터 루트로 실행하지 마십시오. 이 파일과 디렉터리 경로를 루트로 소유하기로 결정하고 루트로만 읽기만 하며 루트가 이를 백업하는 것을 원하지 않으므로 이것이 매우 다루기 힘들게 됩니다.