時々、ファイルのコピーは、ディスクスペースの巨大な廃棄物に相当し、あなたがファイルを更新する際に問題が発生します。次のコマンドは、これらのドキュメントの6を識別するために使用されます。
最近の記事では、我々は見て特定し、ファイルのハードリンクを見つける方法(すなわち、同じハードディスクおよびコンテンツ共有のinodeをポイント)。この記事では、我々は同じ見つけることになりますコンテンツを、しかし、コマンドファイルにリンクされていません。
ハードリンクは、彼らがローカルファイルシステムに保存されている複数のファイルを有効にするために有用であるが、余分なハードディスク領域を占有されることはありません。一方、時々ファイルのコピーは、ファイルを更新する際に苦痛を与える危険性があるだろうディスクスペースの巨大な廃棄物に相当します。この記事では、我々はこれらのファイルを識別するためのさまざまな方法を見ていきます。
diffコマンドは、ファイルを比較して
2つのファイルを比較することができる最も簡単な方法は、使用することですdiff
コマンドを。出力は、あなたのファイルと異なる表示されます。<
そして、>
シンボルはオーバー渡されたパラメータを表す場合(最初の<
)または第二(>
ファイルのテキストの追加の行がある場合)。この例では、内backup.html
のテキストの追加の行。
$ diff index.html backup.html
2438a2439,2441
> <pre>
> That's all there is to report.
> </pre>
复制代码
場合はdiff
、同じ2つのファイルを表す出力はありません。
$ diff home.html index.html
$
复制代码
diff
唯一の欠点は、それが唯一の2つのファイルを比較することができ、あなたがこの記事は、いくつかのコマンドでは、あなたのための複数の重複ファイルを見つけることができ、比較するファイルを指定しなければならないということです。
チェックサムを使用します
cksum
(チェックサム)チェックサムファイルを計算するコマンド。チェックサムは、長い数(例えば2,819,078,353,228,029)数学的還元にテキストコンテンツです。チェックサムは完全にユニークではありませんが、ファイルのチェックサムの異なる内容が、同じ最小限の確率ながら。
$ cksum *.html
2819078353 228029 backup.html
4073570409 227985 home.html
4073570409 227985 index.html
复制代码
上記の例では、あなたが見ると同じがデフォルトする方法を同じ二と第三のファイルを生成し確認することができます。
findコマンドを使用します
一方でfind
重複ファイルを検索するオプションはありませんコマンドと、まだ名前や種類によってファイルを検索し、実行するために使用することができますcksum
コマンドを。例えば:
$ find . -name "*.html" -exec cksum {} \;
4073570409 227985 ./home.html
2819078353 228029 ./backup.html
4073570409 227985 ./index.html
复制代码
fslintコマンドを使用します。
fslint
コマンドは、具体的に重複したファイルを見つけるために使用することができます。我々はそれを開始位置を与えたことに注意してください。それが完了するまでに時間がかかる文書、かなりの数を横断する必要がある場合。それが重複するファイルをリストされているかに注目して、そのような空のディレクトリや悪いIDのような他の問題、探し。
$ fslint .
-----------------------------------file name lint
-------------------------------Invalid utf8 names
-----------------------------------file case lint
----------------------------------DUPlicate files <==
home.html
index.html
-----------------------------------Dangling links
--------------------redundant characters in links
------------------------------------suspect links
--------------------------------Empty Directories
./.gnupg
----------------------------------Temporary Files
----------------------duplicate/conflicting Names
------------------------------------------Bad ids
-------------------------Non Stripped executables
复制代码
あなたは、あなたのシステムにインストールする必要があるかもしれませんfslint
。また、あなたのコマンド検索パスに追加する必要があるかもしれません。
$ export PATH=$PATH:/usr/share/fslint/fslint
复制代码
rdfindコマンドを使用します。
rdfind
コマンドは、重複(同じ内容)のファイルを探します。その名は「繰り返し検索」を意味し、それが元であるファイルを決定するためにファイルの日付に基づいてすることができます - あなたがコピーを削除することを選択したとき、それは新しいファイルを削除するので、これは便利です。
$ rdfind ~
Now scanning "/home/shark", found 12 files.
Now have 12 files in total.
Removed 1 files due to nonunique device and inode.
Total size is 699498 bytes or 683 KiB
Removed 9 files due to unique sizes from list.2 files left.
Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
Now eliminating candidates based on sha1 checksum:removed 0 files from list.2 files left.
It seems like you have 2 files that are not unique
Totally, 223 KiB can be reduced.
Now making results file results.txt
复制代码
あなたがすることができdryrun
、このコマンドモードを実行する(つまり、ちょうど別の変更報告がなされ得ます)。
$ rdfind -dryrun true ~
(DRYRUN MODE) Now scanning "/home/shark", found 12 files.
(DRYRUN MODE) Now have 12 files in total.
(DRYRUN MODE) Removed 1 files due to nonunique device and inode.
(DRYRUN MODE) Total size is 699352 bytes or 683 KiB
Removed 9 files due to unique sizes from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on sha1 checksum:removed 0 files from list.2 files left.
(DRYRUN MODE) It seems like you have 2 files that are not unique
(DRYRUN MODE) Totally, 223 KiB can be reduced.
(DRYRUN MODE) Now making results file results.txt
复制代码
rdfind
コマンドも同様の(空のドキュメントを無視提供-ignoreempty
)とシンボリックリンクを(続く-followsymlinks
)関数を。説明についてはmanページをチェックしてください。
-ignoreempty ignore empty files
-minsize ignore files smaller than speficied size
-followsymlinks follow symbolic links
-removeidentinode remove files referring to identical inode
-checksum identify checksum type to be used
-deterministic determiness how to sort files
-makesymlinks turn duplicate files into symbolic links
-makehardlinks replace duplicate files with hard links
-makeresultsfile create a results file in the current directory
-outputname provide name for results file
-deleteduplicates delete/unlink duplicate files
-sleep set sleep time between reading files (milliseconds)
-n, -dryrun display what would have been done, but don't do it
复制代码
注rdfind
コマンドが提供-deleteduplicates true
コピーの設定を削除するオプションを。私は、コマンドの構文上のこの小さな問題はあなたを困らないことを願っています。;-)
$ rdfind -deleteduplicates true .
...
Deleted 1 files. <==
复制代码
あなたはおそらくあなたのシステムにインストールする必要がありますrdfind
コマンド。それはそれは良いアイデアかもしれない使用方法に精通してテストします。
コマンドfdupesを使用します
fdupes
コマンドは、重複したファイルを特定することが容易になります。また、便利なオプションの数を提供します-例えば、反復に-r
。この場合、それは一緒にグループ化されたファイルを複製したいと思います:
$ fdupes ~
/home/shs/UPGRADE
/home/shs/mytwin
/home/shs/lp.txt
/home/shs/lp.man
/home/shs/penguin.png
/home/shs/penguin0.png
/home/shs/hideme.png
复制代码
これは、多くの重複したファイルは、(ユーザーが重要であることを繰り返し注意使用例です.bashrc
と.profile
ファイル)、削除すべきではありませんが。
# fdupes -r /home
/home/shark/home.html
/home/shark/index.html
/home/dory/.bashrc
/home/eel/.bashrc
/home/nemo/.profile
/home/dory/.profile
/home/shark/.profile
/home/nemo/tryme
/home/shs/tryme
/home/shs/arrow.png
/home/shs/PNGs/arrow.png
/home/shs/11/files_11.zip
/home/shs/ERIC/file_11.zip
/home/shs/penguin0.jpg
/home/shs/PNGs/penguin.jpg
/home/shs/PNGs/penguin0.jpg
/home/shs/Sandra_rotated.png
/home/shs/PNGs/Sandra_rotated.png
复制代码
fdupe
多くのオプションが次のようにコマンドがある記載されています。使用するfdupes -h
コマンドをや詳細については、manページをお読みください。
-r --recurse recurse
-R --recurse: recurse through specified directories
-s --symlinks follow symlinked directories
-H --hardlinks treat hard links as duplicates
-n --noempty ignore empty files
-f --omitfirst omit the first file in each set of matches
-A --nohidden ignore hidden files
-1 --sameline list matches on a single line
-S --size show size of duplicate files
-m --summarize summarize duplicate files information
-q --quiet hide progress indicator
-d --delete prompt user for files to preserve
-N --noprompt when used with --delete, preserve the first file in set
-I --immediate delete duplicates as they are encountered
-p --permissions don't soncider files with different owner/group or
permission bits as duplicates
-o --order=WORD order files according to specification
-i --reverse reverse order while sorting
-v --version display fdupes version
-h --help displays help
复制代码
fdupes
あなたはその多くのオプションのコマンドに慣れるためにいくつかの時間のためにインストールして使用する必要があるかもしれませんもう一つのコマンド。
概要
Linuxシステムは、位置決めを提供し、(潜在的に)良いツールの一連の重複したファイルを削除し、あなたが検索領域を指定することができますし、あなたが発見したときに重複したファイルを処理するためのときのオプションすることができます。
経由:www.networkworld.com/article/339...
著者:サンドラヘンリー・ストッカーのトピック:lujun9972の翻訳:tomjlw校正:WXY
ます。https://juejin.im/post/5cfe74985188254ee433c032で再現