무작정 개발.Vlog

[Linux] tar 압축할 때 \r 문자 때문에 No such file or directory 가 발생할 경우

by 무작정 개발
반응형

개요

Linux 서버에서 파일을 반영하기 전에 반영 대상 파일을 백업하면서 위의 에러를 만나게 되었습니다.

xxxx.jar\r: Cannot stat: No such file or directory
...
...

\r: Cannot stat: No such file or directory
\r: Cannot stat: No such file or directory

 

우선 patch.list 파일에는

/home/download/model/test1.jar
/home/download/model/test2.jar

위와 같이 반영할 대상 파일 + 경로가 작성되어 있습니다.

 

tar -cvf patch.tar `cat patch.list`

위의 명령어로 patch.tar이라는 이름으로 파일을 압축하는데, cat 명령어로 patch.list를 읽어서 해당 파일에

작성되어 있는 파일들을 그대로 가져와서 압축합니다. 또한 작성된 경로에 맞게 디렉터리까지 생성한 상태에서 압축됩니다.

 

발생 원인

구글링 해본 결과 발생 원인은 OS 간의 줄바꿈을 위한 표시 문자가 다른 것이었습니다.

필자는 patch.list 파일을 Windows 환경에서 메모장을 이용해서 작성하였고, 저장할 때 확장자를 list로 변경 후 FTP로

Linux 서버로 전송하였습니다.

 

[ OS 간 줄 바꿈 문자 차이 ]

  • [Windows] - \w\n
  • [Linux] - \n

필자가 파일에 입력된 \r 또한 개행 문자(캐리지 리턴) 잘 사용하지 않는다고 합니다.

 

반응형

해결 방법

Linux 명령어 중에 sed 명령어를 사용해서 줄바꿈 문자를 Linux 용으로 변경합니다.

[ 사용 방법 ]
sed 's/변경대상문자열/변경 후 문자열/' 파일이름

# patch.list 안에 있는 \r 문자를 \n으로 변경
sed 's/\r/\n/'patch.list

[Linux] sed 명령어로 문자열 치환
[Linux] sed 명령어로 문자열 치환

위 명령어를 수행해서 파일 안의 \r 문자를 \n으로 변경 후 다시 tar 명령어를 수행하면 정상적으로 명령어가 실행됩니다.

반응형

블로그의 정보

무작정 개발

무작정 개발

활동하기