Có một cách dễ dàng để thay thế các tập tin trùng lặp bằng liên kết cứng?


136

Tôi đang tìm kiếm một cách dễ dàng (một lệnh hoặc một loạt các lệnh, có thể liên quan find) để tìm các tệp trùng lặp trong hai thư mục và thay thế các tệp trong một thư mục bằng các liên kết cứng của các tệp trong thư mục khác.

Đây là tình huống: Đây là một máy chủ tệp mà nhiều người lưu trữ tệp âm thanh trên, mỗi người dùng có thư mục riêng. Đôi khi nhiều người có bản sao của các tệp âm thanh chính xác. Ngay bây giờ, đây là những bản sao. Tôi muốn làm cho nó trở thành liên kết cứng, để tiết kiệm dung lượng ổ cứng.


20
Một vấn đề bạn có thể gặp phải với các liên kết cứng là nếu ai đó quyết định làm gì đó với một trong các tệp nhạc của họ mà bạn đã liên kết cứng, họ có thể vô tình ảnh hưởng đến quyền truy cập âm nhạc của người khác.
Steven D

4
một vấn đề khác là hai tệp khác nhau có chứa "Một số giai điệu thực sự tuyệt vời", ngay cả khi được lấy từ cùng một nguồn với cùng một bộ mã hóa sẽ rất có thể không giống nhau từng bit.
msw

3
giải pháp tốt hơn có thể là có một thư mục nhạc công cộng ...
Stefan


1
@tante: Sử dụng symlink giải quyết không có vấn đề. Khi người dùng "xóa" một tệp, số lượng liên kết đến tệp đó sẽ bị giảm, khi số đếm về 0, các tệp sẽ thực sự bị xóa, đó là tất cả. Vì vậy, việc xóa không có vấn đề gì với các tệp được liên kết cứng, vấn đề duy nhất là người dùng đang cố chỉnh sửa tệp (thực sự không thể thực hiện được) hoặc ghi đè lên nó (hoàn toàn có thể nếu đăng nhập).
maaartinus

Câu trả lời:


41

Có một tập lệnh perl tại http://cpansearch.perl.org/src/ANDK/Perl-Repousing-APC-2.002/eg/trimtrees.pl thực hiện chính xác những gì bạn muốn:

Di chuyển tất cả các thư mục có tên trên dòng lệnh, tính toán tổng MD5 và tìm các tệp có MD5 giống hệt nhau. NẾU chúng bằng nhau, hãy so sánh thực sự nếu chúng thực sự bằng nhau, thay thế tệp thứ hai trong hai tệp bằng một liên kết cứng thành tệp đầu tiên.


Âm thanh hoàn hảo , cảm ơn !! Tôi sẽ thử và chấp nhận nếu nó hoạt động như mô tả!
Josh

3
Điều này đã làm chính xác những gì tôi yêu cầu. Tuy nhiên tôi tin rằng ZFS với khấu trừ cuối cùng sẽ là cách để làm, vì tôi thấy rằng các tệp có sự khác biệt nhỏ nên chỉ một số ít có thể được liên kết cứng.
Josh

11
Ủng hộ điều này, nhưng sau khi nghiên cứu thêm, tôi không biết. rdfindcó sẵn thông qua các trình quản lý gói cho TẤT CẢ các nền tảng chính (os x, linux, (cyg) win, solaris) và hoạt động ở tốc độ nhanh. Vì vậy, hãy kiểm tra câu trả lời dưới đây.
oligofren

@oligofren Mình cũng nghĩ như vậy, nhưng rồi mình đánh [Errno 31] Too many links. Scrips này dường như là điều duy nhất xử lý điều đó.
phunehehe

5
Kiểm tra tất cả các tệp đơn lẻ, thay vì chỉ các tệp tồn tại ít nhất một tệp khác có kích thước giống hệt nhau, là không hiệu quả một cách không cần thiết (và không cần thiết bị va chạm băm).
Charles Duffy

85

rdfindthực hiện chính xác những gì bạn yêu cầu (và theo thứ tự johny tại sao liệt kê). Làm cho nó có thể xóa các bản sao, thay thế chúng bằng các liên kết mềm hoặc cứng. Kết hợp với symlinksbạn cũng có thể tạo liên kết tượng trưng tuyệt đối hoặc tương đối. Bạn thậm chí có thể chọn thuật toán tổng kiểm tra (md5 hoặc sha1).

