cron 작업에서 보안 SSH를 통해 rsync 사용

cron 작업에서 보안 SSH를 통해 rsync 사용

SSH를 통해 Linux를 실행하는 원격 NAS에 디렉터리와 하위 디렉터리를 백업하기 위해 Debian GNU/Linux에서 쉘 스크립트를 설정하려고 합니다. 이 연결은 암호화되어야 합니다.

나는 몇 가지 다른 접근 방식을 시도했지만 rsync rsh운이 없었습니다. 를 설정하는 방법을 알고 있지만 crontab무인으로 실행되는 스크립트가 필요합니다(예: 비밀번호를 묻지 않음).

누구든지 나를 도와줄 수 있나요?

편집: 이제 비밀번호 없이 성공적으로 로그인할 수 있습니다.

이제 문제는 rsync를 통해 파일을 복사하는 것입니다 /backups/.[remote system]:/backups/

/backups/에서 하나의 폴더만 복사합니다 [remote system]:/backups/.

편집: 로컬 시스템에 하나의 /backups와 하나의 /backup이 있는 것 같습니다. /backup을 사용해야 했는데 /backup을 사용해 보았습니다...

최종 명령:rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

답변1

2.6.x 이후 rsync는 기본적으로 전송에 ssh를 사용합니다. 따라서 원격 NAS rsync가 지원되는 한 이미 처리되었습니다.

비밀번호가 없는 무인 전송의 경우 cron을 실행 중인 사용자에 대해 SSH 키 기반 인증을 설정해야 합니다. 설정 방법은 다음과 같습니다.http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

답변2

이 플래그를 rsync에 전달하여 비밀번호에 파일을 사용할 수도 있습니다.

--비밀번호 파일

파일을 400으로 쉽게 chmod하여 사용자 외에는 누구도 해당 파일(물론 루트도)을 읽을 수 없도록 할 수 있습니다.

답변3

SSH 키 동기화 중 이 기능이 작동한다고 말했지만 계속 단계를 게시할 것이라고 생각했습니다.

NAS에 SSH 접속

열쇠를 만들려면

ssh-keygen -t rsa on local machine 

그런 다음 백업할 컴퓨터에 동기화하세요.

cat ~/.ssh/id_rsa.pub | ssh user@hostname    ‘cat>>.ssh/authorized_keys’

Rync 백업 스크립트 -오늘의 백업 폴더를 만든 다음 오늘의 어제 파일을 동기화하여 네트워크 부하를 줄이고 오늘의 백업을 rsync합니다.

#!/bin/sh

mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -avz /storage/backups/`date --date=yesterday +\%Y-\%m-\%d`-`date--date=yesterday    +\%A`/$host/$username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

rsync -avz -e ssh  /home/username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

백업을 정리할 스크립트도 필요합니다. 이렇게 하면 일주일 동안 백업이 유지됩니다. Netgear의 준비된 NAS에서 작동하는지 확인할 수 있습니다.

#!/bin/sh

# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)

# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago

스크립트를 실행 가능하게 만들려면 이것을 실행해야 합니다

chmod u+x script.sh

cron에서는 crontab -e를 통해 추가하면 됩니다.

@daily sh backupscript
1 17 * * * sh dailycleanup

관련 정보