Saya punya dua folder:
- ASLI/
- ORIGINAL_AND_MY_CHANGES /
Teman saya punya salinan ASLI /. Saya ingin membuat MY_CHANGES.tgz - itu hanya boleh berisi file yang baru / diubah dari ORIGINAL_AND_MY_CHANGES / dibandingkan dengan ORIGINAL /. Jadi teman saya dapat membongkar ke salinannya ORIGINAL / dan mendapatkan ORIGINAL_AND_MY_CHANGES /. Bagaimana saya bisa melakukan ini?
PS Saya mencoba diff
tetapi tidak bisa menyimpan data biner dan rsync --link-dest
- ini menghasilkan tautan keras yang tidak berguna dalam arsip.
PPS Dalam kasus modifikasi saya waktu tidak dapat digunakan untuk memutuskan file mana yang diubah.
Jawaban:
Dengan rsync
Apa yang Anda lakukan pada dasarnya adalah cadangan tambahan: teman Anda (cadangan Anda) sudah memiliki file asli, dan Anda ingin membuat arsip yang berisi file yang telah Anda ubah dari aslinya.
Rsync memiliki fitur untuk backup inkremental.
-a
berarti melestarikan semua atribut (waktu, kepemilikan, dll.).-c
artinya membandingkan konten file dan tidak bergantung pada tanggal dan ukuran.--compare-dest=/some/directory
berarti bahwa file yang identik di bawah direktori itu dan pohon sumber tidak disalin. Perhatikan bahwa jalur relatif ke direktori tujuan.Rsync menyalin semua direktori, walaupun tidak ada file yang berakhir di sana. Untuk menyingkirkan direktori kosong ini, jalankan
find -depth CHANGES_ONLY -type d -empty -delete
(atau jika Andafind
tidak memiliki-delete
dan-empty
, jalankanfind -depth CHANGES_ONLY -exec rmdir {} + 2>/dev/null
).Kemudian buat arsip dari
CHANGES_ONLY
direktori.Jalan pejalan kaki
Lintasi direktori dengan file Anda. Lewati file yang identik dengan aslinya. Buat direktori di target sesuai kebutuhan. Salin file yang diubah.
sumber
ORIGINAL
dan buatORIGINAL_AND_MY_CHANGES
cabang? Kemudian cari tahuCHANGES
dengan perintah scm.ORIGINAL
sumber platform Android (3GB, 126000 file). Bahkan menjalankan rsync membutuhkan waktu ~ 15-20 menit. Saya pikir menambahkan semua hal ini di bawah kendali sumber akan memakan terlalu banyak ruang dan waktu.Perintah
akan menghasilkan kumpulan FILE yang berisi perubahan yang diperlukan (tanpa memodifikasi apa pun).
Patch dapat diterapkan di situs lain, tempat Anda mengambil FILE kumpulan, dengan
sumber