tarファイルの作成または更新(存在する場合)

tarファイルの作成または更新(存在する場合)

今日、私はすべてのファイルとディレクトリを指定されたディレクトリに圧縮しようとしたときにこの問題に直面しました。ファイルが隠されているので、次のことを行うだけでは不十分です(次.から始まるファイルを除く)。

tar -czvf ~/tarfile.tar.gz /path/to/dir/*

それから次のような考えをしました。

find /path/to/dir/* -execdir /bin/tar -czvf ~/tarfile.tar.gz '{}' +

しかし、これだけでは十分ではありません。execdirコマンド先取制限に達して同じコマンドを再実行して残りのファイルセットを見つける必要がある場合はどうなりますか?

したがって、tarファイルが存在しない場合は、tarファイルを生成するオプションまたは方法が必要です。ある場合は追加します。この問題の解決策を見つけようとしましたが、成功しませんでした。このオプションを検討しましたが、すでに-r生成されたtarファイルが必要であるため、成功しませんでした。

これは方法がなく、このロジックを達成するためにミニスクリプトを書く必要があることを意味しますか?

答え1

tar czvf ~/tarfile.tar.gz /path/to/dir/「.」で始まるファイルを防ぐには、「*」なしでファイルを使用してください。包含から除外されます。

既存のファイルを更新する場合tarfile.tar.gz(つまり、ファイルを追加する場合)、それを更新するにはいくつかのヒントが必要です。 tarは "gzipped"ファイルの更新に問題があるためです。この1行のコードは、ファイルを「圧縮解除、更新、圧縮」するか、新しいファイルを生成します。

[ -f tarfile.tar.gz ] && (gunzip tarfile.tar.gz; tar uf tarfile.tar /path/to/dir/; gzip tarfile.tar) || tar cvfz tarfile.tar.gz /path/to/dir/

最も簡単なオプションは、tar uf tarfile.tar /path/to/dir/それを使用してファイルを作成するか、ファイルを更新することです。後で手動で圧縮する必要があります(最初に別の場所にコピー)。

関連情報