summaryrefslogtreecommitdiff
path: root/sysutils/same/files/same.cat1
blob: de015f345e15bb7182c84338d3ad253ee58ea22e (plain)
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