내 컴퓨터 없이 curl로 서버 간 파일 직접 전송하는 팁

제가 이번에 서버를 옮기면서 월 3만9천원이나 아꼈잖아요? 대박 아닌가요? 그런데 이 과정에서 curl 파일 전송을 이용해 제 컴퓨터를 거치지 않고 서버 간 파일을 직접 옮긴 게 정말 큰 도움이 됐습니다. 특히 공유 호스팅 환경에서 SSH가 막혀 있을 때, 이 방법이 얼마나 유용한지 직접 경험했죠. 오늘은 제가 어떻게 이 작업을 했고, 어떤 팁들을 얻었는지 솔직하게 풀어볼게요.

한눈에 보는 핵심

  • FTP 서버 간 파일 전송 시 –netrc-file 옵션으로 보안 강화
  • tar 명령으로 불필요한 캐시 폴더 제외, 용량 대폭 절감
  • cPanel API를 활용해 SSH 없이도 DB, 도메인, SSL 설정 해결
  • DNS 변경 전 스크립트로 구/신 서버 데이터 비교, 치명적 오류 사전 발견

왜 내 컴퓨터 없이 서버 간 직접 전송을 해야 할까요?

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

저는 평소에 블로그를 운영하면서 비용 절감에 관심이 많아요. 그래서 서버 이전 같은 큰 작업을 할 때도 어떻게 하면 가장 효율적이고 저렴하게 할 수 있을지 고민하죠. 내 컴퓨터를 거쳐서 서버 간 파일을 옮기면 시간이 오래 걸리고, 중간에 네트워크 문제라도 생기면 골치 아프잖아요. 특히 대용량 파일을 옮길 때는 그 시간과 노력이 배가 됩니다. 그래서 저는 옛 서버에서 새 서버 FTP로 파일을 직접 밀어 넣는 방법을 택했습니다. curl 파일 전송 명령 하나로 옛 서버에서 새 서버 FTP로 파일을 직접 전송할 수 있었죠. 이렇게 하니 529MB 파일도 몇 분 만에 옮겨지더라고요. 정말 신속하고 편했습니다.

SSH가 막힌 공유호스팅 환경에서 빛을 발하는 curl

제가 사용하던 환경은 SSH 접속이 제한된 공유호스팅이었어요. 이런 환경에서는 파일 압축 해제나 대용량 DB 업로드, mysqldumpwp-cli 같은 유용한 도구들을 사용할 수 없어서 난감할 때가 많죠. 하지만 저는 cPanel API를 활용해서 이 문제들을 해결했습니다. 파일 전송은 curl로 직접 처리하고, 압축 해제, DB 생성, 사용자 권한 설정, 애드온 도메인 추가, SSL 발급 등 모든 작업을 API로 처리했죠. 덕분에 SSH가 없어도 서버 이전 작업을 매끄럽게 진행할 수 있었습니다. 특히 DB는 cPanel의 ‘원격 MySQL’ 기능을 통해 옛 서버에서 새 서버 DB로 직접 밀어 넣었으니, 정말 효율적이었어요.

curl로 FTP 서버 간 파일 전송하는 방법

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

curl을 이용해 FTP 서버 간 파일을 전송할 때는 몇 가지 팁이 있습니다. 일단 저는 보안을 위해 접속 정보를 명령줄에 직접 입력하지 않았어요. 대신 .netrc 파일에 따로 적어두고 –netrc-file 옵션으로 참조하게 했죠. 이 방법은 계정 정보가 노출될 위험을 줄여줘서 훨씬 안전합니다.

불필요한 파일 걸러내기: tar 압축과 curl 전송

파일 전송 전에 tar로 묶으면서 불필요한 파일들을 제외하는 것도 중요합니다. 예를 들어 wp-content/cache와 같은 캐시 폴더는 제외하는 거죠. 이렇게 하니 큰 사이트는 1.7GB에서 529MB로, 작은 사이트는 369MB에서 106MB로 용량을 대폭 줄일 수 있었습니다. 용량이 줄어드니 전송 시간도 훨씬 단축되더라고요.

다음은 제가 사용했던 기본적인 curl 명령 형태입니다.

