rsyncを使用
あなたがやっていることは本質的に増分バックアップです:あなたの友人(あなたのバックアップ)はすでにオリジナルのファイルを持っています、そしてあなたはそのオリジナルから変更したファイルを含むアーカイブを作りたいです。
Rsyncには増分バックアップの機能があります。
cd ORIGINAL_AND_MY_CHANGED
rsync -a -c --compare-dest=../ORIGINAL . ../CHANGES_ONLY
-a
すべての属性(時間、所有権など)を保持することを意味します。
-c
ファイルの内容を比較し、日付とサイズに依存しないことを意味します。
--compare-dest=/some/directory
そのディレクトリとソースツリーの下で同一のファイルはコピーされないことを意味します。パスは宛先ディレクトリからの相対パスであることに注意してください。
Rsyncは、ファイルがそこに終わらない場合でも、すべてのディレクトリをコピーします。これらの空のディレクトリをfind -depth CHANGES_ONLY -type d -empty -delete
削除するにfind
は、を実行します(または、-delete
and がない場合はを-empty
実行しますfind -depth CHANGES_ONLY -exec rmdir {} + 2>/dev/null
)。
次に、CHANGES_ONLY
ディレクトリからアーカイブを作成します。
歩行者道
ファイルを含むディレクトリをトラバースします。オリジナルと同一のファイルをスキップします。必要に応じて、ターゲットにディレクトリを作成します。変更されたファイルをコピーします。
cd ORIGINAL_AND_MY_CHANGES
find . \! -type d -exec sh -c '
for x; do
if cmp -s "$x" "../ORIGINAL/$x"; then continue; fi
[ -d "../CHANGES_ONLY/$x" ] || mkdir -p "../CHANGES_ONLY/${%/*}"
cp -p "$x" "../CHANGES_ONLY/$x"
done
' {} +