1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
SAME(1) NetBSD General Commands Manual SAME(1)
NNAAMMEE
ssaammee -- link identical files to save disk space
SSYYNNOOPPSSIISS
ssaammee [--HHVVccddhhnnssttuuvvzz]
DDEESSCCRRIIPPTTIIOONN
ssaammee takes a list of files (e.g. the output of find . -type f) on stdin.
Each of the files is compared against each of the others. Whenever two
files are found that match exactly, the two files are linked (soft or
hard) together.
GGooaall
The goal of this program is to conserve disk space when you have several
different trees of large projects on your disk. By creating hardlinks or
softlinks between the files that are the same, you can save lots of disk
space. For example, two different versions of the Linux kernel only dif-
fer in a small number of files. By running this program you only need to
store the contents of those files once. This is especially useful if you
have different versions of complete trees lying around.
IImmpplleemmeennttaattiioonn
The filesize of every file is used as an indication of wether two files
can be the same. Whenever the filesizes match, the hashes of these two
files are compared. Whenever these match, the file contents are compared.
For every matching pair one of the two files is replaced by a hard link
to the other file. With the -s option a softlink is used.
To allow you to do this incrementally, the "rm" is done on the file with
the least links. This allows you to "merge" a new tree with several trees
that have already been processed. The new tree has link count 1, while
the old tree has a higher link count for those files that are likely can-
didates for linkage.
The current implementation keeps the "first" incantation of a file, and
replaces further occurrances of the same file. This is significant when
using softlinks.
OOppttiioonnss
--HH _n, ----hhaasshhssttaarrtt _n
Start at hash value _n instead of 0.
--VV, ----vveerrssiioonn
Print the version of the program and exit.
--cc _f_i_l_e, ----ccaacchhee _f_i_l_e
Keep a cache between runs in file _f_i_l_e.
--dd, ----ddeebbuugg
Output some debug messages.
--hh, ----hheellpp
Output this page and exit successfully.
--nn, ----ddrryyrruunn
Only simulate.
--ss, ----ssooffttlliinnkkss
Create soft links instead of hard links.
--uu, ----uusseerr
Don't relink files owned by another user.
--vv, ----vveerrbboossee
Output verbose messages.
--zz, ----nnuullllffiilleess
Link empty files, too. By default, only non-empty files are
linked.
EEXXIITT SSTTAATTUUSS
Zero on success, non-zero on failure.
EEXXAAMMPPLLEESS
find . -type f -print | same
SSEEEE AALLSSOO
find(1)
AAUUTTHHOORRSS
Roger E. Wolff <R.E.Wolff@BitWizard.nl>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Roland Illig <roland.illig@gmx.de>.
CCAAVVEEAATTSS
·· If your editor does not move the original aside before writing a new
copy, you will change the file in ALL incarnations when editing a
file. Patch works just fine: it moves the original aside before cre-
ating a new copy. I'm confident that I could learn Emacs to do it
this way too. I'm too lazy to figure it out, so if you happen to
know an easy way how to do this, please Email me at
<R.E.Wolff@BitWizard.nl>.
·· There is a 1024 (BUFSIZE) character limit to pathnames when using
symlinks.
NetBSD 4.0 July 14, 2004 NetBSD 4.0
|