共通したファイルをハードリンクにするスクリプト

概要

  • --path(デフォルト)だと指定されたディレクトリからのパスが同じでかつファイルデータが同じであればハードリンク化する。
  • --hashだと完全にファイルデータのみで比較して、同じデータであればハードリンク化する。
    • 全部の同じデータがハードリンク化されるので--pathより小容量になる


pdumpfsみたいなディレクトリ構成のものをドライブを越えて
コピーするとハードリンクでなくなるのでそれを元に戻す時に使える。
後は単純に重複したファイル同士をハードリンク化して
容量をダイエットしたい時とか。


ただ注意としては、特に--hashでやると
意図しないファイルまでハードリンク化されて
AだけいじったのにBってファイルまで変更されてるみたいなことが起きるかも。
純粋にバックアップ用途で、ファイルはいじらないというのであれば--hashでもいいかもしれない。

help

NAME
weavel - unlink and link duplicated files

SYNOPSIS
# Let duplicated files (in same head path) have same inodes.
$ weavel --path dir1/ dir2/
# Let duplicated files (in same file data) have same inodes.
$ weavel --hash dir1/ dir2/ dir3/

OPTIONS
-h, --help
Show this help.

-l, --follow-symlinks
Follow symbolic links.

-v, --verbose
Show verbose output.

--path
Find two same files by two directories' paths. This is default. See
--hash for another strategy to find same files.

--hash
Find two or more same files by file data with MD5.

AUTHOR
tyru