私は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
...
Googleでこれを見つけました。Ubuntuの回答を尋ねるしかし、しようとすると正しく動作しません。
$ 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