tarに必要なファイルが存在する場所から離れてtarファイルを作成しますか?
これを行うには多くの方法があります。
ローカルで作成する場合(=同じマシン上):
tar czvf /path/to/destination/newfile.tar.gz ./SOURCEDIR_OR_FILES
そのコマンドの最後に、追加のファイルまたはディレクトリをtarに追加できます。
リモートで作成する場合(つまり、風袋引きするデータを含むホストからリモートホストにtarファイルを作成する場合):
tar czvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cat > newfile.tar.gz'
後のバージョンは非常に用途が広いです。たとえば、同じ手法を使用して、ディレクトリ+サブディレクトリを「複製」することもできます。
ディレクトリ+サブディレクトリを別のローカルディレクトリに複製します。
tar cf - ./SOURCEDIR_OR_FILES | ( cd LOCAL_DEST_DIR && tar xvf - )
ディレクトリ+サブディレクトリを別のリモートディレクトリに複製します。
tar cvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cd REMOTE_DEST_DIR && tar xf - '
ファイルがtarで圧縮されている(またはuntarされている)ため、ファイルを表示する必要がない場合は、「v」をドロップします。これにより、速度は大幅に向上しますが、エラーが発生しない限り、あまり意味がありません。
ソースに「。/ ...」を使用して、tarにRELATIVEパスとして保存させます。場合によっては、追加のパス情報を追加する必要があります。
たとえば、/ etc内のファイルを含むcrontabファイルをtarするには、次のようにします。
cd / ; tar czf all_crons.tgz ./etc/*cron* ./var/spool/cron
私は意図的に相対パスを使用しています:tarの古いバージョンは危険で、元のGLOBALパスを持つファイルを抽出する可能性があります。つまりcd /safedir ; tar xvf sometar
、/ safedirの外側にある元のパスにあるグローバル名のファイルでファイルを上書きします。その下にはありません!古いプロダクションサーバーが存在するため、非常に危険です。最近のtarを使用している場合でも、常に相対パスを使用するほうがよいでしょう。
cd /opt; tar zcf $HOME/junk.tar.gz junk
。