同様のファイルを含む2つのディレクトリツリー(実際にはmacOSボリューム)があり、2つのソースツリー間で変更されたファイルのみを含む3番目のディレクトリツリーを作成しようとしています。
どうすればいいですかrsync
?それともこれを達成するために別のツールを使用する必要がありますか?
答え1
- 使用同期(目安としてこの回答):
SOURCE_TREE_1="/some/where/tree_1" SOURCE_TREE_2="/some/where/tree_2" DIFF_DIR="/some/where/diff" rsync --dry-run \ --recursive \ --checksum \ --itemize-changes \ "$SOURCE_TREE_1/" "$SOURCE_TREE_2" | # trailing '/' in source directory is necessary! grep -E '^>fc' | # grep files with different checksums cut -d ' ' -f 2- | while read file; do subdir="${file%/*}"; [ "$file" != "$subdir" ] && mkdir -p "$DIFF_DIR/$subdir"; # Change `"$SOURCE_TREE_1/$file"` to `"$SOURCE_TREE_1/$file"` in the next # line if you want copy from source tree #2. cp -a "$SOURCE_TREE_1/$file" "$DIFF_DIR/$file"; done
- 使用子:
cd "$SOURCE_TREE_1" git init . git add . git commit -m 'Init' # Note: Here git may ask you to set name and email # replace all files with files from source tree #2 rm -rf $(git ls-tree --name-only HEAD) rsync --archive "$SOURCE_TREE_2/" . # show changes briefly: git status -uno # show changes for some file: git diff "path/to/file" # restore source tree #1 state git restore .