1. bash / Говнокод #5387

    −136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    #!/bin/bash
    
    ys="y"
    ss=0
    for fl in `find $1`
    do
    echo -n "Do you want archive file $fl?(y/n)"
    read ck
    if [ "$ck"=="$ys" ]; then
    tar -cf $fl.tar $fl
    ls -la $fl
    ls -la $fl.tar
    os=`ls -la $fl | gawk '{ print $5 }'`
    ts=`ls -la $fl.tar | gawk '{ print $5 }'`
    let "ds=ts-os"
    let "ss=ss+ds"
    echo "ss $ss ds  $ds"
    fi
    
    done

    Архивирует рекурсивно все файлы и расчитывает разницу между архивом и оригиналом.

    Запостил: AliceGoth, 25 Января 2011

    Комментарии (4) RSS

    • >>ys="y"
      ))))))))
      Ответить
    • у нас подобный скрипт бегал много лет назад.

      все слетело весьма спектакулярно, когда юзвери (по ошибке, не преднамерено) в имени файла на конце `*` поствили.
      Ответить
    • А почему без сжатия?

      И вообще, что за бред? Оно архивирует и директории и файлы, судя по тому, как "find" вызывается. Тогда зачем смотреть размер директории с помощью "ls"? (хотя и без этого использовать "ls" немного убого в таких целях). А если архивируется одинокий файл, то собственно зачем его архивировать в tar, да ещё и без сжатия?
      Ответить
    • Правильно так было бы find ~ -regex '.*[^gz]' -exec gzip '{}' ';'
      Ответить

    Добавить комментарий