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