Tar は --directory オプションを無視します。

Tar は --directory オプションを無視します。

ディレクトリをインポートし、別の場所から自分のホームディレクトリにそのディレクトリのアーカイブを作成しようとしています。その-Cオプションがこの目的に使用できることはわかっていますが、無視tarされるようです。$(basename $DEST)_$(date +%F_%H%M%S).tar.gz -C $HOME $(basename $DEST)アーカイブしたいディレクトリのパスがどこにあるか試してみました。$DEST私のホームディレクトリにアーカイブを作成する代わりに、tarは私が実行したディレクトリにアーカイブを作成し続けます。 tarの実行方法に問題がありますか?フラグが完全に無視されることを除いて、他のすべてはうまく機能しているようです-C。私はLinux Mint 18.3 XFCEバージョンを使用しています。

編集する:完全なコマンドはですtar czf Pictures_$CREATION_TIMESTAMP.tar.gz -C /home/$USER Pictures/home/$USER/coding/python_code/

ベストアンサー1

-Cアーカイブが作成される場所には影響しません。これは、アーカイブに追加されるファイルにのみ影響します。たとえば、指定された場合はtar cvf foo.tar a -C /b c -C /d e現在のディレクトリに追加しtar、切り替えて追加し、切り替えて追加します。現在のディレクトリ(元のディレクトリ)に作成されます。a/bc/defoo.tara

追加するファイルがコマンドラインに提供されていませんが、使用されて-C /some/dirいる場合は、そのファイル内のすべての内容がアーカイブに切り替わり、tar追加されます。/some/dir

(したがって、解凍されたときにアーカイブファイルが見つかる-C場所には影響しません。解凍されたファイルがどこに行くかにのみ影響します。)tar

したがって、tar czf Pictures_$CREATION_TIMESTAMP.tar.gz -C /home/$USER Picturesfromは常にfromディレクトリ/home/$USER/coding/python_code/にアーカイブを作成します。/home/$USER/coding/python_code/Pictures/home/$USER

で作成されたアーカイブにディレクトリを追加するには、Picturesアーカイブを作成する必要があります。/home/$USER/home/$USERcd/home/$USER

cd "/home/$USER"; tar czf "Pictures_$CREATION_TIMESTAMP.tar.gz" Pictures

または、アーカイブパスを指定します。

tar czf "/home/$USER/Pictures_$CREATION_TIMESTAMP.tar.gz" -C "/home/$USER" Pictures

おすすめ記事