tazlito rev 69

Link duplicate links
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu May 22 15:41:01 2008 +0000 (2008-05-22)
parents 68bbfaa51808
children 504b8e5ba288
files tazlito
line diff
     1.1 --- a/tazlito	Thu May 22 14:48:49 2008 +0000
     1.2 +++ b/tazlito	Thu May 22 15:41:01 2008 +0000
     1.3 @@ -255,26 +255,36 @@
     1.4  	echo ""
     1.5  
     1.6          # Link duplicate files
     1.7 -        find . -type f -size +0c -exec stat -c '%s %a %u %g %Y %i %n' {} \; | \
     1.8 -           sort | ( save=0; old_owner=""; old_group=""; old_size=""
     1.9 -           old_time=""; old_perm=""; old_inode=""; old_file=""
    1.10 -           while read size perm owner group time inode file; do
    1.11 -               if [ "$size"  =  "$old_size"  -a "$perm" = "$old_perm"   -a \
    1.12 -                    "$owner" =  "$old_owner" -a "$group" = "$old_group" -a \
    1.13 -	            "$inode" != "$old_inode" ]; then
    1.14 +        find . -type f -size +0c -exec stat -c '%s-%a-%u-%g %i %h %n' {} \; | \
    1.15 +           sort | ( save=0; old_attr=""; old_inode=""; old_link=""; old_file=""
    1.16 +           while read attr inode link file; do
    1.17 +               if [ "$attr" = "$old_attr" -a "$inode" != "$old_inode" ]; then
    1.18                     if cmp "$file" "$old_file" >/dev/null; then
    1.19                         rm -f "$file"
    1.20                         ln "$old_file" "$file"
    1.21 -                       inode="$old_inode"
    1.22 -                       save="$(expr $save + $size)"
    1.23 +                       [ "$link" = "1" ] && save="$(expr $save + ${attr%%-*})"
    1.24                     fi
    1.25                 fi
    1.26 -               old_size="$size"  ; old_perm="$perm"; old_owner="$owner"
    1.27 -               old_group="$group"; old_time="$time"; old_inode="$inode"
    1.28 -               old_file="$file"
    1.29 +               old_attr="$attr" ; old_inode="$inode" ; old_file="$file"
    1.30             done
    1.31             echo "$save bytes saved in duplicate files."
    1.32          )
    1.33 +
    1.34 +        # Link duplicate links
    1.35 +        find . -type l -size +0c -exec stat -c '%s-%a-%u-%g %i %h %n' {} \; | \
    1.36 +           sort | ( save=0; old_attr=""; old_inode=""; old_link=""; old_file=""
    1.37 +           while read attr inode link file; do
    1.38 +               if [ "$attr" = "$old_attr" -a "$inode" != "$old_inode" ]; then
    1.39 +                   if [ "$(readlink $file)" = "$(readlink $old_file)" ]; then
    1.40 +                       rm -f "$file"
    1.41 +                       ln "$old_file" "$file"
    1.42 +                       [ "$link" = "1" ] && save="$(expr $save + ${attr%%-*})"
    1.43 +                   fi
    1.44 +               fi
    1.45 +               old_attr="$attr" ; old_inode="$inode" ; old_file="$file"
    1.46 +           done
    1.47 +           echo "$save bytes saved in duplicate links."
    1.48 +        )
    1.49  	
    1.50  	# Use lzma if installed
    1.51  	if [ "$COMPRESSION" = "none" ]; then