데비안에서 백슬래시가 있는 tar 파일

데비안에서 백슬래시가 있는 tar 파일

Debian 10 Pod에서 (Windows 스타일) 백슬래시가 포함된 파일을 복사해야 합니다. GNU tar 1.30백슬래시가 포함된 파일을 보관하는 데 문제가 있습니다 .

docker run --rm -it debian:10 bash

예를 들어 컨테이너 내에서 실행하는 경우:

touch C\:\\LOG_DOTNET\\1
touch C\:\\LOG_DOTNET\\2

백슬래시가 있는 파일:

ls -l C\:*

-rw-r--r-- 1 root root 0 Mar 14 17:20 'C:\LOG_DOTNET\1'
-rw-r--r-- 1 root root 0 Mar 14 17:20 'C:\LOG_DOTNET\2'

tar보관을 위해 와일드카드를 사용해 보십시오 :

tar cvf a.tar C\:*

tar: C\:\\LOG_DOTNET\001: Cannot stat: No such file or directory
tar: C\:\\LOG_DOTNET\002: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

문자를 find인쇄 하고 다음을 사용해 보십시오 .NULxargs

find . -name C\:\* -print0 | xargs -0 tar cvf a.tar

tar: ./C\:\\LOG_DOTNET\002: Cannot stat: No such file or directory
tar: ./C\:\\LOG_DOTNET\001: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

각 줄을 작은따옴표로 묶어보세요.

find . -name C\:\* | sed "s/'/'\\\\''/g; s/^/'/; s/$/'/" | xargs tar cvf a.tar

tar: ./C\:\\LOG_DOTNET\002: Cannot stat: No such file or directory
tar: ./C\:\\LOG_DOTNET\001: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

\00나는 또한 그것이 나타나는 이유와 나타나지 않는 이유를 이해하지 못합니다 \\(내 문제의 원인인 것 같습니다).

그러한 파일을 복사하도록 제공 kubectl cp하거나 주문하면 도움이 될 것입니다. kubectl exec:-)

답변1

나는 여기서 답을 찾았습니다.슈퍼유저 문제

find . -name C\:\* -print0 | tar --null -T - -cf a.tar 

tar 매뉴얼에서 :

--null Instruct subsequent -T options to read null-terminated names verbatim  (disables  special  handling  of
              names that start with a dash).

-T를 사용하면 표준 입력을 소스로 사용할 수 있습니다. => 테스트:

find -name 'C:*' -print0 |tar --null -T - -cf a.tar
tar tf a.tar 
./C:\\LOG_DOTNET\\2
./C:\\LOG_DOTNET\\1

관련 정보