フォルダとtarballを比較する

フォルダとtarballを比較する

ディレクトリ構造は次のようになります

Code
├── cse701.tgz
└── cse701
    ├── cse701.md
    ├── CSE701.md
    ├── CSE701_pandoc.md
    ├── cse701.pdf
    ├── cse.pdf
    ├── default.yaml
    ├── html2tex.log
    ├── test.md
    └── missing.md

tarball の構造は次のようになります。

drwxrwxr-x zenith/zenith     0 2020-12-02 20:18 cse701/
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/default.yaml
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/CSE701.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/CSE701_pandoc.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/html2tex.log
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/test.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse701.pdf
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse.pdf
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse701.md
tar --diff -zf cse701.tgz  cse701/
tar --compare -zf cse701.tgz  ./cse701/

比較と差分のオプションは、この郵便受けディスクから欠落しているファイルが tarball 上にないことを指摘する必要があります。

しかしgnu tar ドキュメントファイルは変更されているかどうかを表示しますが、アーカイブ内に対応するメンバーがないファイル システム内のファイルは無視します。ファイルがアーカイブ内に存在していてもファイル システム内に存在しない場合、tar は差異を報告します。

では、tarball を作成した後にフォルダーに新しいファイルが追加されたかどうかを確認するにはどうすればよいでしょうか?

答え1

これはワンライナーではありませんが、必要なことを実行します。

cd /path/to/Code
tar -tf cse701.tgz | sed 's#/$##' >tgz
find cse701 >fs
diff -uw fs tgz
rm fs
rm tgz

説明:

  • まず、関連するディレクトリに移動します
  • 次に、tar.gz の内容を一覧表示し、/行末の es を削除します (tar -tディレクトリの場合はそこに配置します)。
  • find次に、対応するファイルシステムサブツリー内のすべてのファイルとディレクトリを検索します(いいえ /esの最後に
  • これら2つのリストを比較します
  • そして掃除する

関連情報