අනුපිටපත් ගොනු දෘඩ සබැඳි සමඟ ප්‍රතිස්ථාපනය කිරීමට පහසු ක්‍රමයක් තිබේද?


150

findඩිරෙක්ටරි දෙකක අනුපිටපත් ගොනු සොයා ගැනීමට පහසු ක්‍රමයක් (විධානයක් හෝ විධාන මාලාවක්, බොහෝ විට සම්බන්ධ විය හැකිය ), සහ එක් ඩිරෙක්ටරියක ඇති ගොනු අනෙක් ඩිරෙක්ටරියේ ඇති ගොනු වල දෘඩ සබැඳි සමඟ ආදේශ කරන්න.

මෙන්න තත්වය: මෙය ගොනු සේවාදායකයක් වන අතර එය බහු පුද්ගලයින් ශ්රව්ය ලිපිගොනු ගබඩා කරයි, සෑම පරිශීලකයෙකුටම තමන්ගේම ෆෝල්ඩරයක් ඇත. සමහර විට බහුවිධ පුද්ගලයින්ට එකම ශ්රව්ය ලිපිගොනු වල පිටපත් තිබේ. දැන්, මේවා අනුපිටපත් වේ. දෘ hard තැටියේ ඉඩ ඉතිරි කර ගැනීම සඳහා ඒවා දෘඩ සබැඳි බවට පත් කිරීමට මම කැමතියි.


21
ඔබ දෘඩ සබැඳි සමඟ සම්බන්ධ විය හැකි එක් ගැටළුවක් නම්, ඔබ අමාරුවෙන් සම්බන්ධ කර ඇති ඔවුන්ගේ සංගීත ලිපිගොනු වලට යමෙකු යමක් කිරීමට තීරණය කළහොත් ඔවුන් නොදැනුවත්වම ඔවුන්ගේ සංගීතයට වෙනත් පුද්ගලයින්ගේ ප්‍රවේශයට බලපානු ඇත.
ස්ටීවන් ඩී

4
තවත් ගැටළුවක් නම්, “සමහර සැබවින්ම නියම නාදය” අඩංගු විවිධ ලිපිගොනු දෙකක්, එකම කේතයකින් එකම ප්‍රභවයකින් ලබා ගත්තද, එය බොහෝ දුරට සමාන නොවනු ඇත.
msw

3
වඩා හොඳ ද්‍රාවණය පොදු සංගීත ෆෝල්ඩරයක් තිබීම විය හැකිය ...
ස්ටෙෆාන්


1
anttante: සිම්ලින්ක් භාවිතා කිරීමෙන් කිසිදු ගැටළුවක් විසඳෙන්නේ නැත. පරිශීලකයෙකු ගොනුවක් "මකා දැමූ විට", එයට සබැඳි ගණන අඩු වේ, ගණන් බිංදුවට ළඟා වූ විට, ගොනු සැබවින්ම මැකෙනු ඇත, එපමණයි. එබැවින් මකාදැමීම දෘඩ සබැඳි ලිපිගොනු සමඟ ගැටළුවක් නොවේ, එකම ගැටළුව පරිශීලකයා ගොනුව සංස්කරණය කිරීමට උත්සාහ කිරීම (ඇත්ත වශයෙන්ම අනුමත කළ නොහැකි) හෝ එය නැවත ලිවීමට උත්සාහ කිරීමයි (පුරනය වී ඇත්නම් එය කළ හැකි ය).
maaartinus

Answers:


42

Http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.002/eg/trimtrees.pl හි පර්ල් පිටපතක් ඇත, එය ඔබට අවශ්‍ය දේ හරියටම කරයි:

විධාන රේඛාවේ නම් කර ඇති සියලුම නාමාවලි හරහා ගමන් කරන්න, MD5 චෙක්සම් ගණනය කර සමාන MD5 සහිත ගොනු සොයා ගන්න. ඒවා සමාන නම්, ඒවා සැබවින්ම සමාන නම් සැබෑ සැසඳීමක් කරන්න, ලිපිගොනු දෙකෙන් දෙවැන්න පළමු එකට දෘ link සබැඳියක් මගින් ආදේශ කරන්න.


ශබ්ද පරිපූර්ණ , ස්තූතියි !! විස්තර කර ඇති පරිදි එය ක්‍රියාත්මක වන්නේ නම් මම එය උත්සාහ කරමි.
ජොෂ්

3
මේක මම ඉල්ලපු දේම කළා. කෙසේ වෙතත්, අඩුකිරීම් සහිත ZFS අවසානයේදී කළ හැකි ක්‍රමයක් වනු ඇතැයි මම විශ්වාස කරමි, මන්ද ලිපිගොනු වල සුළු වෙනස්කම් ඇති බව මට පෙනී ගිය හෙයින් ඒවා කිහිපයක් පමණක් සබැඳි කළ හැකිය.
ජොෂ්

11
මෙය ඉහළට ඔසවා ඇත, නමුත් තවත් කිහිපයක් පර්යේෂණ කිරීමෙන් පසුව, මම නොකළ ආකාරයේ. rdfindසියලුම ප්‍රධාන වේදිකා (os x, linux, (cyg) win, solaris) සඳහා පැකේජ කළමණාකරුවන් හරහා ලබා ගත හැකි අතර එය ස්වදේශීය වේගයෙන් ක්‍රියාත්මක වේ. එබැවින් පහත පිළිතුර බලන්න.
ඔලිගෝෆ්‍රන්

igoligofren මමත් ඒ දේම හිතුවා, නමුත් පසුව මම පහර දුන්නා [Errno 31] Too many links. එය හසුරුවන එකම දෙය මෙම පිටපත් බව පෙනේ.
phunehehe