Vì nó được biên dịch, nó nhanh hơn hầu hết các giải pháp theo kịch bản: timetrên thư mục 15 GiB với 2600 tệp trên Mac Mini của tôi từ năm 2009 trả về

9.99s user 3.61s system 66% cpu 20.543 total

(sử dụng md5).

Có sẵn trong hầu hết các trình xử lý gói (ví dụ: MacPorts cho Mac OS X).


11
+1 Tôi đã sử dụng rdfindvà yêu thích nó. Nó có một -dryrun truetùy chọn sẽ cho bạn biết những gì nó sẽ làm. Thay thế các bản sao bằng các liên kết cứng cũng đơn giản như -makehardlinks true. Nó tạo ra một bản ghi đẹp và nó cho tôi biết bao nhiêu không gian đã được giải phóng. Thêm vào đó, theo điểm chuẩn của tác giả , rdfind nhanh hơn duff và fslint.
Daniel Trebbien

ồ đẹp. Tôi đã từng sử dụng fdupes, nhưng tùy chọn -L của nó cho các bản sao liên kết cứng bị thiếu trong Ubuntu 14.10 mới nhất. Khá chậm và không tồn tại cho Homebrew trên OSX, vì vậy câu trả lời này là cách tốt hơn. Cảm ơn!
oligofren

Thuật toán rất thông minh và nhanh chóng.
ndemou

2
Tôi nghi ngờ hiệu năng của công cụ này có liên quan nhiều hơn đến chính thuật toán và ít liên quan đến việc đó là công cụ biên dịch hay tập lệnh. Đối với loại hoạt động này, đĩa sẽ là nút cổ chai gần như mọi lúc. Miễn là các công cụ theo kịch bản đảm bảo rằng chúng đang tiến hành thao tác I / O không đồng bộ trong khi ghi CPU trên tổng kiểm tra, chúng sẽ thực hiện về cũng như một nhị phân gốc.
cdhowie

rdfind rất phụ thuộc vào hệ điều hành và trình biên dịch mới. (sẽ không chạy trên CentOS 6.x mà không được xây dựng lại gần như hoàn chỉnh các công cụ phát triển)
Cosmo F

49

Sử dụng fdupescông cụ:

fdupes -r /path/to/foldercung cấp cho bạn một danh sách các bản sao trong thư mục (-r làm cho nó đệ quy). Đầu ra trông như thế này:


tên
tệp1 tên tệp2

filename3
filename4
filename5


với filename1 và filename2 giống hệt nhau và filename3, filename4 và filename5 cũng giống hệt nhau.


1
Ubuntu Note: Kể từ tháng 9 năm 2013, nó chưa có bản phát hành ổn định (đó là vào phiên bản 1.50-PR2-3), vì vậy bản cập nhật chưa xuất hiện trong ubfox.
Stuart Axon

11
Tôi vừa thử cài đặt fdupes_1.50-PR2-4 trên cả Ubuntu và Debian, không có cờ -L. May mắn xây dựng từ github.com/tobiasschulz/fdupes là siêu dễ dàng.
neu242

3
Hãy thử rdfind- thích fdupes, nhưng nhanh hơn và có sẵn trên OS X và Cygwin.
oligofren

6
fdupesdường như chỉ tìm thấy các bản sao, không thay thế chúng bằng các liên kết cứng, vì vậy không phải là một câu trả lời cho câu hỏi IMO.
Calimo

2
Có một công cụ tương tự được gọi là jdupesdựa trên fdupes, nhưng nó cũng có thể thay thế các tệp trùng lặp bằng symlink ( -l), hardlinks ( -L) hoặc hướng dẫn btrfs để sao chép các khối ở cấp hệ thống tệp ( -Bnếu bạn đang sử dụng btrfs).
Marius Gedminas

23

Tôi sử dụng hardlinktừ http://jak-linux.org/projects/hardlink/


1
Đẹp gợi ý, tôi đang sử dụng trên cơ sở thường xuyên code.google.com/p/hardlinkpy nhưng điều này không được cập nhật trong một thời gian ...
meduz

2
Điều này dường như tương tự như bản gốc hardlinktrên Fedora / RHEL / vv.

