-
small script to re-hardlink *ALL* equal files
Have fun, this is not well tested, it will prolly work fine with readonly CD-Images but certainly have problems with hd-installs since there are equal files which *should not* be hardlinked! Take care.
One could probably add filters to the 'find' command to exclude such files. Since I did this as fast hack for CD remastering so i have no need for better selections. I'm working on a much more advanced file-unifier for the vserver project. When that is finished i will announce it here too (ETA: Mid Feburary, i'm in hollyday next time)
Results (compressed image):
691M Jan 2 13:49 KNOPPIX.new
664M Jan 2 17:25 KNOPPIX.new.unified
PS: Klaus ... if you use this for the main Knoppix, the free space you get is dedicated for a recent version of 'distcc', thanks.
Code:
#!/bin/sh
find $1 -type f -exec md5sum {} \; |\
sort +0 |\
{
read sum file;
while [ "$sum" != "" ]; do
while read sum2 file2 && [ $sum = $sum2 ]; do
ln -f "$file" "$file2"
done
sum=$sum2
file="$file2"
done
}
-
Junior Member
registered user
Re: small script to re-hardlink *ALL* equal files
![Quote](images/misc/quote_icon.png)
Originally Posted by
cehteh
Have fun, this is not well tested, it will prolly work fine with readonly CD-Images but certainly have problems with hd-installs since there are equal files which *should not* be hardlinked! Take care.
One could probably add filters to the 'find' command to exclude such files. Since I did this as fast hack for CD remastering so i have no need for better selections. I'm working on a much more advanced file-unifier for the vserver project. When that is finished i will announce it here too (ETA: Mid Feburary, i'm in hollyday next time)
Results (compressed image):
691M Jan 2 13:49 KNOPPIX.new
664M Jan 2 17:25 KNOPPIX.new.unified
PS: Klaus ... if you use this for the main Knoppix, the free space you get is dedicated for a recent version of 'distcc', thanks.
Code:
#!/bin/sh
find $1 -type f -exec md5sum {} \; |\
sort +0 |\
{
read sum file;
while [ "$sum" != "" ]; do
while read sum2 file2 && [ $sum = $sum2 ]; do
ln -f "$file" "$file2"
done
sum=$sum2
file="$file2"
done
}
This looks a little dangerous. Do you realize that this makes all empty (0 bytes) files hardlinks to each other, even locks and logfiles? Also, some files with the same checksum may NOT be actually the same file or have desirably the same contents.
I use a harddisk-installed Debian system that should have all hardlinks intact. If you copied your system from CD, this may not always be the case. You should use rsync -Ha for copying to preserve the hardlinks.
-KK
-
sure .. i know it is a fast hack ... the next tool (vserver unifier) will be much better. Resolving *All* problems u showed.
>This looks a little dangerous. Do you realize that this makes all empty (0 bytes) files hardlinks to each other,
use '! -size 0' within the find
> locks and logfiles
there are no locks when mastering,
logs are not important when kept only in ram ..
! -path '*/var/log*' will fix it anyways
>Also, some files with the same checksum may NOT be actually the same file or have desirably the same contents.
with md5sum the chance of doubletes are microscopic (even less), but you are right .. for the vserver unifier i dont use checksuming
remember this is meant as fast hack and to show a 'general' concept for reducing the diskusage of knoppix.
cheers :)
-
last update
- compares files
- only hardlink files which are not hardlinked yet
- permission and uid/gid must be equal
- size 0 files are excluded
- can be called with multiple arguments which are used directly by find
- writes a script which can be used to undo all hardlinks
i will not do any more updates on this and focus on the vserver unifier now (it will get a small control language and tons of more sophisticated options)
example usage:
./knoppix.unify Path/To/KNOPPIX ! -path "*/var/log/*" >undo_hardlinks.sh
File knoppix.unify:
Code:
#!/bin/bash
find "$@" -type f ! -size 0 -exec md5sum {} \; |\
sort +0 |\
{
read sum file;
while [ "$sum" != "" ]; do
while read sum2 file2 &&\
[ $sum = $sum2 ] &&\
[ $(cut -d " " -f 1 <(ls -i "$file")) != $(cut -d " " -f 1 <(ls -i "$file2")) ] &&\
[ $(cut -c -32 <(ls -ln "$file")) = $(cut -c -32 <(ls -ln "$file2")) ] &&\
cmp "$file" "$file2";
do
ln -f "$file" "$file2" &&
echo "rm -f \"$file2\"; cp -pf \"$file\" \"$file2\""
done
sum=$sum2
file="$file2"
done
}
Similar Threads
-
By fizgig in forum Customising & Remastering
Replies: 1
Last Post: 09-30-2004, 03:35 AM
-
By brazilian in forum General Support
Replies: 2
Last Post: 04-09-2004, 06:10 PM
-
By spydie in forum General Support
Replies: 14
Last Post: 01-31-2004, 07:55 PM
-
By Dave_Bechtel in forum General Support
Replies: 0
Last Post: 06-04-2003, 11:54 AM
-
By .-=Ronin=-. in forum General Support
Replies: 2
Last Post: 04-24-2003, 07:45 PM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
![Cisco WS-C2960X-48FPD-L 48 V07 POE+ GE+2 10G SFP+, LAN BASE 740W w/ C2960X-Stack picture](/store/img/g/cqoAAOSwtYVmS7LQ/s-l225/Cisco-WS-C2960X-48FPD-L-48-V07-POE-GE-2-10G-SFP-LA.jpg)
Cisco WS-C2960X-48FPD-L 48 V07 POE+ GE+2 10G SFP+, LAN BASE 740W w/ C2960X-Stack
$110.00
![CISCO DS-SFP-FC64G-SW picture](/store/img/g/J-4AAOSwNptmfzD-/s-l225/CISCO-DS-SFP-FC64G-SW.jpg)
CISCO DS-SFP-FC64G-SW
$210.00
![CISCO MERAKI MS120-24P-HW 24-PORT GIGABIT CLOUD MANAGED PoE SWITCH - UNCLAIMED picture](/store/img/g/uj4AAOSw8hhmYQRm/s-l225/CISCO-MERAKI-MS120-24P-HW-24-PORT-GIGABIT-CLOUD-MA.jpg)
CISCO MERAKI MS120-24P-HW 24-PORT GIGABIT CLOUD MANAGED PoE SWITCH - UNCLAIMED
$103.74
![Cisco Catalyst WS-C2960X-24PD-L GigE PoE 370W, 2 x 10G SFP+, LAN Base H22 picture](/store/img/g/AiwAAOSwZI9mTOhg/s-l225/Cisco-Catalyst-WS-C2960X-24PD-L-GigE-PoE-370W-2-x-.jpg)
Cisco Catalyst WS-C2960X-24PD-L GigE PoE 370W, 2 x 10G SFP+, LAN Base H22
$94.00
![Cisco C3KX-NM-10G 3K-X Network Module for 3750-X 3560-X picture](/store/img/g/Ca4AAOSw-iFmfdiX/s-l225/Cisco-C3KX-NM-10G-3K-X-Network-Module-for-3750-X-3.jpg)
Cisco C3KX-NM-10G 3K-X Network Module for 3750-X 3560-X
$23.99
![Cisco Nexus N3K-C3048TP-1GE 48P 1GbE 4P SFP+ Switch N3K-C3048TP-1GE picture](/store/img/g/ZDoAAOSwvPdmBd1b/s-l225/Cisco-Nexus-N3K-C3048TP-1GE-48P-1GbE-4P-SFP-Switch.jpg)
Cisco Nexus N3K-C3048TP-1GE 48P 1GbE 4P SFP+ Switch N3K-C3048TP-1GE
$89.00
![🔥🔥🔥 CISCO SFP-10G-SR V03 10-2415-03 850nm 10GBASE-SR SFP+ Multi Module 🔥🔥🔥 picture](/store/img/g/KTkAAOSwcmBisISE/s-l225/-CISCO-SFP-10G-SR-V03-10-2415-03-850nm-10GBASE-SR-.jpg)
🔥🔥🔥 CISCO SFP-10G-SR V03 10-2415-03 850nm 10GBASE-SR SFP+ Multi Module 🔥🔥🔥
$6.80
![Cisco C3850-NM-2-10G 2 Port Network Exp.Module for 3850 picture](/store/img/g/yEAAAOSwxVReIhma/s-l225/Cisco-C3850-NM-2-10G-2-Port-Network-Exp-Module-for.jpg)
Cisco C3850-NM-2-10G 2 Port Network Exp.Module for 3850
$30.99
![Cisco WS-C3850-12X48U-S 48x (12x MultiGB) UPoE RJ-45 1x Mod Slot Switch, Tested picture](/store/img/g/vEYAAOSwdN5mTjLr/s-l225/Cisco-WS-C3850-12X48U-S-48x-12x-MultiGB-UPoE-RJ-45.jpg)
Cisco WS-C3850-12X48U-S 48x (12x MultiGB) UPoE RJ-45 1x Mod Slot Switch, Tested
$259.00
![Cisco WS-C3850-48P-L 48-Port Gigabit 3850 PoE Switch w/ 715W+ Lifetime Warranty picture](/store/img/g/8yoAAOSwynJmUKoY/s-l225/Cisco-WS-C3850-48P-L-48-Port-Gigabit-3850-PoE-Swit.jpg)
Cisco WS-C3850-48P-L 48-Port Gigabit 3850 PoE Switch w/ 715W+ Lifetime Warranty
$125.00