기능 명령 예시 설명
FTP 업로드 curl -T 파일 -u 사용자:비밀번호 ftp://호스트/경로/ -u는 인증 정보, -T는 업로드 파일 지정
파일 내려받기 (지정 이름) curl -o 저장이름 URL 내려받은 파일을 지정한 이름으로 저장
파일 내려받기 (원본 이름) curl -O URL 원본 파일명을 유지하여 저장
multipart/form-data 전송 curl -F “file=@/경로/파일” 서버가 폼 업로드를 받는 경우
바이너리 데이터 전송 curl –data-binary “@파일” 파일 내용을 바이너리 그대로 전송

CHECK POINT

curl 명령 사용 전 .netrc 파일에 FTP 접속 정보를 안전하게 설정했는지 다시 한번 확인해 보세요.

cPanel API로 SSH 없이 서버 관리하기

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

SSH가 막혀있는 환경에서는 curl만으로는 모든 서버 관리 작업을 할 수 없습니다. 이때 cPanel API가 정말 유용했어요. 저는 cPanel API를 활용해서 DB 생성, 사용자 권한 설정, 애드온 도메인 추가, 그리고 SSL 발급까지 모든 작업을 자동화했습니다. 특히 원격 MySQL 허용 목록에 옛 서버 IP를 추가하고 FTP로 서버 간 직접 데이터 전송을 통해 제 컴퓨터를 거치지 않고 신속하게 파일과 DB를 이전할 수 있었죠. 이 덕분에 번거로운 수동 작업을 대폭 줄일 수 있었습니다.

원격 MySQL과 cPanel API 연동

cPanel의 ‘원격 MySQL’ 기능을 활용하면 외부 IP에서 MySQL 서버에 접근할 수 있도록 설정할 수 있습니다. 저는 옛 서버의 IP를 원격 MySQL 허용 목록에 추가해서, 옛 서버에서 새 서버의 DB로 직접 데이터를 밀어 넣었습니다. 이렇게 하니 DB 이전 작업도 제 컴퓨터를 거치지 않고 서버 간에 직접 이루어져서 훨씬 빠르고 안정적이었어요.

DNS 변경 전, 두 서버 데이터 검증은 필수

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

DNS 변경은 서버 이전의 마지막 단계인데, 이때 문제가 생기면 정말 대형 사고로 이어질 수 있습니다. 저는 이전에 612개의 글을 옛 서버와 새 서버에서 하나씩 대조하는 작업을 클로드 코드로 짠 스크립트를 활용해 진행했어요. 이 과정에서 infoeovo 사이트의 wp-config 파일 내 DB_HOST 값이 Cloudways 전용 소켓 경로인 ‘localhost:/run/mysqld/mysqld.sock’으로 설정되어 있는 것을 발견했죠. 이걸 그대로 이전했으면 사이트가 통째로 죽을 뻔한 위기였습니다.

스크립트를 활용한 데이터 무결성 검증

제가 사용한 스크립트는 IP로 직접 접속하고 Host 헤더와 SNI만 도메인으로 보내는 방식으로 작동했습니다. 그리고 상태 코드, <title>, 본문 길이 세 가지를 비교하여 이상 유무를 판단했죠. 이런 사전 검증 작업 덕분에 치명적인 오류를 미리 발견하고 수정할 수 있었습니다. 여러분도 DNS 변경 전에 반드시 이런 검증 작업을 거치시길 강력히 추천합니다. YouStable 블로그에서 curl 명령의 다양한 활용법을 참고하면 좋습니다.

HTTP 임시 파일 서버로 curl 활용하기

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

때로는 FTP 대신 HTTP를 이용해 파일을 전송하는 것이 더 편리할 수도 있습니다. 저는 한쪽 서버를 HTTP 서버로 만든 뒤, 다른 서버에서 curl로 파일을 받아오는 방법도 사용해봤어요. 예를 들어, python -m http.server 8000 명령으로 한 서버에 임시 HTTP 서버를 띄우고, 다른 서버에서 curl -O http://[서버IP]:8000/파일이름 형태로 파일을 내려받는 거죠. 이 방법은 간단한 파일 전송 시 유용하게 쓰일 수 있습니다.

curl을 이용한 응답 코드 및 접속 시간 확인

