ディレクトリ構造を保持せずにディレクトリをtarするにはどうすればよいですか?


86

バックアップスクリプトに取り組んでいて、ファイルディレクトリをtarアップしたいと思います。

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

これはそれをタール化​​しますが、結果のファイルを解凍すると、完全なファイル構造が含まれhome/username/drupal/sites/default/filesます。ファイルはにあります。

親ディレクトリを除外して、結果のtarが最後のディレクトリ(files)を認識できるようにする方法はありますか?

回答:


39
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

19
tarの-Cオプションを使用することもできます。
GuruM 2013

9
cdは推奨されておらず、大きなスクリプトやメイクファイルなどのエラーが発生しやすくなっています。以下の答えは、より一般的に使用可能で正しいものです。
グレゴール

トライ-C--directoryUbuntuの16.04で私のために動作しませんでした。これは機能する唯一のオプションです。
haxpor 2018

これは、-C addaで機能する唯一のオプションです。ルートフォルダ。これは必要なものではありません。
NicolasDorier19年

169

--directoryオプションを使用します。

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files 

1
ここに2つのディレクトリを配置したい場合はどうすればよいですか?
Shanpei Zhou 2015

@ user3352668は、単に2つのディレクトリを追加するだけです。たとえば、デフォルトに「files」と「morefiles」が含まれている場合は、nbtの文字列に「morefiles」を追加するだけです。ところで:最善の解決策はnbtであり、受け入れられる答えでなければなりません
匿名

4
-CDIR--directory = DIRと同じで、ディレクトリをDIRに変更します
Markus

1
ここでの順序は重要だと言っておきたいと思いました。--directory="/home/username/drupal/sites/default files"目的地の前にいることはできません~/backup.tgz
Chris Stryczynski 2017

6
@ChrisStryczynski--directoryオプションで指定されたパスはではないことに注意してください"/home/username/drupal/sites/default files"。の/home/username/drupal/sites/default後に、tarするディレクトリの名前を指定する定位置引数が続きfilesます。
2017

51

こんにちは私は指定されたディレクトリに入るときそれが不可能であるときより良い解決策を持っています(Makefilesなど)

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

最後のドット(。)もお忘れなく!!


4
最後のドットは何をしますか?
ブルースサン

3
@BruceSun -Cは、作業ディレクトリを変更します。ドットは、アーカイブするディレクトリ(つまり現在の作業ディレクトリ)をtarに示します。
user12345 2017年

2
末尾のドットを省略すると、次の警告が表示される可能性があります。tar:臆病者が空のアーカイブの作成を拒否
user12345 2017年

3
誰もが-Cオプションまたは--directoryについて話しますが、小さな「。」はありません。最後に、@ MaikolDが述べたように、少なくとも私の環境では機能しません。
aks 2018年

6
これはまだであなたを残し.タールのルートにフォルダ
electrovir

2

すべてのTXT(* .TXT)ファイルをgunzipしするには/home/myuser/workspace/zip_from//home/myuser/workspace/zip_to/のソースファイルのディレクトリ構造を持たないと、以下のコマンドを使用します。

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

2

tarアーカイブを作成する

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

ローカルマシン上のファイルを解凍します

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

サーバーにアップロードする

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

サーバーでタールを取り除く

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/


0

私にとって-Cまたは--directoryは機能しませんでした、私はこれを使用します

cd source/directory/or/file
tar -cvzf destination/packaged-app.tgz *.jar
# this will put your current directory to what it previously was
cd -

0

以下のコマンドを使用して、ディレクトリ構造のないtarファイルを生成してください

tar -C <directoryPath> -cvzf <Path of the tar.gz file> filename1 filename2... filename N

例えば:

tar -C /home/project/files -cvzf /home/project/files/test.tar.gz text1.txt text2.txt

-3
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files

-CはあなたのためにCDをします


これは機能しません。MaikoIDとNeilButterworthのソリューションを参照してください。
ヴィンセント

3
-C動作しますが、次のように使用する必要があります-C <dir> file1 file2 ...
vyom 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.