Saya ingin dapat mengkompres file tanpa kehilangan, dan jika file asli identik dengan file pengguna lain, saya ingin kedua file terkompresi kami cocok, walaupun tanggal file aslinya berbeda .
Saya ingin menggunakan maksimum 1GB RAM saat mengompresi. Saya condong ke arah algoritma asimetris karena file yang saya miliki cukup besar, dan mereka membutuhkan setidaknya satu jam untuk kompres dengan LZMA1 "ultra" dalam 7-zip pada mesin P4 dengan RAM 1GB dan tidak ada lagi yang berjalan. Saya pikir 7-zip dan FreeARC dapat digunakan untuk keperluan saya. Saya sudah mencoba menemukan perintah yang seharusnya saya gunakan, tetapi saya tidak beruntung.
sunting : 100% file identik harus dihasilkan, walaupun tanggal pembuatannya berbeda. Ini harus dimungkinkan melalui --nodates di Freearc, dan dengan ???? dalam 7-zip. Saya mencari perintah yang setara untuk 7-zip, dan cara untuk membakukan kompresi di beberapa komputer.
sumber
Jawaban:
Buat beberapa file identik:
gzip mereka ...
amati bidang cap waktu sebagai satu-satunya perbedaan:
Untuk info lebih lanjut tentang cap waktu, lihat RFC
Sekarang, Anda dapat mengambil MD5 yang dimulai setelah byte 8, nolkan empat byte ini dalam file Anda dan kehilangan cap waktu mereka, atau ekstrak CRC16 dari gzip tersebut (lihat juga RFC untuk info tentang cara mengekstrak ini)
Atau, Anda dapat menyimpan tanpa stempel waktu:
sumber
gzip
yang tersedia untuk Windows, maka Cygwin menyediakannya.Bukan jawaban langsung untuk pertanyaan Anda tetapi mungkin bisa membantu.
Dahulu (milenium berbeda) saya punya masalah yang sama. Kami ingin tahu apakah file terkompresi di tempat yang sama tanpa mendekompresinya dan membandingkannya.
Solusi kami adalah mendapatkan md5sum file sebelum mengompresnya, kemudian kami mengompres file dan menamainya menjadi
md5sum.zip
(.zip atau .tar.gz atau .rar atau. Apa pun) . Dengan begitu kami tahu bahwa jika dua file memiliki nama yang sama (tanpa akhiran) mereka identik.sumber
pristine-tar memiliki versi gzip yang diretas yang selalu menghasilkan hasil yang sama (dan yang lain untuk bzip2). Pilih varian algoritme dan cap waktu dan Anda siap melakukannya.
sumber
Meretas ke sumber 7-zip. Di mana ia membaca tanggal file, cukup masukkan kode untuk mengubah tanggal ke 01.01.1997, atau yang lainnya - diperbaiki untuk semua file. Kompilasi dengan nama yang berbeda dan gunakan.
sumber