File Transfer - scp, rsync

2021. 2. 6. 12:35프로그래밍/기타

반응형

 

서버 작업을 하다보면 서버와 서버 사이에 파일 전송 이슈가 있는 경우가 있다.

개인적으로 주로 SFTP나 FTP를 이용해서 파일을 전송했었는데... 요즘은 rsync 를 이용해서 파일 전송을 주로 하고 있습니다.

그중 많이 쓰이는 scp, rsync 에 대해서... 간단히 커맨드 정리 해둔다.

 

SCP (Secure Copy) 

ssh를 통해서 파일을 전송하는 도구로 서버에서 서버로 쌍방향 전송이 가능하다.

 

다른 장비로 파일 복사하기
scp -rp sourcedirectory user@dest:/path
-r means recursive
-p preserves modification times, access times, and modes from the original file.
scp *.pdf sean@123.12.1.123:/home/sean/download/
>> 모든 PDF 파일을 123.12.1.123 서버의 /home/sean/download 폴더로 복사
scp -rp ~/files sean@123.12.1.123:/home/sean/download/
>> files 폴더 이하에 있는 모든 파일을 123.12.1.123 서버의 /home/sean/download 폴더로 복사

 

다른 장비에서 파일 복사해오기
scp -rp user@dest:/path sourcedirectory
scp sean@123.12.1.123:/home/sean/download/*.pdf ./download
>> 123.12.1.123 서버의 /home/sean/download 폴더의 모든 PDF 파일을 ./download 폴더로 복사
scp -rp sean@123.12.1.123:/home/sean/download/ ~/files 
>> 123.12.1.123 서버의 /home/sean/download 폴더 하위의 모든 파일을 ~/files 폴더로 복사

참고로 파일명에 공백 등이 들어간 경우 " " 로 둘러싸주면 된다. ex) "abc file.txt" 

 

 

rsync

서버간에 파일을 동기화하는 도구이다. 이 또한 쌍방향 전송이 가능하다.

필자는 AWS에서 서버 관리를 주로 하고 있는데 인증 파일(.pem)을 이용해서 서버에 파일을 싱크할때 자주 사용하고 있다.

파일 싱크하기 (일반)
rsync -a -e ssh user@source-server:/source/ /dest/
rsync -a -e ssh /source/ user@source-server:/dest/

-a : archive mode (include a lot of default common options, including preserving symlinks)
-z : compress
-v : verbose : show files
-P : show progess as files done/remaining files
-e ssh : do rsync in ssh protocol
--delete : delete files in the destination that are not anymore in the source
rsync -avz -e ssh pi@123.12.1.123:download/ files/
>> 123.12.1.123 서버의 download 폴더의 파일을 ./files 폴더로 복사
rsync -avz -e ssh files/ pi@123.12.1.123:download/
>> ~/files 의 파일들을 123.12.1.123 서버의 /home/sean/download 폴더로 복사
인증서 파일 (.pem) 파일을 이용해서 싱크하기
sudo rsync -avzP -e "ssh -i /root/.ssh/my_certificate.pem" /source/ user@source-server:/dest/
sudo rsync -avzP -e "ssh -i /root/.ssh/my_certificate.pem" user@source-server:/source/ /dest/

 

반응형