A서버 -> B서버로 root 권한이 없는 유저 X의 대용량 파일을 전송해야 했다.
< 삽질 정리 >
1. 처음에 권한 생각도 못했던 시기
sudoer인 내가 유저 X의 A서버 홈 디렉토리를 X의 B서버로 홈 디렉토리로 바로 옮겨주면 되겠지 했는데 /home은 root꺼여서 B서버의 root 권한이 필요했다.
생각해보니 나는 A서버의 sudoer니까 B서버에는 없는게 당연했다.ㅜㅜ
sudoer sudoer 권한 둘다 필요 |
A:/home/X --> B:/home/X |
구글링을 해보니 나 같은 분이 몇 년전에도 계셨다.
찾아보니 /home을 직접 copy하지 말고 /home/X 밑에 내가 원하는 폴더를 집어 넣으란다.
그럼 ls 찍어서 for문 돌려서 하나씩 보내야 하나 압축해서 파일 보내는게 좋은가 고민이 되었다.
https://askubuntu.com/questions/66492/scp-copy-over-ssh-doesnt-work-permission-denied-error-please
일단 100기가를 압축시켜놓고 더 찾아보자!
2. 폴더 하나씩 압축해서 전송하고 바로 압축 해제하는 방법
지금보니 아래쪽에 rsync 내용이 있었네... 멍췅....
그래도 나름 이 방법도 신선했다...
$ tar cz <files> | ssh user@host "cd /wherever; tar xvz"
3. 생각해보니 난 A서버 sudoer니까 X의 계정으로 들어가서 B서버 X계정으로 보내면 이름이 똑같으니까 될 것 같은 기분이 왔다.
-> 된다아아아
-> 100기가를 압축시키는 것 보다 폴더마다 하나 씩 바로 보내는 게 더 빠를 것 같아 압축 시키던 프로세스는 빠염
-> A서버와 B서버 모두 로그인 안하게 ssh 키 등록해두고 scp를 보내보자!
X@A $ cat ~/.ssh/id_rsa.pub
~~~~
X@B $ vi ~/.ssh/authorized_keys 에 추가
$ scp <files> X@A:/home/X
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_sshpass_%EC%82%AC%EC%9A%A9%EB%B2%95
< 결론 >
4. rsync 로 선택했다
1기가는 scp로 보내겠는데 100기가 되는 큰 용량도 가능할까 하는 의문이 갑자기 들어서 검색해보니
역시나 구글은 답을 알고 있다.
https://unix.stackexchange.com/questions/190537/transferring-large-8-gb-files-over-ssh
Rsync is very well suited for transferring large files over ssh because it is able to continue transfers that were interrupted due to some reason. Since it uses hash functions to detect equal file blocks the continue feature is quite robust.
대충 암튼 좋은 프로그램이다.
A서버에 있는 폴더를 B서버로 보내보자
X@A $ rsync -arz <files> X@B:/home/X
잘 되니 자동 스크립트를 만들쟈
#!/bin/bash
while read list
do
rsync -arz $list X@B:/home/X
done < list.txt
참고한 한글 자료
https://www.joinc.co.kr/w/Site/Tip/Rsync
https://serverfault.com/questions/346356/how-to-add-timestamp-and-file-list-to-rsync-log
https://twpower.github.io/155-use-file-or-command-ouput-in-while-loop
후후.... 오늘 회사가서 얘기해보니 첨 하던대로 B서버 X 홈 디렉터리 밑으로 전부 scp 때리고 mv하면 됐다.. mv는 파일 링크만 바꾸는 개념이라 속도 차이 안난다고ㅠ 멍청하면 잠을 못자요...
'개발 > 리눅스 서버' 카테고리의 다른 글
CVE-2021-3156 sudo 보안 취약점 (0) | 2021.02.26 |
---|---|
gerrit + Apache2 설치 및 설정 (0) | 2020.02.03 |
parse json with default bash only (0) | 2020.01.29 |
linux 명령어 모음집 (0) | 2020.01.22 |
[ubuntu] 파티셔닝 (0) | 2020.01.06 |
댓글