ディレクトリ構造を含めずにtarで固める方法の備忘です。
まとめ:
tar cvjf <圧縮ファイルのファイル名> -C <圧縮ファイルの起点となるパス> <圧縮対象のファイル名>
実行環境
[root@4765cb7f88ce work]# cat /etc/*release Rocky Linux release 8.8 (Green Obsidian) [root@4765cb7f88ce work]# tar --version tar (GNU tar) 1.30 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason.
実行方法
# ディレクトリ階層 [root@4765cb7f88ce work]# tree . └── dir_a └── dir_b └── test.txt 2 directories, 1 file # 前提: /work/dir_a/dir_b/text.txtを、ディレクトリ階層を含めずに「text.txt.tar.bz2」として圧縮したい # ★うまくいくパターン # dir_bを基準パスに指定 [root@4765cb7f88ce dir_b]# echo $PWD /work/dir_a/dir_b # dir_bで以下のコマンドを実行する [root@4765cb7f88ce dir_b]# tar cvjf test.txt.tar.bz2 test.txt test.txt # test.txt.tar.bz2の中身を表示-> ディレクトリ階層が含まれない(期待通りの動作) [root@4765cb7f88ce dir_b]# tar jtvf test.txt.tar.bz2 -rw-r--r-- root/root 10 2023-09-21 16:52 test.txt # ★うまくいかないパターン # /workを基準パスに指定 [root@4765cb7f88ce work]# echo $PWD /work # /workで以下のコマンドを実行する [root@4765cb7f88ce work]# tar cvjf test.txt.tar.bz2 /work/dir_a/dir_b/test.txt tar: Removing leading '/' from member names /work/dir_a/dir_b/test.txt # test.txt.tar.bz2の中身を表示 -> ディレクトリ階層が含まれる [root@4765cb7f88ce work]# tar jtvf test.txt.tar.bz2 -rw-r--r-- root/root 10 2023-09-21 16:52 work/dir_a/dir_b/test.txt # ★基準パスに依存せず期待通りの動作をさせる方法 # /workを基準パスに指定 [root@4765cb7f88ce work]# echo $PWD /work # /workで以下のコマンドを実行する # -C <圧縮ファイルの起点となるパス> <ファイル名>と指定 [root@4765cb7f88ce work]# tar cvjf test.txt.tar.bz2 -C /work/dir_a/dir_b test.txt test.txt # test.txt.tar.bz2の中身を表示-> ディレクトリ階層が含まれない(期待通りの動作) [root@4765cb7f88ce work]# tar jtvf test.txt.tar.bz2 -rw-r--r-- root/root 10 2023-09-21 16:52 test.txt