6
අවම වශයෙන් එක සමාන ප්‍රමාණයක් ඇති ලිපිගොනු පමණක් නොව සෑම ගොනුවක්ම පරීක්ෂා කිරීම අනවශ්‍ය ලෙස අකාර්යක්ෂම වේ (සහ අනවශ්‍ය ලෙස හැෂ් isions ට්ටන වලට ගොදුරු වේ).
චාල්ස් ඩෆි

104

rdfindඔබ ඉල්ලන දේ හරියටම කරයි (සහ ජොනී අනුපිළිවෙලට ලැයිස්තු ගත කරන්නේ ඇයි ). අනුපිටපත් මකා දැමීමට, ඒවා මෘදු හෝ දෘඩ සබැඳි මගින් ප්‍රතිස්ථාපනය කිරීමට ඉඩ සලසයි. symlinksඔබ සමඟ ඒකාබද්ධව සිම්ලින්ක් නිරපේක්ෂ හෝ සාපේක්ෂ බවට පත් කළ හැකිය. ඔබට චෙක්සම් ඇල්ගොරිතම (md5 හෝ sha1) පවා තෝරා ගත හැකිය.

එය සම්පාදනය කර ඇති බැවින් එය බොහෝ ස්ක්‍රිප්ට් කළ විසඳුම් වලට වඩා වේගවත් ය: time2009 සිට මගේ මැක් මිනි හි ලිපිගොනු 2600 ක් සහිත 15 GiB ෆෝල්ඩරයක මෙය නැවත ලබා දෙයි

9.99s user 3.61s system 66% cpu 20.543 total

(md5 භාවිතා කරමින්).

බොහෝ ඇසුරුම් හසුරුවන්නන්ගෙන් ලබා ගත හැකිය (උදා: මැක් ඕඑස් එක්ස් සඳහා මැක්පෝර්ට්ස්).


12
+1 මම එය භාවිතා rdfindකර ආදරය කළෙමි . එයට -dryrun trueවිකල්පයක් ඇත, එය කුමක් කර ඇත්දැයි ඔබට දන්වනු ඇත. දෘඩ සබැඳි සමඟ අනුපිටපත් ආදේශ කිරීම තරම් සරල ය -makehardlinks true. එය ලස්සන ලොගයක් නිපදවූ අතර එය කොපමණ ඉඩ ප්‍රමාණයක් නිදහස් කර ඇත්දැයි මට දන්වයි. ප්ලස්, කතුවරයාගේ මිණුම් ලකුණට අනුව , rdfind ඩෆ් සහ fslint වලට වඩා වේගවත් වේ.
ඩැනියෙල් ට්‍රෙබියන්

ඔහ්, හොඳයි. මම fdupes භාවිතා කළෙමි, නමුත් දෘඩ සබැඳි ඩියුප් සඳහා එහි -L විකල්පය නවතම උබුන්ටු 14.10 හි නොමැත. තරමක් මන්දගාමී වූ අතර OSX හි හෝම්බ rew සඳහා නොතිබුණි, එබැවින් මෙම පිළිතුර වඩා හොඳය. ස්තූතියි!
ඔලිගෝෆ්‍රන්

ඉතා දක්ෂ හා වේගවත් ඇල්ගොරිතම.
ndemou

3
මෙම මෙවලමෙහි ක්‍රියාකාරීත්වයට ඇල්ගොරිතම සමඟ වැඩි සම්බන්ධයක් ඇති බවත් එය සම්පාදනය කරන ලද මෙවලමක් හෝ ස්ක්‍රිප්ට් එකක්ද යන්න සමඟ අඩු සම්බන්ධයක් ඇති බවත් මම සැක කරමි. මේ ආකාරයේ ක්‍රියාකාරිත්වය සඳහා, තැටිය සෑම විටම පාහේ බාධකයක් වනු ඇත. චෙක්සම් මත CPU දහනය කරන අතරම, අසමමුහුර්ත I / O මෙහෙයුමක් ක්‍රියාත්මක වන බවට ස්ක්‍රිප්ට් කරන ලද මෙවලම් සහතික කරන තාක් කල්, ඒවා දේශීය ද්විමයක් මෙන්ම සිදු කළ යුතුය.
cdhowie

rdfind නව මෙහෙයුම් පද්ධතිය සහ සම්පාදකය මත බෙහෙවින් රඳා පවතී. (සංවර්ධන මෙවලම් සම්පූර්ණයෙන්ම ප්‍රතිනිර්මාණය කිරීමකින් තොරව CentOS 6.x මත ධාවනය නොවේ)
කොස්මෝ එෆ්

51

fdupesමෙවලම භාවිතා කරන්න :

fdupes -r /path/to/folderනාමාවලියෙහි අනුපිටපත් ලැයිස්තුවක් ඔබට ලබා දෙයි (-r එය පුනරාවර්තනය කරයි). ප්‍රතිදානය මේ වගේ ය:


filename1
filename2

filename3
filename4
filename5


ගොනු නාමය 1 සහ ගොනු නාමය 2 සමාන වන අතර ගොනු නාම 3, ගොනු නාමය 4 සහ ගොනු නාම 5 ද සමාන වේ.


1
උබුන්ටු සටහන: 2013 සැප්තැම්බර් වන විට එයට ස්ථාවර නිකුතුවක් නොමැත (එය 1.50-PR2-3 මත පවතී), එබැවින් යාවත්කාලීනය තවමත් උබුන්ටු වල නොපෙන්වයි.
ස්ටුවර්ට් ඇක්සන්

11
මම උබුන්ටු සහ ඩෙබියන් යන දෙඅංශයෙන්ම fdupes_1.50-PR2-4 ස්ථාපනය කිරීමට උත්සාහ කළෙමි, -L ධජය ද නැත. වාසනාවකට github.com/tobiasschulz/fdupes වෙතින් ගොඩනැගීම ඉතා පහසු විය.
neu242

3
OS X සහ Cygwin හි ද උත්සාහ කරන්න rdfind- වැනි fdupes, නමුත් වේගවත් හා ලබා ගත හැකිය.
ඔලිගෝෆ්‍රන්

