ここの専門家にとって、これは簡単です。
ユーザーディスククォータが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
。
たとえば、パイプを使用して単一のコマンドでフォルダを圧縮してコピーする方法はありますか?
/opt
PS:読み取り権限しかないため圧縮できません/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を使用しても常に相対パスを使用するのが最善です。