Cara untuk mendupuplikasi file

10

Saya hanya ingin mencadangkan dan mengarsipkan file di beberapa mesin. Sayangnya, file-file tersebut memiliki beberapa file besar yang merupakan file yang sama tetapi disimpan secara berbeda pada mesin yang berbeda. Misalnya, mungkin ada beberapa ratus foto yang disalin dari satu komputer ke komputer lain sebagai cadangan ad-hoc. Sekarang saya ingin membuat repositori file yang umum, saya tidak ingin beberapa salinan dari foto yang sama.

Jika saya menyalin semua file ini ke direktori tunggal, apakah ada alat yang dapat melalui dan mengenali file duplikat dan memberi saya daftar atau bahkan menghapus salah satu dari duplikat?

Pengguna1
sumber

Jawaban:

3

Buat md5sum setiap file, duplikat md5sums menyarankan (tetapi tidak menjamin) file duplikat.

Bryan
sumber
1
mereka sangat "menyarankan", namun :) ..dan jika file berukuran sama, kemungkinan saran yang benar sangat tinggi
warren
2

Anda bisa menggunakan dupemerge untuk mengubah file identik menjadi hardlink. Ini akan memakan waktu yang sangat lama pada satu set file besar. Hash file SHA (atau MD5) hampir pasti akan bekerja lebih cepat, tetapi Anda harus melakukan lebih banyak kerja keras dalam menemukan duplikat. Kemungkinan tabrakan tidak disengaja sangat rendah sehingga pada kenyataannya Anda bisa mengabaikannya. (Faktanya, banyak produk deduplikasi sudah melakukan ini.)

Taruhan terbaik Anda untuk berurusan dengan foto dan musik adalah untuk mendapatkan alat yang dirancang khusus untuk menemukan duplikat item tersebut pada khususnya. Terutama karena Anda mungkin tidak memiliki file yang identik pada tingkat biner setelah hal-hal seperti penandaan atau pemotongan atau penyandian perbedaan ikut bermain. Anda akan menginginkan alat yang dapat menemukan foto yang "terlihat" sama dan musik yang "terdengar" sama bahkan jika penyesuaian kecil telah dilakukan pada file.

afrazier
sumber
1
hardlinksangat cepat (butuh 200 detik untuk file 1.2M, 320GB)
Marcel Waldvogel
1

Nah, jika Anda memiliki kemampuan, Anda dapat mengatur sistem file deduplicating dan meletakkan cadangan Anda pada itu. Ini tidak hanya akan menghapus seluruh file, tetapi juga potongan file yang serupa. Misalnya, jika Anda memiliki JPEG yang sama di beberapa tempat, tetapi dengan tag EXIF ​​yang berbeda pada setiap versi, sistem file deduplicating hanya akan menyimpan data gambar sekali.

Sistem file deduplicating termasuk lessfs, ZFS, dan SDFS.

Ryan C. Thompson
sumber
1
Saya tidak dapat berbicara tentang deduplikasi pada SDFS atau lessfs, tetapi Dedupe di ZFS tidak berfungsi seperti ini. Itu memeriksa pada tingkat blok, jadi file yang identik kemungkinan akan ditandai untuk dedupe, tetapi file yang memiliki header yang berbeda kemungkinan tidak. Selain itu, file yang lebih kecil dari ukuran ZFS Anda (standarnya adalah 128KB) dapat dikemas dalam satu blok bersama-sama, sehingga mereka mungkin tidak mendapat manfaat dari dedupe.
notpeter
Sistem file terduplikasi (zfs atau btrfs) hanya menghemat ruang pada host cadangan. Itu tidak menyimpan jumlah data yang ditransfer. Ada ide untuk menghitung beberapa hash untuk file dan mengirimkannya ke host cadangan. ketika tertulis "I have it", cadangan untuk file itu selesai. Ini diterapkan pada perangkat lunak cadangan (uang) yang sangat mahal. Saya tidak pernah mendengarnya di open source. Tapi mungkin itu diterapkan sekarang, siapa tahu :)
Znik
@Znik rsync --link-destadalah teman Anda jika Anda ingin menghemat saat baca / transfer juga. Pengantar sederhana ada di sini: netfuture.ch/2013/08/...
Marcel Waldvogel
ini bekerja dengan menguji inode yang ditugaskan ke file. tetapi ketika deduplikasi disembunyikan, misalnya dalam sistem file squashfs, maka rsync tidak dapat memeriksa ini dan akan mentransfer data yang sama berkali-kali.
Znik
0

Ketika saya melakukan hal semacam ini, saya belajar bahwa itu jauh lebih menarik / efisien waktu untuk benar-benar hanya memeriksa file sendiri di waktu luang Anda, selama beberapa minggu. Anda dapat membedakan antara hal-hal yang jauh lebih baik daripada komputer Anda.

Jika Anda tidak setuju, maka saya sarankan EasyDuplicateFinder . Seperti yang saya sebutkan di atas, meskipun, akan memakan waktu lama, katakanlah, sekitar satu hari untuk 5GB file.

Dan pada catatan lain, Crashplan melakukan apa yang Anda lakukan sebelumnya, tetapi dengan cara yang jauh lebih terorganisir, bukan versi.

digitxp
sumber
0

Kemungkinan lain, menganggap mesin yang Anda cadangkan akan mendukungnya, adalah menggunakan sesuatu seperti rsync.

Jika Anda rsyncdari A ke B, maka dari C ke B, lalu dari D ke B, dll, duplikat yang tepat (yaitu dengan nama file) akan dihilangkan (dan disinkronkan antara mesin yang Anda buat cadangannya).

Namun, jika Anda tidak ingin semuanya disinkronkan, ini bukan cara terbaik.

warren
sumber
0

Untuk file gambar, gunakan pencarian gambar . Itu juga dikemas dalam debian .

cweiske
sumber
findimagedupes adalah untuk foto atau grafik, mungkin dikonversi dari satu format ke format lainnya. foto (i home) hanya contoh yang dipermasalahkan. Mungkin file besar lainnya.
Znik
0

Tautan keras hanya melakukan deduplikasi jika seluruh file identik. Jika header (EXIF, ID3, ...) atau metadata (pemilik) berbeda, mereka tidak akan ditautkan.

Ketika Anda memiliki kesempatan untuk menggunakan sistem file dengan dukungan deduplikasi blok (ZFS, btrfs, ...) gunakan itu. Saya sangat menyukai dukungan deduksi offline (alias batch ) dari btrfs, yang mendukung deduplikasi tingkat-tingkat dan tidak terus-menerus mengonsumsi memori dalam jumlah besar (seperti dedup online ZFS).

Deduplikasi juga memiliki keuntungan bahwa file dapat dimodifikasi oleh pengguna tanpa pemberitahuan salinan lainnya (yang mungkin tidak berlaku dalam kasus Anda, tetapi pada orang lain).

Lihat https://btrfs.wiki.kernel.org/index.php/Deduplication untuk diskusi yang sangat baik.

Marcel Waldvogel
sumber