Unix/*Nix계통 팁

ssh를 이용해서 tar로 백업하기

ForceCore 2007. 7. 22. 23:39
$ tar zcvf - /home | ssh pinky "cat > inky-home.tgz"
ssh 키 생성할 때도 이걸 이용하는데
참 편하다~
보안에도 강력하고!

키를 이용해서 자동으로 로그인하도록 하고
백업도 쉽게 되겠다.
Rsync보다는 못하겠지만 나름대로 간편하게 쓸 수있겠다.

-----------------------------------------------------------------

여기서부터는 필자가 덧붙인 것 -_-

응용) sftp로는 파일을 recursive하게 가져올 수 없다. scp는 가능한데.
위 명령어를 이용하면...
- tar on the fly - 를 할 수 있다.
recursive ftp를 쓰면 통신으로 "이파일 다 보내졌음. 이제 저 파일을 보낸다"는 식의
메시지를 계속 보내게 된다. 이렇게 되면 작은 파일이 여러 개 있을 때 불리하다.
scp는 어떻게 되는지 모르겠지만, ftp와 같은 방법으로 파일을 하나씩 전송한다면
마찬가지의 부작용이 있을 것이다.

하지만... tar로 묶어서 보내면서, 받는 쪽에서 바로 푼다면?
$ tar cvf - public_html | ssh pinky "tar x"
좀 복잡하다 ㅡ,.ㅡ;;
압축을 안 하고 그냥 tar로 묶는데, 서버의 다른 편에서는 바로 tar에 input을 먹여서 tar를 푸는 작업을 한다.

$ tar zcvf - public_html | ssh pinky "tar zx"
z자를 붙이면 압축까지 즉석에서 했다 풀었다 한다.

public_html: 백업하고 싶은 것
pinky: 파일이 보내질 대상 서버

대상 서버에서 파일은 어디 생기는고 하니, id@pinky 에서, id의 홈디렉토리를 기준으로 상대경로에 생긴다. 절대 경로를 원하면 tar 옵션을 써서...
tar zx대신에 tar zx -C /backup
과 같이 압축을 해제하기 전 change directory하도록 해준다.