質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

4回答

1568閲覧

Linuxでの圧縮ファイル解凍先について

begginer_pygo

総合スコア16

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2021/06/09 07:06

現在Linux上にバックアップ用のCSVが1日1回作成されるような運用をしております。
CSVファイルが大きいため、自動で圧縮できるよう以下のようなシェルを作成して使用しています。

#!/bin/sh # バックアップファイルを何日分残しておくか period='+14' # バックアップファイルを保存するディレクトリ dirpath='/home/user/data/backup/aaaaa/compression_file' #バックアップ元フォルダ backupfolder="/home/user/data/backup/aaaaa/*.csv" #ファイル名を定義(※ファイル名で日付がわかるようにしておきます) mydate=`date +%y%m%d` filename="backup_$mydate.tar.gz" #backup実行 tar -zcvf $dirpath/$filename $backupfolder # パーミッション変更 chmod 700 $dirpath_count/$filename #古いバックアップファイルを削除 find $dirpath -type f -daystart -mtime $period -exec rm {} \;

/home/user/data/backup/aaaaa/compression_fileでtar -zxvf xxxx.tar.gzを叩いてファイルを解凍すると新しく/home以下のディレクトリが作成され、そこに解凍されてしまっています。
/home/user/data/backup/aaaaa/compression_file内に解凍したファイルを置く方法はありますでしょうか?

#シェル実行後、ファイルを解凍する cd /home/user/data/backup/aaaaa/compression_file tar -zxvf xxxx.tar.gz home/user/data/backup/aaaaa/hogehoge.csv #解凍先パスが/home/user/data/backup/aaaaa/compression_file/home/user/data/backup/aaaaa/compression_fileとなってしまいます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

otnさん、yukky1201さんの回答のとおり、tarファイルを作るときに対応するのが良いと思いますが、
すでに作ってしまったファイルについては、--strip-componentsを指定して展開したらどうでしょうか。

tar -zxvf xxxx.tar.gz --strip-components=6

前についているディレクトリを指定した個数除いて展開します。(数字が6でいいかは自分で試して確認ください)

投稿2021/06/10 00:13

bsdfan

総合スコア4596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

案3:フルパス指定でtarせずに、該当ディレクトリに移動してからtarする。

backupfolder="/home/user/data/backup/aaaaa/" cd $backupfolder tar -zcvf $dirpath/$filename *.csv

投稿2021/06/09 09:37

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/06/14 09:28

案2と同じですね。
guest

0

案1:失敗結果から考えつく方法

sh

1cd / 2tar -zxvf xxxx.tar.gz

案2:作成時にディレクトリ情報を相対パスにしておく

sh

1pushd /home/user/data/backup/aaaaa/ 2tar -zcvf $dirpath/$filename *.c 3popd

投稿2021/06/09 07:24

otn

総合スコア84798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2021/06/09 07:10

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問