
우리는 직장에서 다른 모든 서버(주로 Linux)가 백업을 보낼 Linux 백업 서버를 구성하고 있습니다. 백업의 크기는 수백 GB에 달하며 수천 개의 파일을 포함하며 그 중 99%는 매일 변경되지 않습니다.
일반적으로 이는 rsync의 완벽한 사용 사례입니다. 불행하게도 우리의 요구 사항 중 하나는 서버가 백업을 업로드할 수 있도록 백업 서버가 쓰기 전용이어야 한다는 것입니다. 그러나 해당 서버가 손상된 경우 백업에 원격으로 액세스할 수는 없습니다. 우리는 현재 쓰기 전용 모드로 작동하도록 vsftpd를 설정했는데, 매일 밤 네트워크를 통해 수백 기가바이트의 데이터를 전송해야 한다는 점을 제외하면 훌륭하게 작동합니다.
내가 아는 한, rsync는 원격 파일을 로컬 파일과 비교하기 때문에 원격 서버에 대한 읽기 및 쓰기 액세스가 필요합니다.
내 질문은: 백업 서버가 체크섬과 파일 이름을 표시할 수 있지만 실제 데이터는 표시할 수 없는 모든 모드에서 rsync를 실행할 수 있습니까? 이는 여전히 쓰기 전용 서버이지만 전체 백업 대신 차등 백업을 수행할 수 있음을 의미합니다.
답변1
네트워크 트래픽을 줄이고 싶지만 로컬 디스크 공간 낭비에 개의치 않는 경우, 새로운 해결책은 백업을 로컬로 "미러링"한 다음 rsync의 배치 모드를 사용하여 차이점을 원격으로 보내는 것입니다.
느슨하게 말하면 다음 명령을 사용하여 로컬 백업을 만들 수 있습니다.
rsync --write-batch=foo -a /src/dir/ /localcopy/dir/
이렇게 하면 모든 변경 사항이 포함된 파일과 내용을 해석하기 위해 원격으로 실행되는 한 줄짜리 스크립트가 생성됩니다 foo
. foo.sh
둘 다 원격 장치에 복사한 다음 원격 장치에서 스크립트를 실행합니다.
scp foo foo.sh remote:
ssh remote ./foo.sh /dir/
또는 원하는 경우:
ssh remote rsync --read-batch=- -a /dir/ <foo
당신은 또한 볼 수 있습니다이중성rsync의 경우 원격 데이터를 암호화하므로 데이터를 악용하려면 암호화 키도 훔쳐야 합니다.
답변2
rsync 버전에는 쓰기 전용 모드가 있습니다.2.6.3이상(구현 세부정보는 커밋 참조)7a92ded39a). 귀하의 질문에 설명된 대로 작동합니다.
에서 구성rsyncd.conf:
그냥 써
이 매개변수는 클라이언트가 파일을 다운로드할 수 있는지 여부를 결정합니다. "쓰기 전용"이 true이면 다운로드 시도가 실패합니다. "쓰기 전용"이 false인 경우 데몬 측의 파일 권한이 허용하는 한 다운로드가 가능합니다. 이 매개변수는 기본적으로 비활성화되어 있습니다.
[module]
path = /some/path
read only = no
write only = yes
...
쓰기 전용 저장소에서 파일을 수신하려고 하면 다음 오류가 발생합니다.
$ rsync rsync_host::module .
ERROR: module is write only
rsync error: syntax or usage error (code 1) at main.c(804) [sender=3.1.2]