1
hardlinkhiện là tệp nhị phân gốc trong nhiều hệ thống gói Linux (kể từ ~ 2014) và cực kỳ nhanh. Đối với các tệp 1,2M (320GB), chỉ mất 200 giây (liên kết khoảng 10% các tệp).
Marcel Waldvogel

FWIW, phần trên hardlinkđược tạo bởi Julian Andres Klode trong khi Fedora hardlinkđược tạo bởi Jakub Jelinek (nguồn: pagure.io/hardlink - Tên gói Fedora: hardlink)
maxschlepzig

18

Đây là một trong những chức năng được cung cấp bởi "fslint" - http://en.flossmanuals.net/FSlint/Intributiontion

Nhấp vào nút "Hợp nhất":

Ảnh chụp màn hình


4
-M sẽ liên kết cứng trùng lặp với nhau, -d sẽ xóa tất cả trừ một, và -t sẽ khô, in những gì nó sẽ làm
Azendale

1
Trên Ubuntu đây là những việc cần làm: sudo apt-get install fslint /usr/share/fslint/fslint/findup -m /your/directory/tree(thư mục / usr / share / fslint / fslint / không có trong $ PATH theo mặc định)
Jocelyn

14

Vì mục tiêu chính của bạn là tiết kiệm dung lượng ổ đĩa, nên có một giải pháp khác: khử trùng lặp (và có thể nén) ở cấp hệ thống tệp. So với giải pháp liên kết cứng, nó không có vấn đề vô tình ảnh hưởng đến các tệp được liên kết khác.

ZFS đã khấu trừ (cấp khối, không phải cấp tệp) kể từ phiên bản nhóm 23 và nén từ lâu. Nếu bạn đang sử dụng linux, bạn có thể thử zfs-fuse hoặc nếu bạn sử dụng BSD, nó được hỗ trợ nguyên bản.


Đây có lẽ là cách cuối cùng tôi sẽ đi, tuy nhiên, việc triển khai ZFS của BSD có được khấu trừ không? Tôi nghĩ rằng nó đã không.
Josh

Ngoài ra, hệ thống tệp HAMmer trên DragonFlyBSD có hỗ trợ chống trùng lặp.
hhaamu

14
ZFS depup là bạn của không ai. Trong đó ZFS đề xuất ram 1Gb trên mỗi không gian đĩa có thể sử dụng 1Tb, bạn sẽ không thể sử dụng được nếu bạn cố gắng sử dụng khấu trừ với ít hơn 32Gb ram cho mỗi không gian đĩa có thể sử dụng 1Tb. Điều đó có nghĩa là đối với gương 1Tb, nếu bạn không có ram 32 Gb, bạn có thể gặp phải tình trạng bom bộ nhớ sớm hay muộn sẽ khiến máy ngừng hoạt động do thiếu ram. Ở đó, làm điều đó, vẫn đang phục hồi từ PTSD.
killermist

4
Để tránh các yêu cầu RAM quá mức với sự trùng lặp trực tuyến (nghĩa là kiểm tra trên mỗi lần ghi), btrfssử dụng sao chép hàng loạt hoặc ngoại tuyến (chạy bất cứ khi nào bạn thấy nó hữu ích / cần thiết) btrfs.wiki.kernel.org/index.php/Ded repeatation
Marcel Waldvogel

3
Cập nhật bảy năm sau: Cuối cùng tôi đã chuyển sang ZFS và thử sao chép - tôi thấy rằng các yêu cầu về RAM thực sự rất cao. Việc sử dụng nhanh chóng các ảnh chụp nhanh ZFS đã cung cấp giải pháp mà tôi đã sử dụng. (Sao chép nhạc của người dùng, ảnh chụp nhanh và bản sao, sao chép nhạc của người dùng thứ hai vào bản sao bằng cách sử dụng rsync --inplaceđể chỉ các khối thay đổi được lưu trữ)
Josh


5

Để tìm các tập tin trùng lặp, bạn có thể sử dụng duff .

Duff là một tiện ích dòng lệnh Unix để nhanh chóng tìm thấy các bản sao trong một tập hợp các tệp nhất định.

Đơn giản chỉ cần chạy:

duff -r target-folder

Để tạo liên kết cứng đến các tệp đó một cách tự động, bạn sẽ cần phân tích đầu ra của duff bằng bash hoặc một số ngôn ngữ kịch bản lệnh khác.


