0

2 つのディレクトリ ツリー用のパッチセットを作成したいと考えています。これらのディレクトリ ツリーには、無視すべき (バインド) マウントが含まれています。diff -rに似たオプションはありrsyncます-x, --one-file-systemか? または、これにより適した別のツールはありますか?の使用を検討しrsync --compare-destましたが、問題は、この方法で取得した「差分」ディレクトリにファイルの削除に関する情報が含まれていないことです。

chroot背景: ed-into Gentoo stage3 アーカイブに加えられた変更を保存したい

4

1 に答える 1

0

rsync回避策として、現在、 2 回実行して多くの時間を浪費しています。

ORIG=/path/to/original
MOD=/path/to/modded
# find the modified/added files:
mkdir modded && rsync -axP --prune-empty-dirs --compare-dest=$ORIG $MOD/ modded
# the other way around, includes both deleted and modded files
mkdir deleted && rsync -axP --prune-empty-dirs --compare-dest=$MOD $ORIG/ deleted
# find the modded files and remove them
for i in $(find deleted); do [ -e modded${i#deleted} ] && rm $i; done
# delete the empty directories
find modded delete -type d -empty -delete
# create a list of the deleted files
cd deleted && find -type f > ../deleted.list && cd ..
# tar the modifications
cd modded && tar czf ../modded.tgz && cd ..
rm -rf deleted modded

modded.tgz変更/追加されたファイルが含まれるようになりましdeleted.listたが、削除されたファイルの名前が含まれているため、それらを適用するには実行します

tar xf modded.tgz
while read -r line; do rm $line; done < deleted.list

これはおそらく、代わりにパッチファイルを作成するためにも使用できます...

于 2013-11-04T15:47:59.657 に答える