[Linux] tar 압축할 때 \r 문자 때문에 No such file or directory 가 발생할 경우
by 무작정 개발반응형
개요
Linux 서버에서 파일을 반영하기 전에 반영 대상 파일을 백업하면서 위의 에러를 만나게 되었습니다.
xxxx.jar\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
위 명령어를 수행해서 파일 안의 \r 문자를 \n으로 변경 후 다시 tar 명령어를 수행하면 정상적으로 명령어가 실행됩니다.
반응형
'OS > Linux' 카테고리의 다른 글
[Linux] 리눅스 find 명령어 사용 방법 핵심 정리(파일 찾기) (0) | 2023.11.14 |
---|---|
[Linux] 리눅스 cp 명령어 + 옵션 핵심 정리(파일, 디렉터리 복사하기) (0) | 2023.11.14 |
[Ubuntu] 우분투에 PostgreSQL 설치 및 접속 핵심 정리 (0) | 2023.03.02 |
[Ubuntu] 우분투에서 echo $JAVA_HOME 출력 안 됨(공백 출력) (1) | 2023.03.02 |
[Ubuntu] FileZilla 연결해서 파일 전송 - FTP (3) | 2023.02.28 |
블로그의 정보
무작정 개발
무작정 개발