파일 전송 후에는 전송이 제대로 되었는지 확인하는 것이 중요합니다. curl -s -o /dev/null -w “%{http_code}, %{time_connect}\n” URL 명령을 사용하면 HTTP 상태코드와 접속 시간을 출력할 수 있어서 파일 전송의 성공 여부와 성능을 간략하게 확인할 수 있습니다. 저처럼 꼼꼼하게 작업하는 분들이라면 이런 디테일도 놓치지 않으실 거예요.

CHECK POINT

curl -T 명령으로 FTP 업로드가 완료된 후, –netrc-file에 지정된 파일의 접속 정보가 제대로 삭제되었는지 확인해 보세요.

curl 보안, 주의할 점은 없을까요?

cPanel API, curl 파일 전송, FTP 전송, SSH 우회, tar 압축, 공유 호스팅, 비용 절감, 서버 이전

curl은 강력한 도구지만, 보안에 유의하지 않으면 문제가 생길 수도 있습니다. 특히 curl -Fcurl –data-binary 같은 명령은 전송된 원시 데이터가 서버에 그대로 도달하는 구조이기 때문에, 서버 측 수신 방식에 따라 의도치 않은 저장이나 처리가 발생할 수 있다고 합니다. 그래서 저는 항상 .netrc 파일을 사용해서 인증 정보를 안전하게 관리하고, 불필요한 파일은 전송 전에 걸러내는 등 보안에 신경을 많이 썼습니다.

디렉토리 전체를 옮길 때는 scp 활용

curl은 기본적으로 단일 파일 전송에 최적화되어 있습니다. 만약 디렉토리 전체를 옮겨야 한다면, 저는 scp -r 명령을 활용하는 것을 추천합니다. scpssh 기반의 안전한 파일 전송 도구로, 디렉토리 전체를 재귀적으로 복사하는 데 매우 효율적이죠. 물론 SSH 접속이 가능한 환경에서만 사용할 수 있는 방법이지만, 가능하다면 scp를 활용하는 것이 더 좋습니다. CSDN 블로그에서도 curl의 다양한 활용 사례를 찾아볼 수 있습니다.

마무리

내 컴퓨터를 거치지 않고 curl로 서버 간 파일을 직접 전송하는 것은 시간과 비용을 절약하는 아주 효율적인 방법입니다. 특히 저처럼 공유호스팅 환경에서 SSH 제한에 부딪혔을 때, cPanel API와 curl을 조합하면 대부분의 서버 이전 작업을 성공적으로 수행할 수 있습니다. 보안에 유의하면서 이 팁들을 활용해 여러분의 서버 관리도 한층 더 업그레이드해보세요.

자주 묻는 질문

curl로 파일을 전송할 때 보안은 어떻게 관리하나요?

.netrc 파일에 접속 정보를 저장하고 –netrc-file 옵션으로 참조하면 명령줄에 직접 정보를 노출하지 않아 안전합니다.

SSH가 없는 공유호스팅에서도 curl로 모든 작업을 할 수 있나요?

아니요, curl은 파일 전송에 특화되어 있으며, DB 생성이나 권한 설정 등은 cPanel API를 활용해야 합니다.

대용량 파일을 curl로 전송할 때 속도를 높이는 팁이 있나요?

tar 명령으로 불필요한 캐시 파일 등을 제외하여 압축하면 파일 용량이 줄어들어 전송 속도를 높일 수 있습니다.

DNS 변경 전 데이터 검증은 왜 중요한가요?

DB_HOST 경로 오류와 같이 치명적인 설정 문제를 미리 발견하고 수정하여 사이트 다운을 방지할 수 있습니다.

curl과 scp 중 어떤 것을 사용해야 하나요?

curl은 단일 파일 전송에, scp -r은 SSH 환경에서 디렉토리 전체를 전송할 때 더 효율적입니다.

본 글은 일반적인 정보 제공을 목적으로 하며, 개별 상황에 대한 판단이나 진단을 대신할 수 없습니다. 정확한 내용은 전문가와 상담해 결정하시기 바랍니다.

워드프레스 서버 이전, SSH 막혀도 cPanel API로 해결법

토큰 아끼는 프롬프트 습관

워드프레스 612개 글, DNS 변경 전 스크립트로 전수 검사하기

Cloudways 소켓 경로, DB_HOST 오류로 사이트 죽을 뻔한 후기

워드프레스 호스팅 월 4만4천원에서 5천원으로

댓글 남기기