6
fdupesපෙනෙන ආකාරයට අනුපිටපත් පමණක් සොයා ගත හැකි අතර ඒවා දෘඩ සබැඳි සමඟ ප්‍රතිස්ථාපනය නොකරන්න, එබැවින් IMO ප්‍රශ්නයට පිළිතුරක් නොවේ.
කැලිමෝ

4
එහි නමින් සමාන මෙවලමක් වේ jdupesමත පදනම් තියෙන්නේ බව fdupes, නමුත් එය ද symlinks සමග අනුපිටපත් ගොනු විස්ථාපනය කල හැකි ( -l), hardlinks ( -L() හෝ උපදෙස් ලබා btrfs ගොනු පද්ධතියේ මට්ටමින් කුට්ටි deduplicate කිරීමට -Bඔබ btrfs භාවිතා කරන්නේ නම්,).
මාරියස් ගෙඩ්මිනාස්

24

මම භාවිතා hardlinkකරන්නේ http://jak-linux.org/projects/hardlink/


1
හොඳ ඉඟියක්, මම සාමාන්‍ය පාදක කේතයක් භාවිතා කරමි. Google.com/p/hardlinkpy නමුත් මෙය ටික වේලාවක් යාවත්කාලීන නොවීය ...
meduz

2
මෙය hardlinkෆෙඩෝරා / ආර්එච්එල් / යනාදී මුල් පිටපතට සමාන බව පෙනේ .

1
hardlinkදැන් බොහෝ ලිනක්ස් පැකේජ පද්ධතිවල (~ 2014 සිට) ස්වදේශීය ද්විමය වේ. ලිපිගොනු 1,2 ක් සඳහා (320GB) තත්පර 200 ක් ගතවිය (දළ වශයෙන් 10% ගොනු සම්බන්ධ කිරීම).
මාසෙල් වෝල්ඩ්වොගල්

FWIW, ඉහත hardlinkජුලියන් Andres Klode විසින් නිර්මාණය කරන ලදී, Fedora අතර hardlinkJakub Jelinek විසින් නිර්මාණය කරන ලදී (මූලාශ්රය: pagure.io/hardlink - ෆෙඩෝරා පැකේජය නම: hardlink)
maxschlepzig

18

මෙය "fslint" විසින් සපයනු ලබන එක් කාර්යයකි - http://en.flossmanuals.net/FSlint/Introduction

"ඒකාබද්ධ කරන්න" බොත්තම ක්ලික් කරන්න:

තිර රුව


4
-M අනුපිටපත් එකට සම්බන්ධ කරයි, -d එකක් හැර අන් සියල්ලම මකා දමනු ඇත, සහ -එය වියළී යනු ඇත, එය කළ යුතු දේ මුද්‍රණය කරයි
Azendale

1
උබුන්ටු හි කළ යුතු දේ මෙන්න: sudo apt-get install fslint /usr/share/fslint/fslint/findup -m /your/directory/tree(නාමාවලිය / usr / share / fslint / fslint / පෙරනිමියෙන් $ PATH හි නොමැත)
ජොසලින්

14

ඔබේ ප්‍රධාන ඉලක්කය වන්නේ තැටියේ ඉඩ ඉතිරි කිරීමයි, තවත් විසඳුමක් තිබේ: ගොනු පද්ධති මට්ටමින් ද්වි-අනුපිටපත් කිරීම (සහ බොහෝ විට සම්පීඩනය). දෘ link සම්බන්ධක විසඳුම හා සසඳන විට, වෙනත් සම්බන්ධිත ලිපිගොනු වලට නොදැනුවත්වම බලපාන ගැටලුවක් එයට නොමැත.

ZFS 23 වන සංචිතයේ සිට අඩු කිරීම් (වාරණ මට්ටම, ගොනු මට්ටම නොවේ) සහ බොහෝ කලකට පෙර සිට සම්පීඩනය කර ඇත. ඔබ ලිනක්ස් භාවිතා කරන්නේ නම්, ඔබට zfs-fuse උත්සාහ කළ හැකිය , නැතහොත් ඔබ BSD භාවිතා කරන්නේ නම්, එය දේශීයව සහාය වේ.


කෙසේ වෙතත්, අවසානයේදී මම යන්නේ මෙයයි, කෙසේ වෙතත්, BSD හි ZFS ක්‍රියාත්මක කිරීම අඩු කරයිද? මම හිතුවේ එය එසේ නොවන බවයි.
ජොෂ්

ඊට අමතරව, ඩ්‍රැගන් ෆ්ලයිබීඑස්ඩී හි හැම්මර් ගොනු පද්ධතියට අඩුකිරීමේ සහාය ඇත.
හහාමු

14
ZFS අඩු කිරීම කිසිවෙකුගේ මිතුරා නොවේ. 1Tb භාවිතා කළ හැකි තැටියක ඉඩ ප්‍රමාණයකට 1Gb බැටළුවා ZFS නිර්දේශ කරන විට, ඔබ 1Tb භාවිතා කළ හැකි තැටි ඉඩකට 32Gb රැම් එකකට වඩා අඩු අගයක් භාවිතා කිරීමට උත්සාහ කරන්නේ නම්, ඔබ ගෙඩි ගෙඩි වේ. ඒ කියන්නේ 1Tb කැඩපතක් සඳහා, ඔබට 32 Gb රැම් එකක් නොමැති නම්, ඔබට ඉක්මනින් හෝ පසුව මතක බෝම්බ තත්වයන්ට මුහුණ දීමට සිදුවනු ඇති අතර එය රැම් හිඟකම හේතුවෙන් යන්ත්‍රය නවත්වනු ඇත. එහි සිට, එය සිදු කර, තවමත් පීටීඑස්ඩී වෙතින් සුවය ලබයි.
ler ාතකයා

