The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Скрипт для конвертации архива gz в lzma"
Отправлено auto_tips, 27-Фев-22 18:44 
Скрипт для преобразования архива .gz в .lzma с сохранением времени изменения/создания файла и прав доступа, а также с минимальным влиянием на производительность.
Для переименования группы файлов можно использовать конструкцию вида:

   find . -name "*.gz" -print0 | xargs -0 -n 1 echo ~/bin/gz2lzma.sh | batch

gz2lzma.sh:

#!/bin/sh
#
# CopyLeft (L) john_erohin, 2022
#
# gz2lzma.sh: convert .gz to .lzma with same mtime, ctime and access rights
#
# in: $1 = file name with or without ".gz" suffix
# out: file "$1.lzma" and removed "$1.gz" if conversion is ok
#
# warining: if $1.lzma exist, it will be silently overwritten
#
# use someth like
# find . -name "*.gz" -print0 | xargs -0 -n 1 echo ~/bin/gz2lzma.sh | batch
# for mass background conversion
#
F=$1
F=`echo $F | sed -e s:\.gz\$::g`

if [ -f $F.gz ] ; then
/usr/bin/eatmydata -- \
  /usr/bin/nice -19 \
   /usr/bin/chrt --idle 0 \
    /usr/bin/ionice -c 3 \
      gzip -t $F.gz > /dev/null 2>&1
  RC=$?
  if [ $RC -ge 1 ]; then
    echo error $RC in $F.gz : integrity test failed
    exit $RC
  fi
  CTIME=`stat -c %w $F.gz`
  MTIME=`stat -c %y $F.gz`
  CHMOD=`stat -c %a $F.gz`
  TF=`mktemp`
  T=`basename $TF`
  rm $TF
  L=$F.$T.lzma
  touch $L
  chmod $CHMOD $L
  gzip -cdk $F.gz | \
    /usr/bin/eatmydata -- \
     /usr/bin/nice -19 \
      /usr/bin/chrt --idle 0 \
       /usr/bin/ionice -c 3 \
         /usr/bin/lzma -z9c > $L
  RC=$?
  if [ $RC -eq 0 ]; then
    touch --date="$CTIME" $L
    touch -m --date="$MTIME" $L
    mv $L $F.lzma
    rm $F.gz
  else
    echo lzma run-time error $RC processing $L
    exit $RC
  fi
else
  echo error: no input file $F or $F.gz
  exit 1
fi


URL:
Обсуждается: http://www.opennet.ru/tips/info/3202.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру