tar 아카이브의 콘텐츠를 상위 디렉터리로 추출하는 중에 문제가 발생하면 하위 디렉터리가 생성됩니다.

tar 아카이브의 콘텐츠를 상위 디렉터리로 추출하는 중에 문제가 발생하면 하위 디렉터리가 생성됩니다.

Tar 파일이 있습니다.testwebsite.tar

내용을 추출하려는 웹 서버의 디렉토리, 즉 mytestdirectory에 배치했습니다.

PuTTY를 통해 이 명령을 실행합니다.tar -xvf testwebsite.tar

결과적으로 콘텐츠가 추출되지만 형식은 다음과 같습니다.

mytestdirectory/srv/test/www.testwebsite.com/

mytestdirectory존재하는 모든 파일이 하위 디렉터리 에 포함되기를 원합니다 www.testwebsite.com.

명령을 사용하여 이 하위 디렉터리의 모든 항목을 상위 디렉터리로 이동할 수 있는 방법이 있습니까 mv?

나는 둘러보고 몇 가지 답변을 시도했는데 그 중 하나는 하위 디렉터리에서 이 명령을 실행하는 것이었습니다.

mv * .[^.]* ..

하지만 이로 인해 다음 메시지가 표시됩니다.

mv: cannot stat `*': No such file or directory
mv: cannot stat `.[^.]*': No such file or directory

누구든지 이 문제를 해결하도록 도와줄 수 있나요? 나는 기본적으로 www.testwebsite.com 하위 디렉터리에서 mytestdirectory 상위 디렉터리로 모든 항목(숨겨진 파일 포함)을 이동하려고 합니다.

답변1

tar 옵션을 사용해야 합니다 --strip-components. 이는 tar 아카이브에 필요하지 않은 경로가 포함되어 있기 때문입니다.

예를 들어 tar에 다음이 포함되어 있고 srv/test/www.testwebsite.com/index.html이것을 얻으려면 mytestdirectory/index.html다음이 필요합니다.

$ cd /path/to/mytestdirectory
$ tar xf testwebsite.tar --strip-components=3 

verbose 명령을 사용하는 경우에도 전체 원본 파일 이름을 설정하므로 매개변수를 추가하여 --show-transformed수정된 경로를 나열할 수도 있습니다.

$ tar tfz workspace.tar.gz --strip-components=2 workspace/project
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 workspace/project/aaa
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 workspace/project/bbb
[... list continues ...]
$ tar tfz workspace.tar.gz --strip-components=2 --show-transformed workspace/project
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 aaa
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 bbb
[ ... and so on ...]

상황을 해결하려면 mv다음을 수행하십시오.

# cd /path/to/mytestdirectory 
# mv srv/test/www.testwebsite.com/* .

숨겨진 파일을 처리하기 위한 한 가지 해결책은 다음과 같습니다.

# shopt -s dotglob

위 명령 이전에 실행하고 glob에 대한 도트 파일도 일치시키거나 더 나은 방법으로 현재 대상 디렉터리를 삭제한 다음 복사할 디렉터리를 이동하고 이름을 바꿉니다.

[ delete or rename current /path/to/mytestdirectory ]
# cd /path/to
# mv srv/test/www.testwebsite.com/ mytestdirectory/
# rmdir srv/test/ srv/

관련 정보