4
සබැඳි අඩුකිරීම් සමඟ ඇති අධික RAM අවශ්‍යතා වළක්වා ගැනීම සඳහා (එනම් සෑම ලිවීමක්ම පරීක්ෂා කරන්න), කණ්ඩායම හෝ නොබැඳි අඩුකිරීම් btrfsභාවිතා කරයි (ඔබ එය ප්‍රයෝජනවත් / අවශ්‍ය යැයි සිතන සෑම විටම එය ක්‍රියාත්මක කරන්න) btrfs.wiki.kernel.org/index.php/Deduplication
මාසෙල් වෝල්ඩ්වොගල්

4
අවුරුදු හතකට පසුව යාවත්කාලීන කරන්න: මම අවසානයේදී ZFS වෙත ගොස් අඩුකිරීමට උත්සාහ කළෙමි - එහි RAM අවශ්‍යතා සැබවින්ම ඉහළ මට්ටමක පවතින බව මට පෙනී ගියේය. ZFS ස්නැප්ෂොට් කපටි ලෙස භාවිතා කිරීම මා භාවිතා කළ විසඳුම සපයයි. (එක් පිටපතක් පරිශීලක සංගීතය, සැණරුව හා පරිගණක ක්රිඩාවට සමාන, භාවිතා කරමින් පරිගණක ක්රිඩාවට සමාන බවට දෙවන පරිශීලක සංගීතය පිටපත් rsync --inplaceඑසේ වෙනස් කුට්ටි පමණක් ගබඩා කර ඇත)
ජොශ්

7

නූතන ලිනක්ස් වල මේ දිනවල https://github.com/g2p/bedup ඇත, එය btrfs ගොනු පද්ධතියක අනුපිටපත් කරයි, නමුත් 1) ස්කෑන් උඩිස් ප්‍රමාණයක් නොමැතිව, 2) ගොනු පහසුවෙන් නැවත අපසරනය කළ හැකිය.


1
පසුබිම සහ වැඩි විස්තර btrfs.wiki.kernel.org/index.php/Deduplication හි ලැයිස්තුගත කර ඇත (යොමු කිරීම ඇතුළුව cp --reflink, පහත බලන්න)
මාසෙල් වෝල්ඩ්වොගල්

6

අනුපිටපත් ගොනු සොයා ගැනීමට ඔබට ඩෆ් භාවිතා කළ හැකිය .

ඩෆ් යනු ලබා දී ඇති ගොනු සමූහයක අනුපිටපත් ඉක්මනින් සොයා ගැනීම සඳහා යුනික්ස් විධාන රේඛා උපයෝගීතාවයකි.

සරලව ධාවනය කරන්න:

duff -r target-folder

Automaticly එම ගොනු hardlinks නිර්මාණය කිරීම සඳහා, ඔබ ප්රතිදානය විග්රහ කළ යුතු වේ duff සමග bash හෝ වෙනත් විධානාවලි පරිගණක භාෂාවකි.


ඇත්තෙන්ම මන්දගාමී වුවත් - rdfind.pauldreik.se/#g0.6
ndemou

6
aptitude show hardlink

විස්තරය: හාඩ්ලින්ක්ස් එකම ගොනුවේ පිටපත් කිහිපයක් එකම ගොනුවේ පිටපත් කිහිපයක් හඳුනාගෙන ඒවා දෘඩ සබැඳි මගින් ප්‍රතිස්ථාපනය කරන මෙවලමකි.

මෙම අදහස http://code.google.com/p/hardlinkpy/ වෙතින් ලබාගෙන ඇත , නමුත් කේතය මුල සිටම ලියා ඇති අතර MIT බලපත්‍රය යටතේ බලපත්‍ර ලබා දී ඇත. මුල් පිටුව: http://jak-linux.org/projects/hardlink/


මෙහි සඳහන් කර ඇති එකම වැඩසටහන ජෙන්ටූ සඳහා නිරාවරණය නොවී හා දෘඩ සම්බන්ධතා ආධාරයෙන් ලබා ගත හැකිය, ස්තූතියි!
ජොරිට් ස්කිපර්ස්

4

මම මෙහි සඳහන් ලිනක්ස් සඳහා දෘඩ සම්බන්ධතා මෙවලම් බොහොමයක් භාවිතා කර ඇත්තෙමි. මමත් උබුන්ටු මත ext4 fs සමඟ සිරවී සිටින අතර එහි cp -l සහ -s දෘ hard / මෘදු සම්බන්ධතා සඳහා භාවිතා කරමි. නමුත් මෑතකදී දැක සැහැල්ලු පිටපතක් තුළ සීපී ය ද අතිරික්ත තැටියේ ඉඩ ඉතිරිව තිබියදී අදහස් කරන, මිනිසා පිටුව තෙක් එක පැත්තක වෙනස් වී යයි:

   --reflink[=WHEN]
          control clone/CoW copies. See below

       When  --reflink[=always]  is specified, perform a lightweight copy, where the 
data blocks are copied only when modified.  If this is not possible the
       copy fails, or if --reflink=auto is specified, fall back to a standard copy.

cpසෑම විටම --reflink=autoදැන් පරාමිතිය ඇතුළත් කිරීමට මම මගේ අන්වර්ථය යාවත්කාලීන කරමි යැයි සිතමි
මාකෝස්

1
Ext4 සැබවින්ම සහය දක්වයිද --reflink?

7
මෙය btrfs සහ OCFS2 මත සහය දක්වයි. එය කළ හැක්කේ පිටපත් මත ලිවීමේ ගොනු පද්ධති වල පමණි, එය ext4 නොවේ. btrfs සැබවින්ම හැඩගස්වා ඇත. පරාවර්තනය සහ ස්නැප්ෂොට් නිසා මම එය භාවිතා කිරීමට කැමතියි, විශාල ගොනු වල විශාල මෙහෙයුම් කිරීමට ඔබ අඩු බියක් ඇති කරයි.
clacke

4

මුලින්ම ගොනු නාමය පරික්ෂා කිරීමෙන් දේවල් වේගවත් කළ හැකි බව මට පෙනේ. ලිපිගොනු දෙකකට එකම ගොනු නාමයක් නොමැති නම් බොහෝ අවස්ථාවලදී ඒවා අනුපිටපත් ලෙස මම නොසිතමි. සැසඳීම ඉක්මන්ම ක්‍රමය වනු ඇති බව පෙනේ:

  • ගොනුවේ නම
  • ප්‍රමාණය
  • md5 චෙක්සම්
  • බයිට් අන්තර්ගතය

කිසියම් ක්‍රමයක් මෙය කරන්නේද? සලකා බලන duff, fdupes, rmlint, fslint, ආදිය

Commandlinefu.com හි පහත දැක්වෙන ක්‍රමය ඉහළින්ම ඡන්දය ප්‍රකාශ කරන ලදි : අනුපිටපත් ගොනු සොයා ගන්න (ප්‍රමාණය මත පදනම්ව, පසුව MD5 හෑෂ්)

ගොනු නාම සංසන්දනය පළමු පියවරක් ලෙස, ප්‍රමාණය දෙවන පියවර ලෙස එකතු කළ හැකිද?

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | \
  xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | \
  sort | uniq -w32 --all-repeated=separate

3
මම භාවිතා කර ඇත duff, fdupesහා rmlint, හා දැඩි දෙස පාඨකයන් නිර්දේශ මේ තුන්වන . එය විශිෂ්ට විකල්ප කට්ටලයක් (සහ ප්‍රලේඛන) ඇත. එය සමඟ, අනෙක් මෙවලම් සමඟ භාවිතා කිරීමට අවශ්‍ය පශ්චාත් සැකසුම් බොහොමයක් මග හැරීමට මට හැකි විය.
dubiousjim

3
මගේ ප්රායෝගිකව ගොනු යනු අවම වශයෙන් දෙස විශ්වාසනීය සාධකය, මම සම්පූර්ණයෙන්ම මම ද-සිටිමින් ශ්රී සිදු කරන ඕනෑම උත්සාහයන් සිට එය ඉවත් කර ඇත. install.shසක්‍රිය පද්ධතියක ගොනු කීයක් සොයාගත හැකිද? මම ගොනුවක් සුරකින ලද සහ නම ගැටුම ඇති වාර ගණන මට ගණන් කළ නොහැක, සමහර පියාසර පියාසර නාමය එය සුරැකීමට නම් කර ඇත. පෙරළීමේ පැත්ත: විවිධ මූලාශ්‍රවලින්, විවිධ දිනවල, මම කොපමණ වාරයක් යමක් බාගත කර ඇත්දැයි නොදැන, ඒවා විවිධ නම් සහිත එකම ගොනුව බව සොයා ගැනීමට පමණි. (එමඟින් කාලරාමු විශ්වසනීයත්වය ද විනාශ වේ.) 1: ප්‍රමාණය, 2: ඩයිජෙස්ට්, 3: බයිට් අන්තර්ගතය.
user207673

Yp ජිප්සීස්පෙල්වීවර්: (1) පුද්ගලික භාවිතය මත රඳා පවතී, ඔබ එකඟ නොවන්නේද? මගේ නඩුවේදී, මට විවිධ උපස්ථ වලින් බහුවිධ ප්‍රතිස්ථාපන ඇත, එකම නම සහ අන්තර්ගතය සහිත ගොනු විවිධ ප්‍රතිස්ථාපන-ෆෝල්ඩර වල පවතී. (2) ඔබේ අදහස ගොනු නාමයක් පමණක් සංසන්දනය කිරීම උපකල්පනය කරයි. වෙනත් චෙක්පත් ඉවත් කිරීමට මා යෝජනා කළේ නැත.
ජොනී ඇයි

4

jdupes විවරණයක සඳහන් කර ඇති නමුත් එයටම පිළිතුරු ලැබිය යුතුය, මන්ද එය බොහෝ බෙදාහැරීම් වලින් ලබා ගත හැකි අතර ඉතා වේගයෙන් ධාවනය වේ (එය විනාඩියකින් 98% පූර්ණ 158 GB කොටසක (SSD ධාවකය) 2.7 GB නිදහස් කර ඇත):

jdupes -rL /foo/bar

3

මම පර්ල්ගේ රසිකයෙක් නොවන නිසා, මෙන්න බාෂ් අනුවාදයක්:

#!/bin/bash

DIR="/path/to/big/files"

find $DIR -type f -exec md5sum {} \; | sort > /tmp/sums-sorted.txt

OLDSUM=""
IFS=$'\n'
for i in `cat /tmp/sums-sorted.txt`; do
 NEWSUM=`echo "$i" | sed 's/ .*//'`
 NEWFILE=`echo "$i" | sed 's/^[^ ]* *//'`
 if [ "$OLDSUM" == "$NEWSUM" ]; then
  echo ln -f "$OLDFILE" "$NEWFILE"
 else
  OLDSUM="$NEWSUM"
  OLDFILE="$NEWFILE"
 fi
done

මෙය එකම චෙක්සම් සහිත සියලුම ලිපිගොනු සොයා ගනී (ඒවා විශාල, කුඩා හෝ දැනටමත් දෘඩ සබැඳි වේවා), ඒවා එකට සම්බන්ධ කරයි.

අතිරේක සොයා ගැනීමේ කොඩි (උදා: ප්‍රමාණය) සහ ගොනු හැඹිලියක් සමඟ නැවත නැවත ධාවනය කිරීම සඳහා මෙය බොහෝ සෙයින් ප්‍රශස්තිකරණය කළ හැකිය (එබැවින් ඔබට සෑම අවස්ථාවකදීම චෙක්සම් නැවත කිරීමට අවශ්‍ය නැත). වඩා හොඳ, දිගු අනුවාදය ගැන යමෙකු උනන්දු වන්නේ නම්, මට එය පළ කළ හැකිය.

