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
인쇄 하고 다음을 사용해 보십시오 .NUL
xargs
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