'scp: not a regular file' 오류 메시지는 SCP 명령어로 파일을 복사하려고 할 때, 지정한 원본 또는 대상 경로가 일반 파일(regular file)이 아니라는 의미입니다. SCP 명령어는 SSH(Secure Shell) 연결을 통해 호스트 간에 파일을 안전하게 전송하는 데 널리 사용되며, 파일 전송 시 원본과 대상 경로를 반드시 함께 지정해야 합니다. 따라서 이 오류는 대부분 잘못된 파일 경로나 구문으로 인해 발생합니다.
이 오류는 Linux, macOS, BSD 등 Unix 계열 운영체제에서 흔히 나타나며, PuTTY나 Cygwin 같은 서드파티 소프트웨어를 통해 SCP 명령어가 설치된 Windows 환경에서도 발생할 수 있습니다.
이번 글에서는 해당 오류를 빠르게 진단하고 해결할 수 있는 단계별 문제 해결 가이드를 소개합니다.
1. 구문(문법) 오류 점검
Unix와 Linux는 명령어, 셸 스크립트, 설정 파일에 관해 엄격하게 정의된 구문 규칙과 표준을 준수하는 것으로 유명합니다. 정해진 구문을 정확히 따르는 것이 올바른 실행과 예상되는 동작을 보장하는 핵심 요소입니다.
따라서 구문에 오류가 있으면 시스템이 자동으로 에러 메시지를 출력하는데, 이 경우의 오류가 바로 "scp: not a regular file"입니다. 파일을 복사할 때는 아래 사항들을 반드시 확인해야 합니다.
1.1 파일명 공백 확인
Unix/Linux 환경에서는 파일이나 디렉터리 이름에 공백이 포함되어 있는지 확인하는 것이 중요합니다. 명령어나 스크립트 처리 시 선행·후행 공백이 있으면 예기치 않은 문제가 발생할 수 있습니다.
예를 들어 '/home/user' 디렉터리에 'my_file.txt'라는 파일이 있다고 가정해 보겠습니다. 파일 이름에 공백이 있는지 확인하려면 다음 명령어를 사용합니다:
ls -Q /home/user
-Q 옵션은 파일 및 디렉터리 이름을 따옴표로 묶어 표시해 줍니다. 파일 이름에 공백이 있다면 명령어 실행 결과에서 따옴표 안에 그대로 드러납니다.
예를 들어 출력 결과가 다음과 같다면:
"my file.txt"
파일 이름에 공백이 포함되어 있다는 의미입니다. 이런 경우에는 명령어나 스크립트 작업 시 특수 문자를 활용하거나 파일명을 따옴표로 묶어 공백을 처리하는 것이 좋습니다.
근본적으로는 공백 관련 문제를 예방하기 위해, 파일이나 디렉터리 이름에 공백을 사용하지 않는 것이 가장 안전합니다.
1.2 콜론 누락 또는 과다
SCP 명령어는 원격 서버와 파일 경로를 지정할 때 콜론(:)을 반드시 사용해야 합니다. 예를 들어 'scp user@host filepath'처럼 콜론 없이 잘못된 구문을 입력하면 오류가 발생합니다. "scp: not a regular file" 오류를 피하려면 SCP 구문 규칙을 정확히 지켜야 합니다.
1.3 원본과 대상 경로 혼동
SCP 명령어 사용 시 원본(source)과 대상(destination) 경로의 순서를 혼동하면 오류나 예기치 않은 동작이 발생할 수 있습니다. 성공적인 파일 전송을 위해서는 올바른 순서를 유지하는 것이 필수입니다.
SCP 명령어의 기본 구문은 다음과 같습니다:
scp <source> <destination>
원본과 대상 경로를 실수로 바꿔 입력하면 파일이 반대 방향으로 복사되거나, 대상 경로가 유효하지 않은 경우 "scp: not a regular file" 오류가 발생할 수 있습니다.
예를 들어 로컬 머신의 "file.txt" 파일을 원격 서버로 복사한다고 가정해 보겠습니다:
올바른 예: scp file.txt user@remote:/path/to/destination
잘못된 예: scp user@remote:/path/to/destination file.txt
잘못된 사용법은 원격 서버의 "file.txt" 파일을 로컬 머신으로 복사하려고 시도하여 원치 않는 결과나 오류를 초래합니다. 원활한 파일 전송을 위해서는 SCP 명령어를 실행하기 전에 항상 원본과 대상 경로의 순서를 다시 한번 확인하는 습관을 들이세요.
2. "-r" 옵션 사용
이 오류가 발생하는 또 다른 흔한 원인은 디렉터리를 복사하면서도 운영체제에 그것이 디렉터리임을 알려주지 않은 경우입니다.
SCP는 기본적으로 모든 항목을 일반 파일로 취급하므로, 디렉터리를 복사할 때는 반드시 -r 옵션을 추가해야 합니다. 사용자가 디렉터리를 복사하려 하는데 -r 옵션으로 이를 지정하지 않으면 "scp: not a regular file" 오류가 발생합니다.
디렉터리 전체와 하위 디렉터리 및 내부 파일까지 모두 복사하려면 "-r" 옵션을 사용해야 합니다. "-r" 옵션이 없으면 SCP는 개별 파일만 복사하고 디렉터리는 복사하지 않습니다.
"-r" 옵션을 사용한 scp 명령어 예시는 다음과 같습니다:
scp -r /path/to/source_directory user@remote:/path/to/destination_directory
이 명령은 "source_directory"의 내용과 모든 하위 디렉터리를 원격 서버의 "destination_directory"로 재귀적으로 복사합니다.
ABOUT THE AUTHOR
Dawood Janjua
Dawood Janjua는 Windows 문제 해결과 게임 분야에서 폭넓은 지식을 보유한 뛰어난 기술 애호가입니다. CCNA 자격증을 보유하고 있으며 고객에게 탁월한 기술 지원을 제공해 온 검증된 경력을 갖추고 있습니다. 현재 작가로 활동하면서 향후 권위 있는 CCIE 자격증 취득을 목표로 기술 전문성을 확장하고자 노력하고 있습니다. 게임에 대한 열정과 IT 전문성을 바탕으로 커뮤니티에 지식을 적극적으로 공유하며, 다른 사람들이 기술 역량을 향상시킬 수 있도록 돕고 있습니다.