සටහන: කලින් සඳහන් කළ පරිදි, ලිපිගොනු කිසි විටෙක වෙනස් කිරීම අවශ්‍ය නොවන තාක් කල් හෝ ගොනු පද්ධති හරහා ගෙනයාමට දෘ hard සබැඳි ක්‍රියා කරයි.


මම ඔබේ ස්ක්‍රිප්ට් එක වෙනස් කරන්නේ කෙසේද, එවිට එය දෘඩ සබැඳිය වෙනුවට, එය අනුපිටපත් ගොනු මකා දැමිය හැකි අතර මකා දැමූ ගොනුව -> පෙලගැසුනු ගොනුව CSV ගොනුවකට ඇතුළත් කරයි. . ???
MR.GEWA

ෂුවර්. දෘ link සම්බන්ධක රේඛාව: echo ln -f "LD OLDFILE" "$ NEWFILE" අනුපිටපත් ගොනුව දෘ link සබැඳියකින් ප්‍රතිස්ථාපනය කරන්න, එවිට ඔබට එය වෙනස් කළ හැකිය $ NEWFILE.
සෙරෙන්

ඊළඟ පේළියේ කෙසේ හෝ යම් පෙළ ගොනුවක කෙසේ හෝ ලියන්න $ OLDFILE-> NEWFILE ???
MR.GEWA

අහ්, හරි. ඔව්, rm ට පසුව පේළියක් එක් කරන්න: echo "$ NEWFILE" >> /var/log/deleted_duplicate_files.log
seren

2
ෆ්‍රිජින් රෝදය ප්‍රතිනිර්මාණය නොකරන්න. rdfindස්වදේශික වේගයෙන් ක්‍රියාත්මක වන සහ අවශ්‍ය වන brew install rdfindහෝ apt-get install rdfindස්ථාපනය කිරීමට අවශ්‍ය පරිණත විසඳුම් තිබේ .
ඔලිගොෆ්‍රන්

1

මම පර්ල් පිටපතක් සාදන අතර එය ඔබ කතා කරන දෙයට සමාන දෙයක් කරයි:

http://pastebin.com/U7mFHZU7

මූලික වශයෙන්, එය නාමාවලියක් හරහා ගමන් කරයි, එහි ඇති ගොනු වල SHA1sum ගණනය කිරීම, එය හෑෂ් කිරීම සහ ගැලපීම් එකට සම්බන්ධ කිරීම. එය බොහෝ, බොහෝ අවස්ථාවන්හිදී ප්‍රයෝජනවත් වේ.


2
මෙය ඉක්මණින්
අත්හදා බැලීමට

2
enxenoterracide: දැනටමත් පවතින සමාන හා වඩා පරිණත විසඳුම් නිසා. අනෙක් පිළිතුරු බලන්න, විශේෂයෙන් rdfind.
ඔලිගොෆ්‍රන්

1
igoligofren වඩා හොඳ විසඳුම් ඇතැයි මම සැක නොකරමි. මම හිතන්නේ TMTOWTDI.
ඇම්ෆෙටාමචින්

1

මැක් හෝ යුනික්ස් මත පදනම් වූ ඕනෑම පද්ධතියක දෘඩ සබැඳි මගින් අනුපිටපත් ආදේශ කිරීමට ඔබට අවශ්‍ය නම්, ඔබට ස්මාර්ට් ඩියුප් http://sourceforge.net/projects/smartdupe/ සංවර්ධනය කිරීමට උත්සාහ කළ හැකිය.


3
එය කෙතරම් “බුද්ධිමත්” දැයි ඔබට පුළුල් කළ හැකිද?
ස්ටෙෆාන් ගිමිනෙස්

1
විවිධ නාමාවලි දෙකක ගොනු සංසන්දනය කරන්නේ කෙසේද?
බර්කාර්ඩෝ

1

