저는 Drupal 8을 이라는 디렉토리에 설치했습니다 my-D8
. 나는 그것을 drupal 8.3.1로 업데이트하고 싶고 그것을 다운로드했습니다 drupal-8.3.1.tar.gz
. 내 디렉토리에 다음이 있습니다 sites
.
/d/sites $ ls
drupal-8.3.1.tar.gz my-d8/
아카이브를 추출하려고 하면 모든 것이 이라는 디렉토리에 저장되는데 drupal-8.3.1
, 이것이 바로 제가 기대하는 것입니다. 그러나 해당 디렉터리의 모든 파일과 하위 디렉터리가 기존 디렉터리를 덮어쓰고 추가되기를 원합니다 my-d8
.
명령 을 시도했지만 mv
내 셸에서는 비어 있지 않은 기존 하위 디렉터리를 덮어쓰는 것이 거부되었습니다.
$ mv drupal-8.3.1/* my-d8/
mv: cannot move 'drupal-8.3.1/core' to 'my-d8/core': Directory not empty
mv: cannot move 'drupal-8.3.1/modules' to 'my-d8/modules': Directory not empty
...
구글링해서 이런걸 찾았어요우분투 답변 물어보기, 하지만 시도할 때 제대로 작동하지 않습니다.
$ tar -xvf drupal-8.3.1.tar.gz --directory=my-d8 --strip-components=1
drupal-8.3.1/.csslintrc
drupal-8.3.1/.editorconfig
drupal-8.3.1/.eslintignore
... ^C
저장소 루트의 파일을 덮어쓰는 대신 단순히 하위 디렉터리를 저장소에 넣습니다.
$ ls my-d8/drupal-8.3.1/
autoload.php composer.json composer.lock core/ README.txt
편집하다나는 dope-ghoti의 답변을 시도했지만 자세히 살펴보면 작동하지 않습니다.
$ ls
drupal-8.3.1.tar.gz my-D8/
$ tar -zx -f drupal-8.3.1.tar.gz -C my-D8
$ ls my-D8/drupal-8.3.1/
autoload.php composer.json ...
$ cd my-D8/
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
drupal-8.3.1/
nothing added to commit but untracked files present (use "git add" to track)
아카이브 파일과 디렉터리를 저장소의 해당 위치로 쉽게 추출하려면 어떻게 해야 합니까?
$ tar --version
tar (GNU tar) 1.29
답변1
매뉴얼에서:
-C DIR
change to directory DIR
그러면 프로세스의 작업 디렉터리가 변경됩니다 tar
. 예를 들어 아카이브에서 파일 이름의 첫 번째 구성 요소를 --strip
제거 할 수도 있습니다 . drupal-8.3.1/
따라서 다음을 수행할 수 있습니다.
tar --strip=1 -zx -f drupal-8.3.1.tar.gz -C my-d8
tar
갖고 있지 않은 경우 --strip
최소한 다음이 있어야 합니다 --transform
.
tar --transform 's_drupal-8.3.1/__' -zx -f drupal-8.3.1.tar.gz -C my-d8