Thực sự rất chậm - xem rdfind.pauldreik.se/#g0.6
ndemou

5
aptitude show hardlink

Mô tả: Hardlink nhiều bản sao của cùng một tệp Hardlink là một công cụ phát hiện nhiều bản sao của cùng một tệp và thay thế chúng bằng các liên kết cứng.

Ý tưởng đã được lấy từ http://code.google.com.vn/p/hardlinkpy/ , nhưng mã đã được viết từ đầu và được cấp phép theo giấy phép MIT. Trang chủ: http://jak-linux.org/projects/hardlink/


Chương trình duy nhất được đề cập ở đây có sẵn cho Gentoo mà không bị lộ và có hỗ trợ liên kết cứng, cảm ơn!
Jorrit Schippers

4

Tôi đã sử dụng nhiều công cụ liên kết cứng cho Linux được đề cập ở đây. Tôi cũng bị mắc kẹt với ext4 fs, trên Ubuntu và đã sử dụng cp -l-s của nó cho liên kết cứng / mềm. Nhưng gần đây nhận thấy bản sao nhẹ trong trang cp cp , điều này có nghĩa là sẽ tiết kiệm dung lượng đĩa dự phòng cho đến khi một mặt được sửa đổi:

   --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.

Tôi nghĩ rằng tôi sẽ cập nhật cpbí danh của mình để luôn bao gồm --reflink=autotham số ngay bây giờ
Marcos

1
Ext4 có thực sự hỗ trợ --reflink?

7
Điều này được hỗ trợ trên btrfs và OCFS2. Chỉ có thể trên các hệ thống tập tin sao chép khi ghi, mà ext4 thì không. btrfs đang thực sự định hình. Tôi thích sử dụng nó vì phản xạ và ảnh chụp nhanh, làm cho bạn bớt sợ hãi khi thực hiện các thao tác hàng loạt trên các tệp lớn.
clacke

3

Dường như với tôi rằng việc kiểm tra tên tệp trước tiên có thể tăng tốc mọi thứ. Nếu hai tệp thiếu cùng tên tệp thì trong nhiều trường hợp tôi sẽ không coi chúng là trùng lặp. Có vẻ như phương pháp nhanh nhất sẽ là so sánh, theo thứ tự:

  • tên tệp
  • kích thước
  • tổng kiểm tra md5
  • nội dung byte

Có phương pháp nào làm việc này không? Nhìn vào duff, fdupes, rmlint, fslintvv

Phương pháp sau đây được bình chọn hàng đầu trên trang linelinefu.com : Tìm các tệp trùng lặp (dựa trên kích thước trước, sau đó băm MD5)

So sánh tên tệp có thể được thêm vào như bước đầu tiên, kích thước như bước thứ hai không?

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
Tôi đã sử dụng duff, fdupesrmlint, đặc biệt khuyên độc giả nên xem xét thứ ba trong số này . Nó có một bộ tùy chọn tuyệt vời (và tài liệu). Với nó, tôi có thể tránh được rất nhiều hậu xử lý tôi cần sử dụng với các công cụ khác.
dubiousjim

3
Trong filename thực hành của tôi là ít nhất yếu tố đáng tin cậy để xem xét, và tôi đã hoàn toàn loại bỏ nó từ bất kỳ nỗ lực tôi thực hiện một de-duping. Có bao nhiêu install.shtập tin có thể được tìm thấy trên một hệ thống hoạt động? Tôi không thể đếm số lần tôi đã lưu một tệp và có xung đột tên, với một số đổi tên nhanh chóng để lưu nó. Lật mặt: không biết bao nhiêu lần tôi đã tải xuống một cái gì đó từ các nguồn khác nhau, vào những ngày khác nhau, chỉ để thấy chúng là cùng một tệp với các tên khác nhau. (Điều này cũng giết chết độ tin cậy của dấu thời gian.) 1: Kích thước, 2: Tiêu hóa, 3: Nội dung byte.
Spellweaver Gypsy