FSLint ( http://www.pixelbeat.org/fslint/ ) යන යෙදුම් ඕනෑම ෆෝල්ඩරයක (අන්තර්ගතය අනුව) සියලු සමාන ගොනු සොයා ගත හැකි අතර දෘඩ සබැඳි නිර්මාණය කළ හැකිය. එය උත්සාහ කර බලන්න!

ජෝර්ජ් සාම්පයෝ


එය 1TB ස්කෑන් කිරීම පාහේ සම්පූර්ණ ext3 දෘඩ තැටියකින් එල්ලී ඇති අතර, මුළු පද්ධතියම බඩගා යයි. "සෙවීම" පැය 14 කට පසු
ගබ්සා කිරීම

0

ඔබ දෘඩ සබැඳි කරන්නේ නම්, එම ගොනුවේ ඇති අයිතිවාසිකම් පිළිබඳව අවධානය යොමු කරන්න. දැන්වීම, හිමිකරු, කණ්ඩායම, මාදිලිය, දීර් extended කරන ලද ගුණාංග, කාලය සහ ACL (ඔබ මෙය භාවිතා කරන්නේ නම්) INODE හි ගබඩා කර ඇත. මෙය නාමාවලි ව්‍යුහය තුළ ගබඩා කර ඇති නිසා ගොනු නාම පමණක් වෙනස් වන අතර අනෙක් කරුණු INODE ගුණාංග වෙත යොමු වේ. මෙම හේතුව, එකම ඉනෝඩයට සම්බන්ධ කර ඇති සියලුම ගොනු නාමයන්ට එකම ප්‍රවේශ අයිතිය ඇත. ඕනෑම පරිශීලකයෙකුට ගොනුව අනෙකට හානි කළ හැකි බැවින් ඔබ එම ගොනුව වෙනස් කිරීම වැළැක්විය යුතුය. එය සරල ය. එය ප්‍රමාණවත්, ඕනෑම පරිශීලකයෙක් වෙනත් ගොනුවක් එකම නමින් තබයි. පසුව ඉනෝඩ් අංකය සුරකින අතර, සියලු දෘඩ සබැඳි නම් සඳහා මුල් ගොනු අන්තර්ගතය විනාශ වේ (ප්‍රතිස්ථාපනය වේ).

වඩා හොඳ ක්‍රමය වන්නේ ගොනු පද්ධති ස්ථරයේ අඩු කිරීම ය. ඔබට BTRFS (අවසන් වරට ඉතා ජනප්‍රිය), OCFS හෝ මේ වගේ භාවිතා කළ හැකිය. පිටුව බලන්න: https://en.wikipedia.org/wiki/Comparison_of_file_systems , මේසයේ විශේෂත්වය විශේෂාංග සහ තීරු දත්ත අඩු කිරීම. ඔබට එය ක්ලික් කර වර්ග කළ හැකිය :)

ZFS ගොනු පද්ධතිය දෙස විශේෂයෙන් බලන්න. මෙය FUSE ලෙස ලබා ගත හැකි නමුත් මේ ආකාරයෙන් එය ඉතා මන්දගාමී වේ. ඔබට ස්වදේශීය සහාය අවශ්‍ය නම්, http://zfsonlinux.org/ පිටුව බලන්න . ඉන්පසු ඔබ කර්නලය ඇලවිය යුතු අතර ඊළඟට කළමනාකරණය සඳහා zfs මෙවලම් ස්ථාපනය කරන්න. මට තේරෙන්නේ නැහැ, ඇයි ලිනක්ස් ධාවක ලෙස සහාය නොදක්වන්නේ, එය වෙනත් බොහෝ මෙහෙයුම් පද්ධති / කර්නල් සඳහා ක්‍රමයක්.

ගොනු පද්ධති ක්‍රම 2 කින්, අනුපිටපත් ගොනු හෝ බ්ලොක් මගින් අඩු කිරීමට සහාය වේ. ZFS බ්ලොක් සඳහා සහය දක්වයි. මෙයින් අදහස් කරන්නේ, එකම ගොනුවේ පුනරාවර්තනය වන එකම අන්තර්ගතයන් අඩු කළ හැකි බවයි. වෙනත් ක්‍රමයක් වන්නේ දත්ත අඩු කළ කාලයයි, මෙය මාර්ගගත (zfs) හෝ නොබැඳි (btrfs) විය හැකිය.

අඩු කිරීම RAM පරිභෝජනය කරන බව සැලකිල්ලට ගන්න. FUSE සමඟ සවිකර ඇති ZFS පරිමාවට ලිපිගොනු ලිවීම, මන්දගාමී ක්‍රියාකාරිත්වයට හේතු වන්නේ එබැවිනි. මෙය ලේඛනවල විස්තර කර ඇත. නමුත් ඔබට පරිමාව මත අඩු කිරීම සබැඳිව / අක්‍රිය කළ හැකිය. කිසියම් දත්තයක් අනුපිටපත් කළ යුතු බව ඔබ දුටුවහොත්, ඔබ හුදෙක් අඩු කිරීම සකසා, කිසියම් ගොනුවක් ඕනෑම තාවකාලිකයකට නැවත ලියා නැවත ප්‍රතිස්ථාපනය කරන්න. මෙයින් පසු ඔබට අඩු කිරීම ඉවත් කර සම්පූර්ණ ක්‍රියාකාරිත්වය යථා තත්වයට පත් කළ හැකිය. ඇත්ත වශයෙන්ම, ඔබට ඕනෑම හැඹිලි තැටි ගබඩා කිරීමට එකතු කළ හැකිය. මෙය ඉතා වේගයෙන් භ්‍රමණය වන තැටි හෝ SSD තැටි විය හැකිය. ඇත්ත වශයෙන්ම මෙය ඉතා කුඩා තැටි විය හැකිය. සැබෑ කාර්යයේදී මෙය RAM වෙනුවට ආදේශ කිරීමකි :)

ලිනක්ස් යටතේ ඔබ ZFS ගැන සැලකිලිමත් විය යුතුය, මන්දයත් සියල්ල ක්‍රියාත්මක නොවිය යුතුය, ඔබ ගොනු පද්ධතිය කළමනාකරණය කිරීමේදී විශේෂත්වය, සැණින් ඡායාරූපයක් ආදිය. නමුත් ඔබ වින්‍යාසය කර එය වෙනස් නොකරන්නේ නම්, සියල්ල නිසි ලෙස ක්‍රියාත්මක වේ. වෙනත් ආකාරයකින්, ඔබ ලිනක්ස් ඕපන්සොලරිස් ලෙස වෙනස් කළ යුතුය, එය ස්වදේශීයව ZFS සඳහා සහය දක්වයි :) ZFS සමඟ ඇති ඉතා හොඳ දෙය නම්, මෙය ගොනු පද්ධතිය ලෙස ක්‍රියා කරන අතර LVM හා සමාන පරිමාමිතික කළමනාකරු ය. ඔබ ZFS භාවිතා කරන විට ඔබට එය අවශ්‍ය නොවේ. ඔබට තවත් දැන ගැනීමට අවශ්‍ය නම් ප්‍රලේඛනය බලන්න.

ZFS සහ BTRFS අතර වෙනස සැලකිල්ලට ගන්න. ZFS පැරණි හා වඩා පරිණත ය, අවාසනාවකට සොලාරිස් සහ ඕපන් සොලාරිස් යටතේ පමණි (අවාසනාවකට ඔරකල් විසින් ගෙල සිර කරනු ලැබේ). BTRFS තරුණයි, නමුත් අවසන් වරට ඉතා හොඳ සහය. මම නැවුම් කර්නලය නිර්දේශ කරමි. ZFS සතුව සබැඳි අඩු කිරීමක් ඇත, එමඟින් ලිවීම් මන්දගාමී වේ, මන්ද සියල්ල අන්තර්ජාලය හරහා ගණනය කරනු ලැබේ. BTRFS නොබැඳි අඩුකිරීම් සඳහා සහය දක්වයි. එවිට මෙය කාර්ය සාධනය ඉතිරි කරයි, නමුත් ධාරකයට කිසිවක් කිරීමට නොහැකි වූ විට, ඔබ වරින් වර අඩුකිරීම් සඳහා මෙවලමක් ධාවනය කරයි. BTRFS දේශීයව ලිනක්ස් යටතේ නිර්මාණය කර ඇත. සමහර විට මෙය ඔබට වඩා හොඳ FS වේ :)


