コピーせずに別のディレクトリのtarファイル

コピーせずに別のディレクトリのtarファイル

ここの専門家にとって、これは簡単です。

ユーザーディスククォータが6GBにすぎないLinuxアカウントがあります。一部のデータフォルダには/opt約3GBのデータが含まれており、最大1GBまで圧縮できます。内部にはいくつかのシンボリックリンクがありますdata-folder。通常、ジョブをバックアップするには、次の作業を頻繁に実行します。

cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder

これで私のユーザーディスククォータの2.5 GBが消費されたので、家にファイルをコピーするためのスペースしか残りませんtar

たとえば、パイプを使用して単一のコマンドでフォルダを圧縮してコピーする方法はありますか?

/optPS:読み取り権限しかないため圧縮できません/opt

ベストアンサー1

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 - '

圧縮(または圧縮されていない)ファイルを表示するために必要でない場合は、「v」を削除してください。これにより、より速く実行されますがエラーが発生しない限り、多くの内容がわかりません。

私は "./..."をソースとして使用し、tarを相対パスとして保存するようにしました。場合によっては、追加のルート情報を追加する必要があります。

たとえば、crontabファイル(/ etcのファイルを含む)を圧縮するには、次のようにします。

cd / ; tar czf all_crons.tgz  ./etc/*cron*  ./var/spool/cron

意図的に相対パスを使用しています。一部の古いバージョンのtarは危険であり、元のグローバルパスを使用してファイルを抽出します。つまり、次のことができます。cd /safedir ; tar xvf sometarグローバル名のファイルが元のパス(/ safedirの外にある)を上書きするようにします。その下に代わり!非常に危険ですが、古い本番サーバーがあるため、まだ可能です。最新のtarを使用しても常に相対パスを使用するのが最善です。

おすすめ記事