Anda punya tiga folder:
- folder saat ini , yang berisi file-file Anda saat ini
- folder lama , yang berisi versi lama dari file yang sama
- perbedaan folder , yang hanya folder kosong
Bagaimana Anda membandingkan yang lama dengan yang sekarang dan menyalin file yang berbeda (atau yang sama sekali baru) saat ini dengan perbedaan ?
Saya telah mencari di sekitar dan sepertinya hal yang mudah untuk ditangani, tetapi saya tidak bisa membuatnya bekerja dalam contoh khusus saya. Sebagian besar sumber menyarankan penggunaan rsync jadi saya berakhir dengan perintah berikut:
rsync -ac --compare-dest=../old/ new/ difference/
Namun, yang dilakukan adalah menyalin semua file dari yang baru ke yang berbeda , bahkan yang sama seperti yang lama .
Jika ini membantu (mungkin perintahnya baik-baik saja dan kesalahannya terletak di tempat lain), ini adalah bagaimana saya menguji ini:
- Saya membuat tiga folder.
- Saya membuat beberapa file teks dengan konten yang berbeda di yang lama .
- Saya menyalin file dari yang lama ke yang baru .
- Saya mengubah konten beberapa file di baru dan menambahkan beberapa file tambahan.
- Saya menjalankan perintah di atas dan memeriksa hasilnya dengan perbedaan .
Saya telah mencari solusi selama beberapa hari terakhir dan saya sangat menghargai bantuan. Itu tidak harus menggunakan rsync, tetapi saya ingin tahu apa yang saya lakukan salah jika memungkinkan.
Jawaban:
Saya tidak yakin apakah Anda dapat melakukannya dengan perintah linux yang ada seperti rsync atau diff. Tetapi dalam kasus saya, saya harus menulis skrip saya sendiri menggunakan Python, karena python memiliki modul "filecmp" untuk perbandingan file. Saya telah memposting keseluruhan skrip dan penggunaan di situs pribadi saya - http://linuxfreelancer.com/
Penggunaannya sederhana - berikan path absolut dari direktori baru, direktori lama dan direktori perbedaan dalam urutan itu.
sumber
Saya telah menemukan apa masalahnya dalam kasus saya:
File yang saya bandingkan memiliki stempel waktu yang berbeda. Saya seharusnya tidak menggunakan argumen -a , saya berasumsi karena rsync berusaha untuk melestarikan cap waktu ketika menyalin file. Perintah yang bekerja untuk saya adalah:
sumber
rsync -a
"menyalin" file pada awalnya (atau setara dengan cp), kemudian dihapus atau dimodifikasi. (Saya suka tetap menggunakan rsync karena saya tahu itu konsisten sendiri tanpa memikirkan apa yang mungkin dilakukan.) Saya pikir itu seharusnya bekerja dengan perintah asli. Opsi -a termasuk -t (bandingkan dengan stempel waktu), yang merupakan alternatif untuk -c (bandingkan dengan checksum).old/
dannew/
.Ini mungkin membantu beberapa pembaca: Di Windows, program freeware kecil yang lebih tua - Third Dir - melakukan apa yang diminta di sini. Tidak lagi tersedia melalui pengembang, Robert Vašíček. Tapi saya yakin itu dapat ditemukan melalui beberapa repositori online.
Berikut deskripsi pengembang, yang masih ada di situsnya:
Dir Ketiga: Penyinkronisasi direktori yang tidak biasa - berbagai file disalin ke direktori ketiga. Sangat berguna untuk mengekstraksi misalnya foto baru atau yang diedit dari pohon direktori besar pada disk tetap ke folder sementara, kemudian menambahkannya ke arsip CD (perhatikan - file asli dibandingkan dengan CD). Versi 1.4, ukuran 23kB. Dibuat 2005-02-12.
Sejarah: Versi 1.14 - Lebih efisien bila banyak dari sepuluh ribu file dibandingkan.
sumber
Cara rsync yang diberikan oleh Thane dengan tambahan Yamaneko bekerja sangat baik tetapi meninggalkan direktori kosong. Bagi saya solusi terakhir ada dalam dua langkah, pertama panggil rsync dengan path lengkap, lalu perintah find untuk menghapus semua direktori kosong:
Harap dicatat daripada bahkan dengan opsi --links, rsync tidak menyimpan tautan simbolik tetapi menyalin data tujuan.
sumber
-empty -exec rmdir {} \;
Anda dapat menggunakan-empty -delete
.Saya menggunakan dualpane XY Explorer (komersial), yang dapat melakukan banyak trik dan ini adalah salah satunya. Buka
Current
di satu panel dan Tua di yang lain. Aktifkan panel saat ini. Buka Panel > Sinkron Pilih. Ini memberi Anda 5 pilihan untuk memilih:Sekarang Anda dapat menyalin pilihan yang dihasilkan dari
Current
ke tempat yang Anda inginkan. Saya menggunakannya untuk membandingkanmailfolders
dari instalasi lama dengan yang terbaru. Struktur foldernya cukup kompleks, tetapi (hampir) semuanyambs-files
memiliki nomor unik.Jadi saya melakukan pencarian
mbs-files
di root lamamailfolder
(dalam satu panel) serta pada yang terbaru (di panel lain) dan melakukan perbandingan pada hasil pencarian di setiap panel ( Sinkron Pilih Unik , untuk menemukan email yang hilang selama instal ulang)! Anda dapat mengatur banyak opsi juga.sumber