@GypsySpellweaver: (1) tùy thuộc vào trường hợp sử dụng cá nhân, bạn có đồng ý không? Trong trường hợp của tôi, tôi có nhiều khôi phục từ nhiều bản sao lưu, trong đó các tệp có cùng tên và nội dung tồn tại trong các thư mục khôi phục khác nhau. (2) bình luận của bạn dường như giả so sánh filename chỉ . Tôi đã không đề nghị loại bỏ các kiểm tra khác.
johny tại sao

2

Vì tôi không phải là fan hâm mộ của Perl, đây là phiên bản bash:

#!/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

Điều này tìm thấy tất cả các tệp có cùng một tổng kiểm tra (cho dù chúng lớn, nhỏ hoặc đã có liên kết cứng) và liên kết chúng với nhau.

Điều này có thể được tối ưu hóa rất nhiều cho các lần chạy lặp lại với các cờ tìm kiếm bổ sung (ví dụ: kích thước) và bộ đệm tệp (vì vậy bạn không phải làm lại tổng kiểm tra mỗi lần). Nếu bất cứ ai quan tâm đến phiên bản thông minh hơn, dài hơn, tôi có thể đăng nó.

LƯU Ý: Như đã đề cập trước đây, các liên kết cứng hoạt động miễn là các tệp không bao giờ cần sửa đổi hoặc được di chuyển qua các hệ thống tệp.


Làm cách nào tôi có thể thay đổi tập lệnh của mình, để thay vì liên kết cứng, nó sẽ chỉ xóa các tệp trùng lặp và sẽ thêm một mục vào tệp CSV tệp đã xóa -> Tệp lót. . ???
MR.GEWA

Chắc chắn rồi. Dòng liên kết cứng: echo ln -f "$ OLDFILE" "$ NEWFILE" Chỉ cần thay thế tệp trùng lặp bằng một liên kết cứng, vì vậy bạn có thể thay đổi nó thành $ NEWFILE thay thế.
seren

và làm thế nào trên dòng tiếp theo, viết vào một số tệp văn bản bằng cách nào đó $ OLDFILE-> NEWFILE ???
MR.GEWA

À, đúng rồi. Có, thêm một dòng sau rm, chẳng hạn như: echo "$ NEWFILE" >> /var/log/
delave_d repeatate_files.log

2
Đừng friggin phát minh lại bánh xe. Có nhiều giải pháp hoàn thiện hơn, như rdfind, hoạt động ở tốc độ gốc và chỉ cần brew install rdfindhoặc apt-get install rdfindđể được cài đặt.
oligofren

1

Tôi đã tạo một kịch bản Perl làm một cái gì đó tương tự như những gì bạn đang nói về:

http://pastebin.com/U7mFHZU7

Về cơ bản, nó chỉ đi qua một thư mục, tính toán SHA1sum của các tệp trong đó, băm nó và liên kết các kết quả khớp với nhau. Nó có ích trong nhiều, nhiều dịp.


2
Tôi hy vọng sẽ sớm được thử nghiệm điều này ... tại sao không tải nó lên CPAN ... App :: relink hoặc một cái gì đó
xenoterracide

2
@xenoterracide: vì tất cả các giải pháp tương tự và trưởng thành hơn đã tồn tại. xem các câu trả lời khác, đặc biệt là rdfind.
oligofren

1
@oligofren Tôi không nghi ngờ giải pháp tốt hơn tồn tại. Tôi đoán TMTOWTDI.
amphetamachine

1

Nếu bạn muốn thay thế các bản sao bằng Hard Links trên mac hoặc bất kỳ hệ thống dựa trên UNIX nào, bạn có thể dùng thử SmartDupe http://sourceforge.net/projects/smartdupe/ đang phát triển nó


3
Bạn có thể mở rộng về cách thức thông minh của nó không?
Stéphane Gimenez

1
Làm thế nào tôi có thể so sánh các tập tin của hai thư mục khác nhau?
Burcardo

1

