tar -cjf site1.tar.bz2 -C /var/www/site1 .
上記の例では、tar はディレクトリ /var/www/site1
に変更されます オプション -C /var/www/site1
のため、そのことを行う前に
man tar
から :
OTHER OPTIONS
-C, --directory DIR
change to directory DIR
オプション -C
動作します。明確にするために、2 つの例を投稿します:
フル パスなしの tarball の作成:フル パス /home/testuser/workspace/project/application.war
必要なのは project/application.war
だけです そう:
tar -cvf output_filename.tar -C /home/testuser/workspace project
注:workspace
の間にスペースがあります と project
; tar はフルパスを project
だけに置き換えます .
ターゲットパスを変更して tarball を抽出 (デフォルトは .
、つまり現在のディレクトリ)
tar -xvf output_filename.tar -C /home/deploy/
tar
指定されたパスに基づいて tarball を抽出し、作成パスを保持します。この例では、ファイル application.war
/home/deploy/project/application.war
に抽出されます .
/home/deploy
:抽出物に記載
project
:tarball の作成時に付与
注 :作成した tarball をターゲット ディレクトリに配置する場合は、tarball 名の前にターゲット パスを追加するだけです。例:
tar -cvf /path/to/place/output_filename.tar -C /home/testuser/workspace project
-C
らしい オプション upto tar v2.8.3 は、すべてのプラットフォーム (OS) で一貫して機能しません。 -C
オプションはディレクトリをアーカイブに追加すると言われていますが、Mac と Ubuntu では、生成された tar.gz ファイル内に絶対パスのプレフィックスを追加します。
tar target_path/file.tar.gz -C source_path/source_dir
したがって、一貫性のある堅牢なソリューションは cd
です。 source_path (source_dir の親ディレクトリ) に移動し、
tar target_path/file.tar.gz source_dir
または
tar -cf target_path/file.tar.gz source_dir
あなたのスクリプトで。これにより、生成された tar.gz ファイルのディレクトリ構造から絶対パスのプレフィックスが削除されます。