ディレクトリに存在するファイルのみを tar する方法。私はホームディレクトリにいることを試みtar -cvf /tmp/test.tar /tmp/mylog.doc
ましたが、解凍すると内容にtmp
ディレクトリも含まれていました。mylog.doc
tar ファイルに存在するファイルだけが必要です。同様のクエリ
tarring only the files of a directory が表示されます。しかし、それから多くの助けを得ることができませんでした。
2 に答える
コマンド ライン パラメーターを使用-C
して、作業するディレクトリを指定します。次に、このディレクトリに関連するファイル名を使用できます。
tar -cvf /tmp/test.tar -C /tmp mylog.doc
これは tar ファイル自体には適用されないことに注意してください。
cd sourcedir ; tar cvf archive.tar ./file_to_tar
「/path/to/file」または「./path/to/file」を使用すると、結果のtarファイルに「path/to/」が追加されるためです(特定の(そしておそらく移植不可能な)オプションがtarにそうでないことを伝えている場合を除きます)
注: あまり古くない実稼働システムの中には、抽出時に先頭の「/」を取り除くことができないものもあります。
それらの「それほど古くない」システムでは:
tar cvf /tmp/hosts-backup.tar /etc/hosts
cd /secure/location
tar xvf /tmp/hosts-backup.tar
/secure/location の下に「./etc/hosts」ファイルを出力する代わりに、ファイル /etc/hostsを上書きします。(ほとんどの「最近の」tar が現在行っているように: 末尾の「/」を黙って無視し、パスを絶対ではなく相対にします。これは 99.9% の人々が望んでいることです)
私は最近、これでやけどを負いました:ログを抽出したかったのですが、そのログは元の場所を上書きしてしまいました(したがって、そこにあるより新しいログファイルを上書きしました)。システムで初めて tar を使用する前に、必ずこれを確認してください。(いくつかの回避策がありますが、簡単ではありません: chroot、および「sar」などの他のコマンド)