Ứng dụng FSLint ( http://www.pixelbeat.org/fslint/ ) có thể tìm thấy tất cả các tệp bằng nhau trong bất kỳ thư mục nào (theo nội dung) và tạo liên kết cứng. Hãy thử một lần!

Jorge Sampaio


Nó treo quét 1TB gần như toàn bộ ổ cứng ext3, đưa toàn bộ hệ thống vào chế độ thu thập dữ liệu. Bị hủy bỏ sau 14 giờ "tìm kiếm"
Angsuman Chakraborty

1

jdupes đã được đề cập trong một bình luận nhưng xứng đáng với câu trả lời của riêng mình, vì nó có thể có sẵn trong hầu hết các bản phân phối và chạy khá nhanh (nó chỉ giải phóng 2,7 GB của phân vùng 158 GB đầy đủ 98% (ổ SSD) trong khoảng một phút):

jdupes -rL /foo/bar

0

Nếu bạn sẽ làm liên kết cứng, hãy chú ý đến quyền trên tệp đó. Thông báo, chủ sở hữu, nhóm, chế độ, thuộc tính mở rộng, thời gian và ACL (nếu bạn sử dụng) được lưu trữ trong INODE. Chỉ tên tệp là khác nhau vì điều này được lưu trữ trong cấu trúc thư mục và các điểm khác cho thuộc tính INODE. Nguyên nhân này, tất cả các tên tệp được liên kết với cùng một nút, có cùng quyền truy cập. Bạn nên ngăn chặn sửa đổi tập tin đó, bởi vì bất kỳ người dùng nào cũng có thể làm hỏng tập tin khác. Nó đơn giản. Nó là đủ, bất kỳ người dùng đặt tập tin khác trong cùng một tên. Số inode sau đó được lưu và nội dung tệp gốc bị hủy (thay thế) cho tất cả các tên liên kết cứng.

Cách tốt hơn là sự trùng lặp trên lớp hệ thống tập tin. Bạn có thể sử dụng BTRFS (rất phổ biến thời gian qua), OCFS hoặc như thế này. Nhìn vào trang: https://en.wikipedia.org/wiki/Comparison_of_file_systems , đặc biệt tại bảng Tính năng và sao chép dữ liệu cột. Bạn có thể nhấp vào nó và sắp xếp :)

Đặc biệt nhìn vào hệ thống tập tin ZFS. Cái này có sẵn dưới dạng FUSE, nhưng theo cách này thì nó rất chậm. Nếu bạn muốn hỗ trợ riêng, hãy xem trang http://zfsonlinux.org/ . Sau đó, bạn phải vá kernel và cài đặt công cụ zfs tiếp theo để quản lý. Tôi không hiểu, tại sao linux không hỗ trợ như trình điều khiển, đó là cách cho nhiều hệ điều hành / hạt nhân khác.

Hệ thống tệp hỗ trợ sao chép bằng 2 cách, sao chép tệp hoặc chặn. ZFS hỗ trợ khối. Điều này có nghĩa, cùng một nội dung lặp lại trong cùng một tệp có thể được lặp lại. Một cách khác là thời gian khi dữ liệu bị trùng lặp, điều này có thể là trực tuyến (zfs) hoặc ngoại tuyến (btrfs).

Lưu ý, sự trùng lặp tiêu tốn RAM. Đây là lý do tại sao việc ghi tệp vào khối lượng ZFS được gắn với FUSE, gây ra hiệu suất chậm đáng kể. Điều này được mô tả trong tài liệu. Nhưng bạn có thể trực tuyến thiết lập bật / tắt sự trùng lặp về âm lượng. Nếu bạn thấy bất kỳ dữ liệu nào cần được sao chép, bạn chỉ cần đặt sao chép vào, viết lại một số tệp thành bất kỳ tạm thời và cuối cùng thay thế. sau này, bạn có thể tắt sự trùng lặp và khôi phục hiệu suất đầy đủ. Tất nhiên, bạn có thể thêm vào lưu trữ bất kỳ đĩa bộ nhớ cache. Đây có thể là đĩa quay rất nhanh hoặc đĩa SSD. Tất nhiên đây có thể là đĩa rất nhỏ. Trong công việc thực tế, đây là sự thay thế cho RAM :)

Trong linux, bạn nên chăm sóc ZFS vì không phải tất cả đều hoạt động như bình thường, đặc biệt khi bạn quản lý hệ thống tập tin, tạo ảnh chụp nhanh, v.v. nhưng nếu bạn cấu hình và không thay đổi nó, tất cả đều hoạt động bình thường. Theo cách khác, bạn nên thay đổi linux thành opensolaris, nó thực sự hỗ trợ ZFS :) Điều rất hay với ZFS là, điều này hoạt động cả dưới dạng hệ thống tập tin và trình quản lý volum tương tự LVM. Bạn không cần nó khi bạn sử dụng ZFS. Xem tài liệu nếu bạn muốn biết thêm.

