서버 백업하는 방법에 대해서 궁금합니다.
클라이언트는 쿠분투 데스크탑 입니다. 파일관리자에서 "sftp://계정@ip주소"를 이용해서 서버로 접속할 수 있는데요. 서버에서 파일을 복사나 마우스 끌어오기를 통해 파일을 클라이언트로 가져올 수 있습니다.
이러한 방식으로 백업을 하는 것이 좋은 방법인지 궁금합니다. 검색해 보니 백업스크립트를 작성한다고도 하던데요.
리눅스 시스템에서 윈도우 시스템으로 백업을 하시는거라면 sftp정도 외에 딱히 방법이 있는지 잘 모르겠군요.
리눅스에서 리눅스로 백업이라면 rsync라는 프로그램이 있습니다.
ssh를 통해 연결 안전성을 보장한 뒤에 백업을 합니다.
찾으면 나오는 정보를 줄줄이 쓰는것보단 이곳을 참고하세요.
[url:12obsmc0]http://onemind.kr/37[/url:12obsmc0]
rsync 간단하게 쓰려면 이러면 됩니다.
rsync -a -e ssh /path/for/backup your_id@backup_server:~/backup/destination
-a 는 archive 모드로 디렉토리 전체, 퍼미션이나 timestamp까지 모두 똑같이 해 주는 옵션이고 -e ssh 는 연결을 ssh로 하겠다는 얘기입니다. 만약, 백업 하드가 원격 호스트에 있지 않고 그냥 서버에 달려 있다면 -e ssh는 필요없겠지요. (your_id@backup_server: 도 필요없게 되구요.)
rsync를 쓸 때 장점은 똑같은 파일은 복사를 안합니다. 업데이트 된 새 파일만 복사를 하지요.
보통은 이렇게 rsync를 crontab -e 명령을 통해서 규칙적으로 수행하게 만듭니다.
** ssh키를 서버에서 자동으로 인증하게 하는 방법 **
#!/bin/sh
/usr/bin/ssh ${*:-localhost} "cat >~/.tmpkey <<EOF
cat ~/.ssh/id_dsa.pub
EOF
/bin/grep -Fxf ~/.tmpkey ~/.ssh/authorized_keys 2>&1 >/dev/null
[ $? -ne 0 ] && (cat ~/.tmpkey>>~/.ssh/authorized_keys && rm ~/.tmpkey)
"
** 백업은 rsync로 **
서버에 rsync가 깔려 있다면 rsync 프로토콜을 사용하는게 좋습니다.
그리고 풀백업이라면 tar.gz으로 압축놓고 다운 받는게 좋죠…
/usr/bin/ssh -e "ssh" 사용자@주소 "tar cvf - 원본경로|gzip ~/원본경로.tar.gz --rsyncable"
rsync -avzu -e "ssh" rsync://사용자@주소/원본경로 ~/원본경로.tar.gz
/usr/bin/ssh -e "ssh" 사용자@주소 "rm ~/원본경로.tar.gz"
–rsyncable 옵션은 rsync와 상호작용할 수 있도록 압축합니다.
또, 서버에 rsync서버가 구동되지 않았다면…
fuse파일시스템을 사용할 수 있습니다.
** fuse파일 시스템을 이용한 백업 **
sudo apt-get install sshfs ==> sshfs사용
mkdir -p 마운트위치
#마운트하기
sshfs 사용자@주소:원본위치 마운트위치 -o rw,uid=사용자,gid=그룹,umask=077
#언마운트하기
fusermount -u 마운트위치
#fstab에 등록하기
sshfs#사용자@주소:원본위치 마운트위치 fuse user,rw,noauto,gid=root,group=그룹,umask=007,allow_other 0 0
#자동마운트하시려면 noauto를 없애면 됩니다.
#백업하기
rsync -avzu 마운트위치/ /백업경로/
#curlftpfs의 경우는 sshfs대신 curlftpfs로 바꿔서 하시면 됩니다.
** 일정간격으로 백업하기 **
sudo apt-get install gnome-schedule
#gnome-schedule은 crontab을 쉽게 만들 수 있게 도와줍니다.
gnome-schedule