1
මම කැමතියි නොබැඳි (හෝ කණ්ඩායම ) අඩුකිරීමේ ප්‍රවේශයට btrfs. විකල්පයන් පිළිබඳ විශිෂ්ට සාකච්ඡාව ( cp --reflinkවිකල්පය ඇතුළුව ): btrfs.wiki.kernel.org/index.php/Deduplication
මාසෙල් වෝල්ඩ්වොගල්

ZFS යනු සොලාරිස් හෝ ඕපන් සොලාරිස් පමණක් නොවේ. එය FreeBSD හි දේශීයව සහය දක්වයි. එසේම, ලිනක්ස් හි ZFS යනු උපාංග ධාවක මත පදනම් වූවකි; FUSE හි ZFS වෙනස් දෙයක්.
කේ.ජේ සීෆ්‍රයිඩ්

0

දෘ links සබැඳි හොඳම අදහස නොවිය හැකිය; එක් පරිශීලකයෙකු ගොනුව වෙනස් කරන්නේ නම්, එය දෙකටම බලපායි. කෙසේ වෙතත්, දෘ link සබැඳියක් මකා දැමීමෙන් ගොනු දෙකම මැකෙන්නේ නැත. ප්ලස්, දෘ Link සබැඳි එකම ගොනුවේ පිටපත් කිහිපයක් ලෙස එකම ඉඩ ප්‍රමාණයක් (දෘඩ තැටියේ, මෙහෙයුම් පද්ධතිය නොවේ) ගනීදැයි මට සම්පූර්ණයෙන්ම විශ්වාස නැත; වින්ඩෝස් වලට අනුව (ලින්ක් ෂෙල් දිගුව සමඟ) ඔවුන් එසේ කරයි. ඇත්ත, එය වින්ඩෝස් මිස යුනික්ස් නොවේ ...

මගේ විසඳුම වනුයේ සැඟවුණු ෆෝල්ඩරයක “පොදු” ගොනුවක් සෑදීම සහ සත්‍ය අනුපිටපත් සංකේතාත්මක සබැඳි මගින් ප්‍රතිස්ථාපනය කිරීමයි ... එවිට සංකේතාත්මක සබැඳි පාර-දත්ත හෝ විකල්ප ගොනු ප්‍රවාහයන් සමඟ කාවැද්දෙන අතර කෙසේ වෙතත් “ගොනු” දෙක පමණක් සටහන් වේ. එක් පුද්ගලයෙකුට ගොනු නාමය වෙනස් කිරීමට හෝ අභිරුචි ඇල්බම කලාවක් හෝ වෙනත් දෙයක් එකතු කිරීමට අවශ්‍ය නම්, එකිනෙකාට වඩා වෙනස් ය; එකම ක්‍රීඩාවක හෝ මෘදුකාංගයක බහුවිධ අනුවාදයන් ස්ථාපනය කර කුඩාම වෙනස්කම් සමඟ ස්වාධීනව පරීක්ෂා කිරීම වැනි දත්ත සමුදා යෙදුම් වලින් පිටත පවා එය ප්‍රයෝජනවත් විය හැකිය.


0

පහසුම ක්‍රමය වන්නේ විශේෂ වැඩසටහන් dupeGuru භාවිතා කිරීමයි

dupeGuru මනාපයන් තිර රුව

ලෙස ප්රලේඛනය පවසයි

මකාදැමීමේ විකල්ප

මෙම විකල්පයන් අනුපිටපත් මකාදැමීම සිදු වන ආකාරය කෙරෙහි බලපායි. බොහෝ විට, ඔබට ඒවා කිසිවක් සක්‍රීය කිරීමට අවශ්‍ය නොවේ.

මකාදැමුණු ගොනු සම්බන්ධ කරන්න:

මකා දැමූ ලිපිගොනු ආදේශන ගොනුවට සබැඳියක් මගින් ප්‍රතිස්ථාපනය වේ. ඔබට එය සිම්ලින්ක් හෝ දෘඩ සබැඳියකින් ප්‍රතිස්ථාපනය කිරීමේ තේරීමක් ඇත. ... සිම්ලින්ක් යනු ගොනුවේ මාර්ගයට කෙටිමඟකි. මුල් ගොනුව මකා දැමුවහොත් හෝ ගෙන ගියහොත්, සබැඳිය කැඩී ඇත. දෘ l සබැඳියක් යනු ගොනුවටම සබැඳියකි. එම සබැඳිය “සැබෑ” ගොනුවක් තරම් හොඳයි. ගොනුවකට ඇති සියලුම දෘඩ සබැඳි මකා දැමූ විට පමණක් ගොනුව මකා දමනු ලැබේ.

ඕඑස්එක්ස් සහ ලිනක්ස් වල, මෙම අංගය සම්පුර්ණයෙන්ම සහය දක්වයි, නමුත් වින්ඩෝස් යටතේ එය ටිකක් සංකීර්ණයි. වින්ඩෝස් එක්ස්පී එයට සහය නොදක්වයි, නමුත් විස්ටා සහ ඊට සහාය දක්වයි. කෙසේ වෙතත්, විශේෂාංගය ක්‍රියාත්මක වීමට නම්, ඩුප්ගුරු පරිපාලන වරප්‍රසාද සමඟ ක්‍රියාත්මක විය යුතුය.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.