Lưu ý sự khác biệt giữa ZFS và BTRFS. ZFS già hơn và trưởng thành hơn, không may chỉ dưới Solaris và OpenSolaris (không may bị bóp nghẹt bởi nhà tiên tri). BTRFS trẻ hơn, nhưng thời gian qua được hỗ trợ rất tốt. Tôi khuyên bạn nên hạt nhân tươi. ZFS có sự trùng lặp trực tuyến, điều đó gây ra sự chậm viết, bởi vì tất cả được tính trực tuyến. BTRFS hỗ trợ khấu trừ ngoại tuyến. Sau đó, điều này tiết kiệm hiệu suất, nhưng khi máy chủ không có gì để làm, bạn chạy công cụ định kỳ để tạo sự trùng lặp. Và BTRFS vốn được tạo ra dưới linux. Có lẽ đây là FS tốt hơn cho bạn :)


1
Tôi thích cách tiếp cận trùng lặp ngoại tuyến (hoặc hàng loạt ) btrfs. Thảo luận tuyệt vời về các tùy chọn (bao gồm cp --reflinktùy chọn) tại đây: btrfs.wiki.kernel.org/index.php/Ded repeatation
Marcel Waldvogel

ZFS không chỉ là Solaris hay OpenSolaris. Nó thực sự được hỗ trợ trong FreeBSD. Ngoài ra, ZFS trên Linux trình điều khiển thiết bị; ZFS trên FUSE là một điều khác biệt.
KJ Seefried 29/03/18

0

Liên kết cứng có thể không phải là ý tưởng tốt nhất; nếu một người dùng thay đổi tập tin, nó sẽ ảnh hưởng đến cả hai. Tuy nhiên, xóa một liên kết cứng không xóa cả hai tập tin. Thêm vào đó, tôi không hoàn toàn chắc chắn nếu Liên kết cứng chiếm cùng một dung lượng (trên đĩa cứng chứ không phải HĐH) như nhiều bản sao của cùng một tệp; theo Windows (với Link Shell Extension), họ làm. Cấp, đó là Windows, không phải Unix ...

Giải pháp của tôi là tạo một tệp "chung" trong một thư mục ẩn và thay thế các bản sao thực tế bằng các liên kết tượng trưng ... sau đó, các liên kết tượng trưng sẽ được nhúng bằng siêu dữ liệu hoặc các luồng tệp thay thế chỉ ghi lại hai "tệp" khác nhau, như nếu một người muốn thay đổi tên tệp hoặc thêm nghệ thuật album tùy chỉnh hoặc một cái gì đó tương tự; nó thậm chí có thể hữu ích bên ngoài các ứng dụng cơ sở dữ liệu, như có nhiều phiên bản của cùng một trò chơi hoặc phần mềm được cài đặt và kiểm tra chúng một cách độc lập với những khác biệt nhỏ nhất.


0

Cách dễ nhất là sử dụng chương trình dupeGuru đặc biệt

dupeGuru Preferences Ảnh chụp màn hình

như tài liệu nói

Tùy chọn xóa

Các tùy chọn này ảnh hưởng đến cách xóa trùng lặp diễn ra. Hầu hết thời gian, bạn không cần phải kích hoạt bất kỳ trong số họ.

Liên kết các tập tin bị xóa:

Các tập tin bị xóa được thay thế bằng một liên kết đến tập tin tham khảo. Bạn có thể lựa chọn thay thế nó bằng symlink hoặc hardlink. ... một liên kết tượng trưng là một lối tắt đến đường dẫn của tệp. Nếu tệp gốc bị xóa hoặc di chuyển, liên kết bị hỏng. Một liên kết cứng là một liên kết đến chính tập tin. Liên kết đó tốt như một tập tin thực sự của người Viking. Chỉ khi tất cả các liên kết cứng đến một tệp bị xóa thì chính tệp đó sẽ bị xóa.

Trên OSX và Linux, tính năng này được hỗ trợ đầy đủ, nhưng trong Windows, nó hơi phức tạp. Windows XP không hỗ trợ, nhưng Vista và hỗ trợ. Tuy nhiên, để tính năng hoạt động, dupeGuru phải chạy với các đặc quyền quản trị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.